最近因為can的問題弄了我好幾天時間,總結一下:
1:stm32f407開發板回環模式與can1給can2發資料都是ok的,stm32f429不行。
對比初始化函式以及檢查硬體,120歐電阻還是要的,什麼光耦電路能去掉還是去掉,h/l直接從tja1050晶元出來即可。
2:stm32f407與stm32f429回環模式,can1與can2通訊都成功,但是stm32f407與stm32f429通訊不成功。
這是為毛啊??不急,再做個試驗,stm32f429兩塊板子能通訊成功,不存在硬體問題了,定位應該是波特率不匹配的問題。
按照stm32規格書波特率計算方式應該是:
can波特率=(apb1時鐘/(分頻係數*(sync_seg+bs1+bs2)));
再看看自己的配置,怎麼看怎麼對啊,雖然429系統時鐘是180m,407系統時鐘是168m,但407與429都是設定的是250kbps。
好吧,**是看不出結果的。
1:拿個示波器來量吧,唯一借的乙個示波器是壞的,can是通過h/l之前的電平差來計算1與0的,所以可以測試出來,我是沒測成功,放棄。
2:弄個can轉usb吧,407設定250kbps通訊成功,429設定250kbps不成功。
更加確認波特率不對,但是為什麼不對呢,那就去研究下系統時鐘的產生,大概說下:
雖然最終成功,按理說外部晶振通過倍頻方式產生180m的系統時鐘,系統時鐘再通過分頻方式產生匯流排時鐘,can波特率應該不受此影響,還是不理解最終原因???
STM32F429除錯記錄(一)
stm32f429的晶元有兩路can介面 四路串列埠 內部乙太網以及內部dsp處理器等硬體,硬體的豐富程度可見一斑,而且主頻達到180mhz,雖然比a8 a9架構的arm晶元還是差一大截,但是在工業控制上的應用還是比較多的。在程式編寫方面stm32f4系列不管在mdk還是庫函式都有挺大改動,剛著手除...
STM32F429 如何使用SDRAM
關於stm32f429 控制sdram fmc 擴充套件外部sdram 1 原理介紹 為什麼是fmc 不是 fsmc 區別在那裡!stm32f429使用fmc外設來管理擴充套件的儲存器,fmc是flexible memory controller的縮寫,譯為可變儲存控制器。它可以用於驅動包括sram...
STM32F429 如何使用NAND Flash
1 原理介紹 flash即是儲存晶元的一種,其結合了rom和ram的特點,既具備電可擦除程式設計的效能,又可以快速讀取資料,資料不會因斷電丟失。目前市面上flash主要有nor flash和nand flash。nor flash具有隨機訪問和隨位元組執行寫操作的能力,即可以訪問到儲存器內部的任意乙...