大一寒假——設置can總線——STM32CubeMX


  • CAN收發器

                  c板與一塊具備CAN收發功能的開發板的連接類似下圖

 

                      這樣就形成了一個CAN總線的閉環通信網絡

  • 使用CubeMX生成工程

                 時鍾

                       如果選擇使用外部高速時鍾(HSE),則需要在System Core中配置RCC;

                       如果使用默認內部時鍾(HSI),這一步可以略過;

 

 

                調試選項配置

                                 選項SYS中

                                       默認沒有配置下載引腳,燒錄之后下載器將無法再檢測到;

                                       使用ST-Link,配置為SW選項:

                配置串口 

 串口開啟與芯片模塊有關,參照說明更改

 注意要手動更改引腳

                配置can外設

                      1.CubeMX配置沒有CAN模塊配置如下:

 

 

 

            CAN波特率計算:

     1、can分頻,4分頻:32Mhz / 4 = 8Mhz;

     2、公式:SYNC_SEG+BS1+BS2 = T;

    2、波特率計算,目標波特率是500khz:
     根據:8Mhz/ T = 8000khz/T = 500khz

    計算出:T=16
   

                     2.CubeMX配置有Can外設

 (1)選中CAN1(主)

配置CAN控制只需配置波特率,一般為500KHz,最高1MHz,其它保持默認即可。

CAN總線的波特率比較特別,串口協議的波特率只支持一個確定值,而CAN總線的波特率支持一個較寬的范圍,這也使得CAN總線的抗噪聲性能大大增強。

CAN總線的波特率計算方式如下:

① 確定CAN外設連接的外設總線時鍾PCLK1

此處CAN1連接到APB1外設總線上,在配置HCLK=168Mhz的基礎上,PCLK=42Mhz。

 

 

② 確定分頻系數

此處將PCLK1進行7分頻,為 42Mhz / 7 = 6Mhz,所以設置CAN1外設的分頻系數為7:

③ 配置位段時序

CAN協議的每一個數據位都分為許多時間段,如圖:

 

 


同步段(SYNC_SEG):位變化應該在此時間段內發生,只有一個時間片的固定長度(1 x tq);
位段1(BS1):定義采樣點的位置,其持續長度可以在 1 到 16 個Tq之間調整;
位段2(BS2):定義發送點的位置,其持續長度可以在 1 到 8 個Tq之間調整;
同步跳轉寬度(SJW):定義位段加長或縮短的上限,它可以在 1 到 4 個Tq之間調整;
目標波特率是500khz,設:
B S 1 + B S 2 + S J W = T BS1+BS2+SJW = T
BS1+BS2+SJW=T

根據:
6 M h z / T = 6000 k h z / T = 500 k h z 6Mhz/T = 6000khz / T = 500khz
6Mhz/T=6000khz/T=500khz

計算出:
T = 12 T = 12
T=12

最后在BS1、BS2、SJW的每個范圍內,調整出和為12即可:

 

 


使能CAN1控制器接收中斷


(2)配置時鍾樹
STM32F407ZGT6的最高主頻到168M,使HCLK = 168Mhz即可

3.生成工程

 

————————————————
參考資料原文鏈接:

https://mculover666.blog.csdn.net/article/details/110148532?depth_1-

https://blog.csdn.net/qq_39758638/article/details/113363763

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM