国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

STM32F429的USB工程CAN通訊不正常經驗分享

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

掃碼添加小助手

加入工程師交流群

最近某項目需要用到USBCAN

STM32F429的USB工程CAN通訊不正常經驗分享

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

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

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

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

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

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

STM32F429的USB工程CAN通訊不正常經驗分享

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

STM32F429的USB工程CAN通訊不正常經驗分享

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

STM32F429的USB工程CAN通訊不正常經驗分享

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

STM32F429的USB工程CAN通訊不正常經驗分享

STM32F429的USB工程CAN通訊不正常經驗分享

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

在CAN工程中,系統時鐘為180MHz,USB OTG FS時鐘變為51MHz,超過了正常的48MHz,導致USB不能正常工作。

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

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

STM32F429的USB工程CAN通訊不正常經驗分享

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

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

    關注

    60

    文章

    8441

    瀏覽量

    284683
  • CAN
    CAN
    +關注

    關注

    59

    文章

    3068

    瀏覽量

    472803
  • STM32
    +關注

    關注

    2310

    文章

    11164

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    AT32F系列 CAN通訊模式使用

    AT32F系列 CAN通訊模式使用本帖子演示AT32F系列_CAN通訊模式的使用方法。注:本應用
    發表于 10-20 16:29

    CherryUSB和RTThread自帶的USB如何合理使用?

    使能自帶的USB作為大容量設備,大容量設備無法使用 我這么使用比較擔心的一個點是,RTThread使能自帶的USB和CherryUSB的功能很多都是一樣的。 是否會因為這個導致USB不正常
    發表于 10-13 07:52

    studio建立f429工程使用 lwip運行錯誤的原因?

    1.studio建立f429工程使能 lwip ,按照 board.h 文件中的描述添加了 eth 驅動,RMII 模式 phy為lan8720, 運行時出現 tcpip 線程崩潰,調節了
    發表于 09-18 07:30

    移植rtthread_NANO之后SPI通訊不了怎么解決?

    1、我的裸板程序是一個SPI例程,沒有移植rtthread_NANO之前SPI值正常的; 2、按照官方MDK的方法移植了rtthread_NANO之后,什么都沒有增加,就是移植完了就不正常; 3
    發表于 09-11 06:46

    移植rtthread_NANO之后SPI通訊不了怎么解決?

    1、我的裸板程序是一個SPI例程,沒有移植rtthread_NANO之前SPI值正常的; 2、按照官方MDK的方法移植了rtthread_NANO之后,什么都沒有增加,就是移植完了就不正常; 3
    發表于 07-24 06:41

    cyusb3104在長時間bulk in上傳數據時會突然卡死flaga和flagb標志線不正常一直為低,為什么?

    ; DIRECTION == \"OUT\" }] 測試差不多1個半小時到2個小時就會flaga flagb不正常,不會拉高,表明buffer故障。usb3.0芯片固件里目前thread0是2個buffer。
    發表于 07-15 06:30

    替換STM32f429I芯片

    用GD32F芯片直接STM32f429i替換芯片,要求不改電路板,軟件稍作修改?
    發表于 07-09 22:09

    6軸步進電機驅動+STM32F767+485+CAN+網口+12輸入輸出原理圖

    6軸步進電機驅動+STM32F767+485+CAN+網口+12路輸入輸出 原理圖?步進電機驅動方案TMC5160
    發表于 06-27 16:18 ?0次下載

    如何解決CAN通訊故障?原因分析與解決方法全攻略

    在日常工作中,我們經常收到客戶的反饋,他們表示CAN卡無法正常通訊,這給工作帶來了諸多不便。今天,就讓我們深入探討一下導致CAN通訊失敗的
    的頭像 發表于 06-16 11:39 ?2079次閱讀
    如何解決<b class='flag-5'>CAN</b><b class='flag-5'>通訊</b>故障?原因分析與解決方法全攻略

    使用STM32H7的FDCAN通訊,為什么CAN1會收到CAN2的幀ID,CAN2也會收到CAN1的?

    使用STM32H7的FDCAN通訊,請問為什么CAN1會收到CAN2的幀ID,CAN2也會收到CAN
    發表于 03-14 10:33

    STM32F429 USB和FATFS同時操作eMMC沖突怎么解決?

    有個32G的eMMC,分成了4個盤。 連上usb只會顯示其中的一個盤,用戶可以去操作這個盤。 希望在未顯示u盤或者顯示了u盤但是未進行讀寫的情況下判斷另外幾個盤是否存在文件并上傳到服務器。 目前已經
    發表于 03-14 06:16

    STM32F429以太網外設數據處理上限是多少?

    背景:以429作為控制器的板卡處于網絡交換機的一個節點處,同網段有其他網絡節點,其他節點控制器芯片種類為,A核ARM、CPU,因此429是處理性能最差的節點。 現有方案: 429只與某一節點進行
    發表于 03-13 06:52

    L9300 VDD1輸出電壓不正常是什么原因導致的?

    L9300,VDD1輸出電壓不正常
    發表于 03-13 06:28

    關于STM32 CAN通信發送函數HAL_CAN_AddTxMessage()的最后一個參數填0和定義一個變量取地址的問題求解

    現卡死的情況,進入了硬件中斷,而對于STM32F429IGT6則不會卡死,能夠正常運行;如果定義一個uint32_t類型的變量,取變量的地址傳參進去,兩個片子都能夠正常運行,目前搞不懂什么原因,對于直接傳
    發表于 03-11 08:22

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

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