一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F429的USB工程CAN通訊不正常經(jīng)驗(yàn)分享

汽車(chē)玩家 ? 來(lái)源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2020-04-04 17:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近某項(xiàng)目需要用到USBCAN

STM32F429的USB工程CAN通訊不正常經(jīng)驗(yàn)分享

拿到這樣的需求,我們當(dāng)然是先得保證通訊正常。于是我找了一個(gè)USB例程與一個(gè)CAN例程,分別調(diào)試驗(yàn)證。

經(jīng)過(guò)幾番折騰已經(jīng)保證了USB與上位機(jī)能正常通訊了,也能保證了CAN的正常收發(fā)(拿了兩塊開(kāi)發(fā)板做驗(yàn)證)。

兩頭都沒(méi)有問(wèn)題了,再加上一些數(shù)據(jù)處理就差不多完成了。USB與CAN我都是第一次用,沒(méi)想到那么順利,美滋滋,正準(zhǔn)備放松的時(shí)候,問(wèn)題就來(lái)了。這是一個(gè)整體的東西,最終都要把這兩部分集合起來(lái)吧。

我把CAN工程里關(guān)于CAN的部分移到USB工程里,這時(shí)候CAN竟然用不了了。這時(shí)候我就開(kāi)始在懷疑自己是不是手賤誤刪了哪里了,于是重新來(lái)一遍,發(fā)現(xiàn)還是不行。

查了代碼很久也沒(méi)找出什么錯(cuò)誤了,于是決定先不找錯(cuò)誤了,進(jìn)度要緊,這時(shí)候覺(jué)得應(yīng)該是工程哪里有問(wèn)題了,先想其它辦法避過(guò)這個(gè)問(wèn)題。

于是乎我就換著來(lái),我把USB的工程里關(guān)于USB的部分移到CAN工程里。大家猜一猜發(fā)生了什么?USB竟然打都打不開(kāi)!要炸了。。但是這時(shí)候已經(jīng)很明確肯定不是移植問(wèn)題了。CAN部分首先想到了波特率是不是對(duì)不上了,USB部分首先想到USB的時(shí)鐘是從哪來(lái)的,之前沒(méi)用過(guò)也沒(méi)仔細(xì)看。帶著這兩個(gè)問(wèn)題去查看了參考手冊(cè)與代碼,果然,STM32F429的USB的時(shí)鐘還真有點(diǎn)特殊(不知道其它芯片是不是也是這樣),其來(lái)自于PLL輸出,而不是我們熟知的APB1、APB2:

STM32F429的USB工程CAN通訊不正常經(jīng)驗(yàn)分享

從時(shí)鐘樹(shù)中我們可以看出:(1)的輸出是系統(tǒng)時(shí)鐘,(2)的輸出是USB時(shí)鐘。相關(guān)公式:

STM32F429的USB工程CAN通訊不正常經(jīng)驗(yàn)分享

當(dāng)然(2)的輸出不僅僅是給USB提供時(shí)鐘,還給RNG與SDIO提供時(shí)鐘:

STM32F429的USB工程CAN通訊不正常經(jīng)驗(yàn)分享

這一部分對(duì)應(yīng)的代碼在system_stm32f4xx.c中。下面看看USB工程、CAN工程中該文件的差別:

STM32F429的USB工程CAN通訊不正常經(jīng)驗(yàn)分享

STM32F429的USB工程CAN通訊不正常經(jīng)驗(yàn)分享

可見(jiàn),問(wèn)題找出來(lái)了。在USB工程中,CAN通訊不正常是因?yàn)橄到y(tǒng)時(shí)鐘降為168MHz,導(dǎo)致APB1時(shí)鐘變?yōu)?2MHz,而代碼中是用APB1=45MHz來(lái)計(jì)算CAN的波特率的,所以導(dǎo)致波特率對(duì)應(yīng)不上導(dǎo)致CAN通訊錯(cuò)誤。

在CAN工程中,系統(tǒng)時(shí)鐘為180MHz,USB OTG FS時(shí)鐘變?yōu)?1MHz,超過(guò)了正常的48MHz,導(dǎo)致USB不能正常工作。

所以,每當(dāng)用到USB,都得單獨(dú)配置PLLCLK = 168MHz了,這樣的話(huà)其他外設(shè)可能得改變?cè)械呐渲?,比如這里的CAN就得用APB1=42MHz來(lái)計(jì)算波特率了,否則就會(huì)出錯(cuò)。這很不方便。。

正如野火火哥說(shuō)的,這是ST的一個(gè)奇葩設(shè)計(jì)。

STM32F429的USB工程CAN通訊不正常經(jīng)驗(yàn)分享

