1,波特率計算
1)can_ttcm :本成員用於配置can 的時間觸發通訊模式(time triggeredcommunication mode)。在此模式下,can 使用它內部定時器產生時間戳,被儲存在can_rdtxr、can_tdtxr 暫存器中。內部定時器在每個can 位時間累加,在接收和傳送的幀起始位被取樣,並生成時間戳。本實驗不使用時間觸發模式。
2)can_abom :當can 檢測到傳送錯誤(tec)或接收錯誤(rec)超過一定值時,會自動進入離線狀態。在離線狀態中,can 不能接收或傳送報文。其中的傳送錯誤或接收錯誤的計算原則由can 協議規定,是can 硬體自動檢測的,不需要軟體干預。軟體可干預的是通過此can_abom 引數選擇是否使用自動離線管理(automatic bus-off management),決定can 硬體在什麼條件下可以退出離線狀態。若我們把此成員賦值為enable,則使用硬體自動離線管理。一旦硬體檢測到128 次
11 位連續的隱性位,則自動退出離線狀態。若我們把此成員賦值為disable,離線狀態由軟體管理。首先由軟體對can_mcr暫存器的inrq 位進行置「1」隨後清「0」,再等到硬體檢測到128 次11 位連續的隱性位,才退出離線狀態。本實驗使用硬體自動離線管理。
3 ) can_awum : 本成員選擇是否開啟自動喚醒功能( automatic wakeup mode)。若使能了自動喚醒功能,並且can 處於睡眠模式,檢測到can 匯流排活動時會自動進入正常模式,以便收發資料。若禁止此功能,則只能由軟體配置才可以使
can 退出睡眠模式。本實驗使用自動喚醒模式。
4 ) can_nart : 本成員用於選擇是否禁止報文自動重傳( no automatic retransmission)。按照can 的標準,can 傳送失敗時會自動重傳至成功為止。向本引數賦值enable,即禁止自動重傳,若賦值為disable,則允許自動重傳功能。本實驗允許can 的自動重傳。
5 ) can_rflm : 本成員用於配置接收fifo 是否鎖定( receive fifo locked mode)。若選擇enable,則當fifo 溢位時會丟棄下乙個接收的報文。若選擇disable,當fifo 溢位時下乙個接收到的報文會覆蓋原報文。本實驗選擇非鎖定模式。
6)can_txfp :本成員用於選擇can 報文傳送優先順序的判定方法。stm32 的can 介面可以對它郵箱內的幾個將要傳送的報文按照優先順序進行處理。對於這個優先順序的判定可以設定為按照報文識別符號來決定(disable),或按照報文的請求順序來決定(enable)。本實驗傳送報文的優先順序按照報文識別符號來決定。
7)can_mode :本成員用於選擇can 是處於工作模式狀態還是測試模式狀態。它有四個可賦值引數,分別是乙個正常工作模式(can_mode_normal),以及靜默模式( can_mode_silent ) 、回環模式( can_mode_loopback ) 和靜默回環模式
(can_mode_silent_loopback)三個測試模式。本實驗使用的是正常的兩個can 節點間的通訊,所以向本成員賦值為正常工作模式。
8)can_sjw、can_bs1、can_bs2 及can_prescaler :這幾個成員是用來配置can 通訊的位時序的。它們分別代表can 協議中的sjw 段(重新同步跳躍寬度)、pbs1 段(相位緩衝段1)、pbs2 段(相位緩衝段2)及時鐘分頻。在stm32 的can 介面配置中,ss 段(同步段)被固定為1 tq,pts(物理緩衝段)被省略。所以乙個正常的位時間只由ss 段(固定為1 tq)、pbs1 段(can_bs1成員)及pbs2 段(can_bs2 成員)組成,pbs1 和pbs2 的重新同步跳躍寬度由成員can_sjw 決定。而時間單元tq 則由can_prescaler 成員決定,它決定can 使用的時鐘是由apb1 的多少分頻得到。
pbs1 與pbs2 之間是取樣點,一般配置在位時間段的75% ~ 80% 的位置,保證匯流排上不同節點資料同步。在本實驗中我們把取樣點設定在70% 處。即ss=1tq,can_bs1 =6 tq,can_bs2=3 tq。為提高同步調整的速度,把can_sjw 配置為2 tq。利用圖16-14 中的公式。時間單位tq 根據成員can_prescaler 的值(4 分頻)及apb1 的時鐘頻率(36 mhz)計算得出。tq =1/(36 mhz/4) 秒,即實際上每乙個can 位的時間為10 tq (1+6+3tq),波特率為36mhz /4/10 = 0.9mbit/s。
STM32的匯流排AMBA AHB APB
一 匯流排的簡單介紹 處理器無疑是計算機中最重要的部件,但並不是唯一的部件。一台計算機也需要隨機訪問儲存器 ram 來存放機器碼指令以便讓處理器執行。計算機還必須有一些方法使這些指令進入ram 輸入裝置 以及一些方法使程式執行結果得以看見 輸出裝置 ram是易失性的,當斷電時,它的內容就會丟失。所以...
STM32匯流排架構筆記
amba是一種soc system of chip 匯流排標準,有amba1.0 2.0 3.0標準。利用amba定義的一款匯流排架構 ahb advanced high performance bus 高階高效能匯流排 asb advanced system bus 高階系統匯流排 apb adv...
stm32的匯流排AMBA AHB APB
出處 amba advanced microprocessor bus architecture 是arm公司提出的一種開放性的soc匯流排標準,現在已經廣泛的應用於risc的核心上了。amba定義了一種 多匯流排系統 multilevel busing system 包括系統匯流排和等級稍低的外設...