99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

最近某項目需要用到USBCAN

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

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

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

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

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

查了代碼很久也沒找出什么錯誤了,于是決定先不找錯誤了,進度要緊,這時候覺得應該是工程哪里有問題了,先想其它辦法避過這個問題。

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

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

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

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

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

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

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

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

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

可見,問題找出來了。在USB工程中,CAN通訊不正常是因為系統(tǒng)時鐘降為168MHz,導致APB1時鐘變?yōu)?2MHz,而代碼中是用APB1=45MHz來計算CAN的波特率的,所以導致波特率對應不上導致CAN通訊錯誤。

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

所以,每當用到USB,都得單獨配置PLLCLK = 168MHz了,這樣的話其他外設(shè)可能得改變原有的配置,比如這里的CAN就得用APB1=42MHz來計算波特率了,否則就會出錯。這很不方便。。

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

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

所以,大家以后再使用USB的時候當心這個陷阱!

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

    關(guān)注

    60

    文章

    8193

    瀏覽量

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

    關(guān)注

    57

    文章

    2921

    瀏覽量

    467940
  • STM32
    +關(guān)注

    關(guān)注

    2295

    文章

    11032

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

    使用STM32的SPI主機通訊需要喚醒嗎?

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

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

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

    使用STM32F429來讀寫,讀出來確是不固定的一個值,為什么?

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

    STM32模擬eeprom只有起始地址0x8001000正常其他地址都會造成單片機運行不正常怎么回事

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

    伺服電機振動不正常原因和維修及案例分析

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

    TLV320AIC3106-Q1通過什么接口與STM32F429進行硬件連接?

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

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

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

    為什么AIC23剛上電時,工作不正常?

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

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

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

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

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

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

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

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

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

    LOG114 VLogout輸出不正常的原因?

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

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

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