所以,大家以后再使用USB的時(shí)候當(dāng)心這個(gè)陷阱!

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8184

    瀏覽量

    272879
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2920

    瀏覽量

    467791
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    364876
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    求助,求分享STM32F429用IAR做的外部SPIFLASH下載算法例程

    你好,請(qǐng)問(wèn)可不可以提供一下STM32F429用IAR做的外部SPIFLASH(例如W25Q128)下載算法例程,現(xiàn)在我的下載算法是能下載到外部FLASH但是不能跳到main函數(shù),麻煩指教一下,謝謝!
    發(fā)表于 03-11 07:40

    使用STM32的SPI主機(jī)通訊需要喚醒嗎?

    在使用STM32生成的工程里面,使用SPI作為主機(jī)模式,在與從機(jī)通訊的時(shí)候,第一次發(fā)送字節(jié)之前,需要發(fā)送一個(gè)空字節(jié),SPI通訊正常,要不S
    發(fā)表于 03-10 08:22

    變頻器輸出波形不正常原因及解決方法

    ? ? ? 變頻器作為現(xiàn)代工業(yè)控制領(lǐng)域的核心設(shè)備之一,其穩(wěn)定性和可靠性直接關(guān)系到生產(chǎn)線的正常運(yùn)行和設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,變頻器輸出波形不正常的問(wèn)題時(shí)有發(fā)生,這不僅影響了設(shè)備的性能,還可
    的頭像 發(fā)表于 02-06 15:48 ?803次閱讀
    變頻器輸出波形<b class='flag-5'>不正常</b>原因及解決方法

    使用STM32F429來(lái)讀寫(xiě),讀出來(lái)確是不固定的一個(gè)值,為什么?

    理解對(duì)不對(duì)不? 二、現(xiàn)在使用STM32F429來(lái)讀寫(xiě),短接MOSI和MISO讀寫(xiě)值一致。實(shí)際寫(xiě)入ADS1256寄存器status值0x06,但讀出來(lái)確是不固定的一個(gè)值,通過(guò)提高SPI速率到20M,發(fā)現(xiàn)
    發(fā)表于 12-30 08:11

    STM32模擬eeprom只有起始地址0x8001000正常其他地址都會(huì)造成單片機(jī)運(yùn)行不正常怎么回事

    STM32F103C8T6模擬eeprom只有起始地址0x8001000正常其他地址都會(huì)造成單片機(jī)運(yùn)行不正常怎么回事
    發(fā)表于 12-29 23:05

    伺服電機(jī)振動(dòng)不正常原因和維修及案例分析

    ? ? ? 伺服電機(jī)作為自動(dòng)化系統(tǒng)中的關(guān)鍵組件,其穩(wěn)定運(yùn)行對(duì)于整個(gè)生產(chǎn)線的效率和穩(wěn)定性至關(guān)重要。然而,伺服電機(jī)在運(yùn)行過(guò)程中可能會(huì)遇到振動(dòng)不正常的問(wèn)題,這不僅影響電機(jī)的性能,還可能對(duì)機(jī)械系統(tǒng)造成損害
    的頭像 發(fā)表于 12-18 09:22 ?852次閱讀
    伺服電機(jī)振動(dòng)<b class='flag-5'>不正常</b>原因和維修及案例分析

    TLV320AIC3106-Q1通過(guò)什么接口與STM32F429進(jìn)行硬件連接?

    如題,TLV320AIC3106-Q1通過(guò)什么接口與STM32F429進(jìn)行硬件連接
    發(fā)表于 11-04 06:03

    TLV320AIC3100與STM32的I2C通信不正常是怎么回事?

    ,只能知道讀回來(lái)的值和寫(xiě)入的不同,但是沒(méi)法知道為何通信不正常,請(qǐng)問(wèn)有沒(méi)有其他的驗(yàn)證I2C通信的方法? 2、有沒(méi)有關(guān)于TLV320AIC3100在STM32的驅(qū)動(dòng)的源碼,可以作為設(shè)計(jì)參考的?
    發(fā)表于 10-23 07:40

    為什么AIC23剛上電時(shí),工作不正常?

    工作在USB模式)都正常,只是聲音不正常,但是經(jīng)過(guò)上面的觸碰后,就可以實(shí)現(xiàn)轉(zhuǎn)為正常狀態(tài)。 請(qǐng)問(wèn)各位,這兩個(gè)信號(hào)有什么關(guān)系?為啥會(huì)出現(xiàn)這種情況?如何解決? 先謝謝了。
    發(fā)表于 10-21 07:50

    使用PCM1860的過(guò)程中,發(fā)現(xiàn)PCM1860的DOUT輸出不正常,為什么?

    ,AVDD為3.3V, 2.上電一段時(shí)間后ADC才會(huì)輸出不正常; 3.PCM1860的SCKI(PCM1860的PIN15)有STM32F407提供,是否一定需要3.3VPP。07~0.8vpp的SCKI芯片是否可以工作。
    發(fā)表于 09-29 07:21

    OPA2277UA單電源供電為什么不正常?

    電源電壓5V, 為什么V-輸入電壓和輸出電壓Vo都不正常,換了LM358反而接近正常電壓。在線求高人指點(diǎn)
    發(fā)表于 08-27 08:19

    ADS1675采樣不正常是哪些原因引起的?

    ADS1675采樣率在125K,250K,500K,1M 的時(shí)候采樣正常,2M,4M的采樣不正常。下面是采樣設(shè)置,請(qǐng)問(wèn)還需要設(shè)置哪里。測(cè)試數(shù)據(jù)如附件
    發(fā)表于 08-09 08:23

    STM32F429芯片的NRST 引腳低電平(外部復(fù)位)的允許時(shí)間長(zhǎng)度是?多少ms呢?

    STM32F429芯片的NRST 引腳低電平(外部復(fù)位),從0V升高到1.78V,實(shí)現(xiàn)硬件復(fù)位,允許持續(xù)的時(shí)間是?官網(wǎng)資料沒(méi)查詢(xún)出來(lái),網(wǎng)上也查詢(xún)不到呢
    發(fā)表于 08-02 10:08

    LOG114 VLogout輸出不正常的原因?

    你好,這是我的電路圖,目前的問(wèn)題是VLogout的輸出不正常,不服從VLogout=0.375*log(I1/I2)+2.5V。 我之前使用log114芯片的時(shí)候,背部的exposed
    發(fā)表于 08-02 08:02

    LM393比較電路不正常的原因?

    LM393比較電路不正常
    發(fā)表于 07-29 07:15