91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

汽車玩家 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 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)過幾番折騰已經(jīng)保證了USB與上位機(jī)能正常通訊了,也能保證了CAN的正常收發(fā)(拿了兩塊開發(fā)板做驗(yàn)證)。

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

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

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

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

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

從時(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)分享

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

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

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

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

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

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

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

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

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

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

    關(guān)注

    60

    文章

    8447

    瀏覽量

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

    關(guān)注

    59

    文章

    3069

    瀏覽量

    472877
  • STM32
    +關(guān)注

    關(guān)注

    2310

    文章

    11171

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    AT32F系列 CAN通訊模式使用

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

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

    使能自帶的USB作為大容量設(shè)備,大容量設(shè)備無法使用 我這么使用比較擔(dān)心的一個(gè)點(diǎn)是,RTThread使能自帶的USB和CherryUSB的功能很多都是一樣的。 是否會(huì)因?yàn)檫@個(gè)導(dǎo)致USB不正常
    發(fā)表于 10-13 07:52

    studio建立f429工程使用 lwip運(yùn)行錯(cuò)誤的原因?

    1.studio建立f429工程使能 lwip ,按照 board.h 文件中的描述添加了 eth 驅(qū)動(dòng),RMII 模式 phy為lan8720, 運(yùn)行時(shí)出現(xiàn) tcpip 線程崩潰,調(diào)節(jié)了
    發(fā)表于 09-18 07:30

    103rc rt-studio TIM4 CH2輸出PWM不正常怎么解決?

    MCU:野火mini開發(fā)板(stm32f103rct6) 開發(fā)環(huán)境:rtthread studio 、cubemx 現(xiàn)象 按照教程官網(wǎng)教程: PWM 設(shè)備 以及其他搜到的參考鏈接
    發(fā)表于 09-16 08:20

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

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

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

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

    cyusb3104在長時(shí)間bulk in上傳數(shù)據(jù)時(shí)會(huì)突然卡死flaga和flagb標(biāo)志線不正常一直為低,為什么?

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

    求助,關(guān)于STM32F407VET6 I2S采用DMA傳輸問題求解

    1.在配置后需要聽停止傳輸 才能正常收到數(shù)據(jù) 2.不停止傳輸,直接處理數(shù)據(jù)得到的數(shù)據(jù)不正常
    發(fā)表于 07-11 06:56

    替換STM32f429I芯片

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

    讓開發(fā)板暢游網(wǎng)絡(luò):RT-Thread CherryUSB 驅(qū)動(dòng) RNDIS 模塊詳解 | 技術(shù)集結(jié)

    通過4G模塊上網(wǎng)的功能,以STM32F429為例。目錄新建工程配置cubemx配置cherryusbmain.c添加代碼完成1新建工程2配置cubemx四大件不過
    的頭像 發(fā)表于 07-02 17:04 ?3508次閱讀
    讓開發(fā)板暢游網(wǎng)絡(luò):RT-Thread CherryUSB 驅(qū)動(dòng) RNDIS 模塊詳解 | 技術(shù)集結(jié)

    6軸步進(jìn)電機(jī)驅(qū)動(dòng)+STM32F767+485+CAN+網(wǎng)口+12輸入輸出原理圖

    6軸步進(jìn)電機(jī)驅(qū)動(dòng)+STM32F767+485+CAN+網(wǎng)口+12路輸入輸出 原理圖?步進(jìn)電機(jī)驅(qū)動(dòng)方案TMC5160
    發(fā)表于 06-27 16:18 ?0次下載

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

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

    STM32F40xxx和STM32f41xx flash編程手冊

    PM0081_STM32F40xxx and STM32F41xxx單片機(jī)編程手冊
    發(fā)表于 06-06 17:02 ?5次下載

    CAN總線通訊原理-原來這么簡單!#總線通訊 #總線傳輸 #汽車CAN總線? #電路知識

    CAN總線
    安泰小課堂
    發(fā)布于 :2025年04月24日 17:31:16

    STM32F103x8 STM32F103xB單片機(jī)數(shù)據(jù)手冊

    STM32F103x8STM32F103xB單片機(jī)數(shù)據(jù)手冊
    發(fā)表于 04-14 14:55 ?8次下載