在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

AT32講堂044 | AT32 MCU CAN入門指南

雅特力 AT32 MCU ? 2023-01-16 11:06 ? 次閱讀

CAN概述

CAN是Controller Area Network的縮寫(以下稱為CAN),它的設(shè)計目標是以最小的CPU負荷來高效處理大量的報文。1986年德國電氣BOSCH公司開發(fā)出面向汽車的CAN通信協(xié)議。此后,CAN通過ISO11898及ISO11519進行了標準化,現(xiàn)在在歐洲已是汽車網(wǎng)絡(luò)的標準協(xié)議?,F(xiàn)在,CAN的高性能和可靠性已被認同,并被廣泛地應用于工業(yè)自動化、船舶、醫(yī)療設(shè)備、工業(yè)設(shè)備等方面。CAN協(xié)議特點:

  • 多主控制:在總線空閑時,所有節(jié)點均可發(fā)送信息。如果出現(xiàn)兩個及以上節(jié)點同時開始發(fā)送信息時,總線會根據(jù)標識符(Identifier以下稱為ID)進行仲裁,ID越小則優(yōu)先級高,則仲裁優(yōu)勝,仲裁優(yōu)勝的節(jié)點繼續(xù)發(fā)送,仲裁失利的節(jié)點立即轉(zhuǎn)入接收狀態(tài)。需注意,ID并不是表示節(jié)點地址,而是指示所發(fā)送的報文的優(yōu)先級。
  • 系統(tǒng)的靈活性:如上所述,與CAN總線的各節(jié)點沒有類似于“地址”的信息。因此在總線上增減節(jié)點時,連接在總線上的其它節(jié)點的軟硬件設(shè)計均不受影響。
  • 高可靠性:CAN協(xié)議具有錯誤檢測、錯誤通知、故障封閉和錯誤恢復功能。CAN總線上的任意節(jié)點均可檢測錯誤(錯誤檢測);檢測到錯誤后向總線發(fā)送錯誤幀以通知其他節(jié)點(錯誤通知);同時每個節(jié)點內(nèi)部有一個錯誤計數(shù)功能,每次檢測到錯誤之后,錯誤計數(shù)值累加,當某節(jié)點持續(xù)錯誤導致計數(shù)連續(xù)累加,直到大于256后,此故障節(jié)點從總線上斷開,避免影響其他節(jié)點(故障封閉)。且發(fā)送節(jié)點如果在發(fā)送信息的過程中檢測到錯誤,待錯誤結(jié)束后會自動重發(fā)此信息直到成功發(fā)送(錯誤恢復)。
  • 通信速度較快,通信距離遠:最高1Mbps(距離小于40m),最遠可達10km(速率低于5Kbps)。
  • 可連接節(jié)點多:CAN總線是可同時連接多個節(jié)點。節(jié)點數(shù)量理論上是沒有限制的。但實際上節(jié)點數(shù)量受總線時間延遲及電氣負載的限制。降低通信速度,可連接的節(jié)點數(shù)增加;提高通信速度,則可連接的節(jié)點數(shù)減少。

正是因為CAN協(xié)議的這些特點,使得CAN特別適合工業(yè)過程監(jiān)控設(shè)備的互連,因此,越來越受到工業(yè)界的重視,并已公認為最有前途的現(xiàn)場總線之一。CAN協(xié)議經(jīng)過ISO標準化后有兩個標準:ISO11898標準和ISO11519-2標準。其中ISO11898是針對通信速率為125Kbps~1Mbps的高速通信標準,而ISO11519-2是針對通信速率為125Kbps以下的低速通信標準。本文例程使用的是1Mbps的通信速率,使用的是ISO11898標準。

CAN協(xié)議介紹

本章主要介紹CAN的網(wǎng)絡(luò)拓撲結(jié)構(gòu)、總線物理層特性、幀類型、幀結(jié)構(gòu)、位填充機制、位格式、同步機制、仲裁機制、錯誤處理機制等。另外還有CAN協(xié)議的更多細節(jié)請參考BOSCH CAN協(xié)議,本文不再詳述。

CAN網(wǎng)絡(luò)拓撲結(jié)構(gòu)

如下圖1:CAN總線由兩條差分線CANH和CANL組成,各個節(jié)點通過較短的支線接入CAN總線。各節(jié)點從通信協(xié)議而言是沒有主從和地址區(qū)分的,每個節(jié)點均可以平等的收發(fā)數(shù)據(jù)。另外,在CAN總線的兩端各有一個120Ω的終端電阻,來做阻抗匹配,以減少回波反射。圖1 CAN網(wǎng)絡(luò)拓撲結(jié)構(gòu)3d82801e-9419-11ed-ad0d-dac502259ad0.png

CAN總線物理層特性

如下圖2:顯性電平對應邏輯“0”,CANH和CANL壓差2.5V左右。而隱性電平對應邏輯“1”,CANH和CANL壓差為0V。在總線上,顯性電平具有優(yōu)先權(quán),只要有一個節(jié)點輸出顯性電平,總線上即為顯性電平。而隱形電平則具有包容的意味,只有所有的節(jié)點都輸出隱性電平,總線上才為隱性電平。圖2 CAN總線電平特性3d90d7cc-9419-11ed-ad0d-dac502259ad0.png

幀類型

如下表1,CAN包含了以下5種幀類型。其中數(shù)據(jù)幀和遠程幀由用戶控制收發(fā);錯誤幀、過載幀和間隔幀是CAN總線上各節(jié)點硬件根據(jù)對應狀態(tài)發(fā)送,用戶不能也無需控制。表1 CAN幀類型3db5c122-9419-11ed-ad0d-dac502259ad0.png如下圖3,包含了各類型幀結(jié)構(gòu)示意。圖3 CAN各幀類型3dd98170-9419-11ed-ad0d-dac502259ad0.png

幀結(jié)構(gòu)

本文僅對標準數(shù)據(jù)幀進行詳細介紹,其他幀類型可參考圖3與標準數(shù)據(jù)幀進行對比理解。一幀標準數(shù)據(jù)幀包含如下部分:幀起始:為1bit顯性位。由于CAN總線空閑時是隱性電平,幀起始的顯性位用于提示總線上的節(jié)點“一幀信息傳輸開始了”。仲裁段:表示該幀優(yōu)先級的段,包含標識符和幀類型(數(shù)據(jù)/遠程幀)。控制段:表示數(shù)據(jù)的字節(jié)數(shù)、標識符類型(標準/擴展標識符)及保留位的段。數(shù)據(jù)段:數(shù)據(jù),一幀可發(fā)送0~8個字節(jié)的數(shù)據(jù)(數(shù)據(jù)長度根據(jù)控制段的DLC決定)。CRC段:發(fā)送節(jié)點將CRC計算區(qū)域(不包含填充位)進行CRC計算后放入CRC段發(fā)送。接收節(jié)點也對CRC計算區(qū)域進行CRC計算,并與收到的CRC域進行對比,若CRC對比結(jié)果有誤則向總線發(fā)送錯誤幀,若對比結(jié)果正確則隨后發(fā)送應答。ACK段:含應答位(ACK SLOT)和應答間隔符(ACK DELIMITER)。發(fā)送節(jié)點在ACK段均發(fā)送隱性電平;接收節(jié)點如果在接收過程中沒有檢測到錯誤,則在應答位輸出1bit顯性電平,以通知發(fā)送節(jié)點“這幀數(shù)據(jù)被正確的接收了”。幀結(jié)束:表示數(shù)據(jù)幀結(jié)束的段,為7bit隱性電平。圖4 CAN標準數(shù)據(jù)幀3de8d602-9419-11ed-ad0d-dac502259ad0.png

位填充

由于CAN總線只有CANH/CANL兩條差分線,沒有CLK線來做同步,所以CAN是直接通過數(shù)據(jù)流中間的跳變沿來做同步的(參考下文同步機制)。而為了避免數(shù)據(jù)流中出現(xiàn)大段沒有跳變沿的情況,CAN加入了“位填充”機制。即發(fā)送器只要檢測到位流里有5個連續(xù)相同值的位,便自動在位流里插入一相反電平的填充位。例如,原始數(shù)據(jù)流為“0000000111110001…”,經(jīng)過位填充后實際輸出到CAN總線的數(shù)據(jù)流為“000001001111100001…”,加下劃線的位即為填充位。位填充的范圍為幀起始(SOF)~CRC域(不含CRC間隔符),參考上圖4。

位格式

AT32的CAN一個bit可分為3段:

  • 同步段(SYNC_SEG)
  • 位段1(BIT SEGMENT 1),包括CAN標準里的PROP_SEG和PHASE_SEG1,記為BSEG1。
  • 位段2(BIT SEGMENT 2),即CAN標準里的PHASE_SEG2,記為BSEG2。

這些段又由Time Quantum(以下稱為Tq)的最小時間單位構(gòu)成。1位分為3個段,每個段又由若干個Tq構(gòu)成,這稱為位時序。1位由多少個Tq構(gòu)成、每個段又由多少個Tq構(gòu)成等,可以任意設(shè)定位時序。用戶通過設(shè)定位時序和Tq長度來設(shè)定CAN的波特率和采樣點。關(guān)于波特率和采樣點設(shè)置,后文詳細介紹。各段作用及AT32的CAN可配置的Tq數(shù)見下表2:表2 位的各段的作用3e1992ba-9419-11ed-ad0d-dac502259ad0.png如下圖5,同步段、位段1和位段2組成一個bit。BSEG1和BSEG2段交界處為采樣點,即接收節(jié)點采樣的時間點。圖5 位時序3e42b1fe-9419-11ed-ad0d-dac502259ad0.png

同步機制

硬同步(HARD SYHCHRONIZATION):硬同步后,內(nèi)部的位時間從同步段重新開始。因此,硬同步強迫由硬同步引起的沿處于重新開始的位時間同步段之內(nèi)。即下圖6的理想跳變沿情況。重新同步跳轉(zhuǎn)寬度(RESYHCHRONIZATION JUMP WIDTH):重新同步的結(jié)果,使位段1增長,或使位段2縮短。位段增長或縮短的數(shù)量有一個上限,此上限由重新同步跳轉(zhuǎn)寬度給定。重新同步跳轉(zhuǎn)寬度應設(shè)置于1~4Tq之間。如下圖6:當在BSEG1段檢測到下降沿,則BSEG1段增長Tdelay,當前bit整體增長Tdelay,其中Tdelay<=重新同步跳轉(zhuǎn)寬度。當在BSEG2段檢測到下降沿,則BSEG2段縮短Tadvance,當前bit整體縮短Tadvance,其中Tadvance<=重新同步跳轉(zhuǎn)寬度。圖6 重同步跳躍3e568350-9419-11ed-ad0d-dac502259ad0.png

仲裁機制

只要總線空閑,任何單元都可以開始發(fā)送報文。如果2個或2個以上的單元同時開始傳送報文,那么就會有總線訪問沖突。通過對ID進行逐位仲裁可以解決這個沖突。仲裁的機制確保了報文和時間均不損失。當具有相同ID的數(shù)據(jù)幀和遠程幀同時初始化時,數(shù)據(jù)幀優(yōu)先于遠程幀。仲裁期間,每一個發(fā)送節(jié)點都對發(fā)送位的電平與被監(jiān)控的總線電平進行比較。如果電平相同,則這個節(jié)點可以繼續(xù)發(fā)送。如果發(fā)送的是一“隱性”電平而監(jiān)測到是一“顯性”電平(見總線電平),那么該節(jié)點就失去了仲裁,必須立即退出發(fā)送狀態(tài)并轉(zhuǎn)入接收狀態(tài)。例如下圖7,節(jié)點1和節(jié)點2同時發(fā)送一幀數(shù)據(jù),ID段前幾bit相同。直到紅色處,節(jié)點1發(fā)送隱性電平“1”,節(jié)點2發(fā)送顯性電平“0”。此時節(jié)點2仲裁優(yōu)勝,繼續(xù)發(fā)送,總線電平和節(jié)點2發(fā)送值一致;而節(jié)點1仲裁失利,在下一bit轉(zhuǎn)入接收,后續(xù)節(jié)點1的發(fā)送引腳保持隱性電平。圖7 仲裁機制

3e79e0ca-9419-11ed-ad0d-dac502259ad0.png

錯誤處理機制

錯誤類型

CAN協(xié)議定義了以下5種不同的錯誤類型:

  • 位錯誤(Bit Error)單元在發(fā)送位的同時也對總線進行監(jiān)視。如果所發(fā)送的位值與所監(jiān)視的位值不相符合,則在此位時間里檢測到一個位錯誤。AT32將位錯誤細分為顯性位錯誤(發(fā)送顯性位但檢測到隱性位)和隱性位錯誤(發(fā)送隱性位但檢測到顯性位)。CAN節(jié)點在發(fā)送狀態(tài)會出現(xiàn)此類錯誤。但是在仲裁場(ARBITRATION FIELD)的填充位流期間或應答間隙(ACK SLOT)發(fā)送一“隱性”位的情況是例外的——此時,當監(jiān)視到一“顯性”位時,不會發(fā)出位錯誤。當發(fā)送器發(fā)送一個被動錯誤標志但檢測到“顯性”位時,也不視為位錯誤。
  • 位填充錯誤(Stuff Error)如果在使用一幀報文的位填充區(qū)域(參考圖4的“位填充區(qū)域”)檢測到6個連續(xù)相同的位電平時,將檢測到一個位填充錯誤。CAN節(jié)點在接收狀態(tài)會出現(xiàn)此類錯誤。
  • CRC錯誤(CRC Error)CRC序列包括發(fā)送器的CRC計算結(jié)果。接收器計算CRC的方法與發(fā)送器相同。如果計算結(jié)果與接收到CRC序列的結(jié)果不相符,則檢測到一個CRC錯誤。CAN節(jié)點在接收狀態(tài)會出現(xiàn)此類錯誤。
  • 格式錯誤(Form Error)當一個固定形式的位場含有1個或多個非法位,則檢測到一個格式錯誤。例如在CRC間隔符/ACK間隔符的位場檢測到顯性位,則會檢測到格式錯誤。例外:接收器的幀末尾最后一位期間的顯性位不被當作幀錯誤。CAN節(jié)點在接收狀態(tài)會出現(xiàn)此類錯誤。
  • 應答錯誤(Acknowledgment Error)只要在應答位(ACK SLOT)期間所監(jiān)測的位不為“顯性”,則發(fā)送器會檢測到一個應答錯誤。CAN節(jié)點在發(fā)送狀態(tài)會出現(xiàn)此類錯誤。

錯誤狀態(tài)CAN節(jié)點檢測到錯誤之后,根據(jù)不同狀態(tài)和錯誤類型會對發(fā)送錯誤計數(shù)器(TEC[7:0])/接收錯誤計數(shù)器(REC[7:0])進行加1或加8(具體增加規(guī)則請參考BOSCH CAN協(xié)議),每正確的發(fā)送/接收一幀數(shù)據(jù)后,發(fā)送/接收錯誤計數(shù)器減1。因此發(fā)送/接收錯誤計數(shù)器值表明了CAN節(jié)點和網(wǎng)絡(luò)的穩(wěn)定程度。根據(jù)發(fā)送/接收錯誤計數(shù)器值,一個節(jié)點的狀態(tài)會處于以下三種之一:

  • 錯誤主動“錯誤主動”的節(jié)點可以正常地參與總線通訊并在錯誤被檢測到時發(fā)出主動錯誤標志(6個顯性位)。見下圖8,TEC<128且REC<128即為錯誤主動狀態(tài)。
  • 錯誤被動“錯誤被動”的節(jié)點可參與總線接收和發(fā)送數(shù)據(jù)/遠程幀。但檢測到錯誤時只能發(fā)送錯誤被動標志(6個隱形位)。見下圖8,255≥TEC>128且255≥REC>128即為錯誤被動狀態(tài)。
  • 離線“離線”的節(jié)點相當于直接從CAN總線斷開,不能收/發(fā)任何信息。見下圖8,TEC>255即為離線狀態(tài)。

AT32離線管理:AT32 CAN從離線狀態(tài)恢復分兩種情況:1)當CAN主控制寄存器(CAN_MCTRL)AEBOEN位為‘0’時,需要軟件請求進入凍結(jié)模式,再請求退出凍結(jié)模式,然后在通信模式下等待CAN節(jié)點RX檢測到128次11個連續(xù)隱性位,隨后該節(jié)點會從離線狀態(tài)恢復。2)當AEBOEN位為‘1’時,通信模式下CAN節(jié)點RX檢測到128次11個連續(xù)隱性位,就自動從離線狀態(tài)恢復。圖8 錯誤狀態(tài)3e8cbcd6-9419-11ed-ad0d-dac502259ad0.png

AT32的CAN

AT32的CAN支持標準CAN協(xié)議2.0A和2.0B。且在兼容標準CAN協(xié)議的基礎(chǔ)上增加了一些功能和可配置選項。其中CAN2.0A和2.0B的主要差別在于:CAN 2.0A僅支持11bitID,即只支持標準幀;CAN2.0B支持11bit/29bitID,即支持標準幀和擴展幀。本章節(jié)主要介紹AT32 CAN的主要設(shè)計結(jié)構(gòu)和使用,介紹了AT32 CAN的正常通信流程,包括發(fā)送流程、接收流程、報文過濾、波特率及采樣點設(shè)置等。其他AT32 CAN相關(guān)設(shè)計,例如錯誤管理、中斷管理等,請參考RM相關(guān)章節(jié)。

整體功能介紹

隨著CAN網(wǎng)絡(luò)節(jié)點和報文數(shù)量的增加,需要一個增強的過濾機制處理各種類型的報文,減少接收報文的處理時間,采用FIFO的方案,使得CPU可以長時間處理應用層任務(wù)而不會丟失報文。同時發(fā)送報文由硬件控制發(fā)送優(yōu)先級順序?;谝陨峡紤],CAN控制器提供28組位寬可配置的標識符過濾器組,2個接收FIFO,每個FIFO都可以存放3個完整的報文。共有3個發(fā)送郵箱,發(fā)送調(diào)度器決定發(fā)送優(yōu)先級順序。整個收發(fā)過程完全由硬件管理,無需占用CPU資源。圖9 AT32 CAN整體功能介紹3ea39550-9419-11ed-ad0d-dac502259ad0.png

CAN發(fā)送流程

CAN發(fā)送流程見下圖10和以下的步驟:用戶使用時只需操作1)~3)。4)~7)由硬件自動完成,無需用戶代碼參與,不占用CPU資源。1)程序選擇1個空置的郵箱(發(fā)送郵箱空標志TMxEF=1)2)將需要發(fā)送的報文寫入對應的空郵箱。報文內(nèi)容包含:ID、幀類型、數(shù)據(jù)長度和發(fā)送數(shù)據(jù)等3)請求發(fā)送:將CAN_TMIx的TMSR位置14)郵箱掛號(等待成為最高優(yōu)先級)5)預定發(fā)送(等待總線空閑)6)發(fā)送7)郵箱空置注:以上步驟1)~7)只簡單介紹正常發(fā)送流程,下圖10中還包含取消發(fā)送、發(fā)送失敗、自動/不自動重傳等情況,可參考RM文件報文發(fā)送一節(jié),這里不再詳述。下圖10中標志位和操作位說明如下:TMxTCF:請求完成標志位(發(fā)送/中止請求)TMxTSF:發(fā)送成功標志位TMxEF:發(fā)送郵箱空標志位TMSR:請求發(fā)送TMxCT:中止發(fā)送PRSFEN:禁止自動重傳(PRSFEN=1時,禁止自動重傳;PRSFEN=0時,自動重傳直到發(fā)送成功)圖10 CAN發(fā)送流程3ec90f1a-9419-11ed-ad0d-dac502259ad0.png

CAN接收流程

CAN常用接收流程如下,即下圖11的“空”和“掛號_1”兩個狀態(tài)間循環(huán):1)FIFO空2)收到有效報文3)進入“掛號_1”狀態(tài)(FIFO內(nèi)有1條有效報文的狀態(tài))4)讀取有效報文:讀取接收郵箱寄存器(CAN_RFIx,CAN_RFCx,CAN_RFDTLx,CAN_RFDTHx)。5)釋放郵箱:CAN_RFx寄存器RFxR位置1。注:用戶使用時只需操作4)~5)。1)~3)由硬件自動完成,無需用戶代碼參與,不占用CPU資源。

有效報文:

當報文被正確接收(直到EOF域的最后一位都沒有錯誤),且通過了標識符過濾,那么該報文被認為是有效報文。過濾器相關(guān)介紹見下一節(jié)。而如果接收過程中用戶不參與操作(即不去讀取有效報文和釋放郵箱),硬件流程如下:1)收到有效報文2)進入“掛號_1”狀態(tài)(FIFO內(nèi)有1條有效報文的狀態(tài))3)收到有效報文4)進入“掛號_2”狀態(tài)(FIFO內(nèi)有2條有效報文的狀態(tài))5)收到有效報文6)進入“掛號_3”狀態(tài)(FIFO內(nèi)有3條有效報文的狀態(tài))7)收到有效報文8)進入“溢出”狀態(tài)(FIFO內(nèi)有3條有效報文,丟失了一條報文,溢出標志置起)

下圖11中標志位和操作位說明如下:

RFxMN:FIFO內(nèi)有效報文數(shù)量(取值0~3)RFxOF:溢出標志位RFxR:釋放郵箱圖11 CAN接收流程3ee3e718-9419-11ed-ad0d-dac502259ad0.png

過濾器

在CAN協(xié)議里,報文的ID不代表節(jié)點的地址,而是跟報文的內(nèi)容相關(guān)的。因此,發(fā)送者以廣播的形式把報文發(fā)送給所有的接收者。節(jié)點在接收報文時,根據(jù)ID的值決定軟件是否需要該報文;如果需要,就存到接收FIFO里,用戶可通過軟件讀取接收郵箱寄存器獲取該報文;如果不需要,報文就被丟棄且無需軟件的干預。為滿足這一需求,AT32CAN控制器為應用程序提供了28個硬件過濾器組(AT32F435系列有28個過濾器組,0~27;但AT32F403A等系列只有14個過濾器組,0~13。具體請參考相應型號的RM),以便只接收那些軟件需要的報文。用戶配置好需要的ID后,整個過濾過程無需軟件參與,不占用CPU資源。

過濾器的位寬

每個過濾器組由2個32bit的寄存器,CAN_FiFB1和CAN_FiFB2組成。通過配置CAN_FBWCFG寄存器的FBWSELx位,可以設(shè)置2個16位寬或者1個32位寬的過濾器。32位寬的過濾器寄存器CAN_FiFBx包括:一組SID[10:0]、EID[17:0]、IDT和RTR位。16位寬的過濾器寄存器CAN_FiFBx包括:兩組SID[10:0]、IDT、RTR和EID[17:15]位。

過濾器模式

通過設(shè)置CAN_FMCFG寄存器的FMSELx位可以設(shè)置過濾器寄存器工作在標識符掩碼模式或者標識符列表模式,掩碼模式用來指定ID的哪些位需要與預設(shè)ID相同,哪些位無需比較,列表模式表示ID的每個位都必須與預設(shè)ID一致。兩種模式與過濾器位寬配合使用,可以有以下四種過濾方式:圖12 32位寬標識符掩碼模式3eefca7e-9419-11ed-ad0d-dac502259ad0.png圖13 32位寬標識符列表模式3f07ea3c-9419-11ed-ad0d-dac502259ad0.png圖14 16位寬標識符掩碼模式

3f1e3c7e-9419-11ed-ad0d-dac502259ad0.png

圖15 16位寬標識符列表模式3f357f92-9419-11ed-ad0d-dac502259ad0.png更多CAN過濾器說明,例如CAN過濾器匹配序號,優(yōu)先級規(guī)則等可參考RM文件報文過濾一節(jié),這里不再詳述。過濾器配置流程見后文案例介紹--CAN接收過濾器使用。

CAN波特率及采樣點計算

如前文CAN位格式一節(jié)所述,CAN的一個bit被分為幾段。其中第一段同步段(SYNC_SEG)固定為1Tq,1Tq的長度由CAN位時序寄存器(CAN_BTMG)的分頻系數(shù)BRDIV[11:0]位定義;位段1(BSEG1)通過配置CAN位時序寄存器的BTS1[3:0]位,可設(shè)定為1~16Tq;位段2(BSEG2)通過配置CAN位時序寄存器的BTS2[2:0]位,可設(shè)定為1~8Tq。用戶通過配置CAN時序寄存器,可設(shè)置CAN波特率和采樣點,整個CAN總線上各節(jié)點的波特率和采樣點一致最佳,不過由于各節(jié)點主頻可能不一樣,所以比較難保證波特率和采樣點均一致。用戶使用時應首先保證波特率一致,采樣點盡量保持在較小的偏差范圍內(nèi),這樣CAN總線可以支持更多的節(jié)點和更長的線路。波特率計算公式其中3f473d86-9419-11ed-ad0d-dac502259ad0.png例如,bsp例程project\at_start_f437\examples\can\communication_mode:APB時鐘:APB1_CLK=144MHZCAN分頻系數(shù):BRDIV=12此時1Tq=1/(144MHZ/12)=(1/12)us同步段:SYNC_SEG=1Tq(固定不變,無需用戶配置)位段1:BSEG1=8Tq(BTS1[3:0]=7)位段2:BSEG2=3Tq(BTS2[2:0]=2)此時Nomal Bit Timimg=1Tq*(SYNCSEG+BSEG1+BSEG12)=1us此時BaudRate=1/(Nomal Bit Timimg)=1/1us=1Mbps采樣點計算公式sample point=(SYNC_SEG+BSEG1)/(SYNC_SEG+BSEG1+BSEG12)舉例同上:此時sample point=(1+8)/(1+8+3)=75%關(guān)于采樣點設(shè)置,CAN協(xié)議并沒有明確規(guī)定,但根據(jù)各廠商CAN設(shè)備使用習慣,采樣點設(shè)置建議如下表3:表3 采樣點設(shè)置建議3f588b2c-9419-11ed-ad0d-dac502259ad0.png波特率計算工具為方便用戶波特率設(shè)定,本文介紹一個AT專用波特率計算工具:3f74ae88-9419-11ed-ad0d-dac502259ad0.png使用步驟如下:1) 波特率設(shè)定:高速CAN波特率最大為1M,各廠商CAN設(shè)備常用波特率為125K、250K、333K、500K、1M等。用戶可根據(jù)需要設(shè)定波特率。參考下圖16“波特率(Kbit/S)”。2) CAN時鐘源頻率設(shè)定:參考下圖16“PCLK1(MHZ)”。3) 采樣位置設(shè)置:設(shè)置完波特率后,計算工具會自動填入一個推薦的采樣位置值。若實際項目中無具體限定,可保持默認設(shè)定;若項目中有具體限定,根據(jù)需求更改即可。參考下圖16“采樣位置(%)”。4) 波特率偏差設(shè)定:建議在不勾選“允許波特率偏差”項,僅在沒有符合要求的計算結(jié)果時,再勾選此項。由于同一CAN網(wǎng)絡(luò)的節(jié)點波特率有誤差會增大通信錯誤幾率,建議“偏差”值設(shè)置盡量小。參考下圖16“允許波特率偏差”和“偏差”。5)波特率配置結(jié)果選擇:根據(jù)以上設(shè)定即可計算出多組結(jié)果。在頁面左下角選擇一項計算結(jié)果,即會在頁面右下角顯示對應軟件代碼配置,點擊“復制全部”即可獲得對應代碼。圖16 波特率配置工具3f91aa4c-9419-11ed-ad0d-dac502259ad0.png

案例1 CAN正常通信-normal模式

注:所有project都是基于keil 5而建立,若用戶需要在其他編譯環(huán)境上使用,請參考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各種編譯環(huán)境(例如IAR6/7,keil 4/5)進行簡單修改即可。

功能簡介

實現(xiàn)兩個CAN節(jié)點之間收發(fā)通信。

資源準備

1) 硬件環(huán)境:兩套對應產(chǎn)品型號的AT-START BOARD+CAN電平轉(zhuǎn)化器程序設(shè)計以bsp demo為例:CAN1_TX(PB9)連接電平轉(zhuǎn)換器的TXD;CAN1_RX(PB8)連接電平轉(zhuǎn)換器的RXD;兩個CAN節(jié)點的電平轉(zhuǎn)換器的CANH和CANL分別相連。CAN電平轉(zhuǎn)換器硬件設(shè)計可參考下圖:圖17 CAN電平轉(zhuǎn)換器硬件設(shè)計3fa240c8-9419-11ed-ad0d-dac502259ad0.png2) 軟件環(huán)境:project\at_start_f435\examples\can\communication_mode

軟件設(shè)計

1) 配置流程

  • 配置CAN1 TX和RX pin對應的GPIO引腳
  • 配置CAN基礎(chǔ)選項
  • 配置CAN波特率
  • 配置CAN過濾器
  • 配置CAN中斷

2) 代碼介紹

  • main函數(shù)代碼描述

3fcae5dc-9419-11ed-ad0d-dac502259ad0.png

  • CAN配置函數(shù)代碼描述

3fe0acfa-9419-11ed-ad0d-dac502259ad0.png

  • CAN發(fā)送函數(shù)代碼描述

40348186-9419-11ed-ad0d-dac502259ad0.png

  • CAN接收中斷函數(shù)代碼描述

4054da8a-9419-11ed-ad0d-dac502259ad0.png

  • GPIO配置函數(shù)代碼描述

406d9200-9419-11ed-ad0d-dac502259ad0.png

實驗效果

  • 如若數(shù)據(jù)傳輸無誤,兩塊AT-START BOARD的LED2均會閃爍以指示收到ID=0x400的標準幀數(shù)據(jù);LED4會持續(xù)閃爍以指示程序正常運行。

案例2 CAN接收過濾器使用

注:所有project都是基于keil 5而建立,若用戶需要在其他編譯環(huán)境上使用,請參考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各種編譯環(huán)境(例如IAR6/7,keil 4/5)進行簡單修改即可。

功能簡介

實現(xiàn)報文過濾:接收需要的報文,丟棄不需要的報文。

資源準備

1) 硬件環(huán)境:兩套對應產(chǎn)品型號的AT-START BOARD+CAN電平轉(zhuǎn)化器程序設(shè)計以bsp demo為例:CAN1_TX(PB9)連接電平轉(zhuǎn)換器的TXD;CAN1_RX(PB8)連接電平轉(zhuǎn)換器的RXD;兩個CAN節(jié)點的電平轉(zhuǎn)換器的CANH和CANL分別相連。CAN電平轉(zhuǎn)換器硬件設(shè)計可參考下圖:圖18 CAN電平轉(zhuǎn)換器硬件設(shè)計409bccd8-9419-11ed-ad0d-dac502259ad0.png2) 軟件環(huán)境:project\at_start_f435\examples\can\filter

軟件設(shè)計

1) 配置流程

  • 配置CAN1 TX和RX pin對應的GPIO引腳
  • 配置CAN基礎(chǔ)選項
  • 配置CAN波特率
  • 配置CAN過濾器
  • 配置CAN中斷

2) 代碼介紹

  • 設(shè)定可通過過濾的ID

40b438b8-9419-11ed-ad0d-dac502259ad0.png

  • main函數(shù)代碼描述

40d2ba22-9419-11ed-ad0d-dac502259ad0.png

  • CAN配置函數(shù)代碼描述

410d623a-9419-11ed-ad0d-dac502259ad0.png

  • CAN發(fā)送函數(shù)代碼描述

4192f3b4-9419-11ed-ad0d-dac502259ad0.png

  • CAN接收中斷函數(shù)代碼描述

41bcff2e-9419-11ed-ad0d-dac502259ad0.png

  • GPIO配置函數(shù)代碼描述

41eb2b60-9419-11ed-ad0d-dac502259ad0.png

實驗效果

  • 如若數(shù)據(jù)傳輸無誤,AT-START BOARD的LED2/3/4會翻轉(zhuǎn)一次,以指示收到ID=FILTER_EXT_ID1,F(xiàn)ILTER_EXT_ID2,F(xiàn)ILTER_STD_ID1,F(xiàn)ILTER_STD_ID2的4幀數(shù)據(jù)。

案例3 CAN調(diào)試-loopback模式

注:所有project都是基于keil 5而建立,若用戶需要在其他編譯環(huán)境上使用,請參考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各種編譯環(huán)境(例如IAR6/7,keil 4/5)進行簡單修改即可。

功能簡介

實現(xiàn)單板的環(huán)回模式通信。環(huán)回模式(loopback mode):環(huán)回模式可用于自測試。在環(huán)回模式下,CAN在內(nèi)部把TX輸出回饋到RX輸入上,而完全忽略CAN_RX引腳的實際狀態(tài)。因此此模式下CAN對應的GPIO引腳可以不配置,而如果對應的GPIO引腳配置了,發(fā)送的報文可以在CAN_TX引腳上檢測到。見下圖19。另外,為了避免外部的影響,在環(huán)回模式下CAN內(nèi)核忽略確認錯誤(在數(shù)據(jù)/遠程幀的確認位時刻,不檢測是否有顯性位)。平轉(zhuǎn)換器硬件設(shè)計可參考下圖:圖19 CAN loopback模式420438c6-9419-11ed-ad0d-dac502259ad0.png

資源準備

1) 硬件環(huán)境:一塊對應產(chǎn)品型號的AT-START BOARD2) 軟件環(huán)境:project\at_start_f435\examples\can\loopback_mode

軟件設(shè)計

1) 配置流程

  • 配置CAN1 TX和RX pin對應GPIO(loopback模式下,此項可忽略不配置)
  • 配置CAN基礎(chǔ)選項
  • 配置CAN波特率
  • 配置CAN過濾器
  • 配置CAN中斷

2) 代碼介紹

  • main函數(shù)代碼描述

4215bb8c-9419-11ed-ad0d-dac502259ad0.png

  • CAN配置函數(shù)代碼描述

42426f60-9419-11ed-ad0d-dac502259ad0.png

  • CAN發(fā)送函數(shù)代碼描述

42b469d0-9419-11ed-ad0d-dac502259ad0.png

  • CAN接收中斷函數(shù)代碼描述

42d2c4d4-9419-11ed-ad0d-dac502259ad0.png

  • GPIO配置函數(shù)代碼描述

42e5b6ca-9419-11ed-ad0d-dac502259ad0.png

實驗效果

  • AT-START BOARD的LED2會閃爍以指示收到自己發(fā)送的ID=0x400的標準幀數(shù)據(jù);LED4會持續(xù)閃爍以指示程序正常運行。

關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創(chuàng)新趨勢的芯片設(shè)計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運算效能,并支持工業(yè)級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當多元的終端產(chǎn)品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達、工業(yè)縫紉機、伺服驅(qū)控、電競周邊市場、斷路器、ADAS、T-BOX、數(shù)字電源、電動工具等終端設(shè)備應用,廣泛地覆蓋5G、物聯(lián)網(wǎng)、消費、商務(wù)及工控等領(lǐng)域。

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

    關(guān)注

    146

    文章

    17263

    瀏覽量

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

    關(guān)注

    57

    文章

    2763

    瀏覽量

    464028
收藏 人收藏

    評論

    相關(guān)推薦

    電容式觸控MSP430FR2676 MCU板(CAPTIVATE-FR2676)入門指南

    電子發(fā)燒友網(wǎng)站提供《電容式觸控MSP430FR2676 MCU板(CAPTIVATE-FR2676)入門指南.pdf》資料免費下載
    發(fā)表于 12-05 15:07 ?1次下載
    電容式觸控MSP430FR2676 <b class='flag-5'>MCU</b>板(CAPTIVATE-FR2676)<b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    WinCC 7.5入門指南

    WinCC 7.5入門指南
    發(fā)表于 10-21 10:37 ?4次下載

    通用CAN芯片選型指南

    選擇合適的CAN芯片對于確保系統(tǒng)性能至關(guān)重要。以下是一份通用的CAN芯片選型指南,旨在幫助工程師根據(jù)不同的應用需求選擇合適的CAN芯片。
    的頭像 發(fā)表于 10-12 14:11 ?578次閱讀
    通用<b class='flag-5'>CAN</b>芯片選型<b class='flag-5'>指南</b>

    STM32轉(zhuǎn)AT32代碼轉(zhuǎn)換

    1.引言在嵌入式開發(fā)中,我們經(jīng)常會遇到更換單片機芯片的事情,若芯片是同一廠家的還好說,若是不同廠家的則需要重新寫,重新調(diào),重新去學習其底層驅(qū)動程序,比較費時費力。如:ST32轉(zhuǎn)AT32、ST32轉(zhuǎn)
    的頭像 發(fā)表于 09-28 08:09 ?360次閱讀
    STM32轉(zhuǎn)<b class='flag-5'>AT32</b>代碼轉(zhuǎn)換

    AT32講堂088 | 雅特力AT32F402/F405時鐘配置

    簡介時鐘是芯片正確高效運行的基礎(chǔ),正確的時鐘配置是芯片能正確運行的必要條件,其重要性不言而喻。AT32各系列產(chǎn)品的時鐘配置部分可能存在細微的差異和需要注意的事項,本文檔就著重針對各系列的情況來詳細
    的頭像 發(fā)表于 09-15 08:08 ?554次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>088 | 雅特力AT32F402/F405時鐘配置

    AT32講堂087 | 雅特力AT32 IDE快速入門指南

    新建項目新項目向?qū)T32ID提供支持雅特力MCU的C語言項目模板,方便用戶快速創(chuàng)建項目。菜單欄【File】>【New】>【CProject】。新建項目向?qū)У膶υ捒驅(qū)⒊霈F(xiàn)。在對
    的頭像 發(fā)表于 09-15 08:08 ?509次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>087 | 雅特力<b class='flag-5'>AT32</b> IDE快速<b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    MCAN(CAN FD)模塊入門

    電子發(fā)燒友網(wǎng)站提供《MCAN(CAN FD)模塊入門.pdf》資料免費下載
    發(fā)表于 09-14 10:08 ?0次下載
    MCAN(<b class='flag-5'>CAN</b> FD)模塊<b class='flag-5'>入門</b>

    BQ產(chǎn)品入門指南

    電子發(fā)燒友網(wǎng)站提供《BQ產(chǎn)品入門指南.pdf》資料免費下載
    發(fā)表于 09-02 12:00 ?4次下載
    BQ產(chǎn)品<b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    雅特力AT32 MCU的隨機數(shù)生成

    概述產(chǎn)品和生態(tài)系統(tǒng)安全性的需求比以往任何時候都更加重要。真隨機數(shù)是所有安全系統(tǒng)的核心,其質(zhì)量會影響設(shè)計的安全性。因此在沒有內(nèi)置硬件TRNG的AT32的微控制器系列中,如何提高隨機數(shù)的有效,來符合
    的頭像 發(fā)表于 08-30 12:26 ?666次閱讀
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的隨機數(shù)生成

    AT32講堂085 | 雅特力AT32 MCU HICK時鐘校準

    簡介AT32系列MCU內(nèi)部都有提供適合運行的內(nèi)部高速時鐘(HICK),其本質(zhì)就是內(nèi)置于芯片的RC振蕩器。在25℃下,其典型值頻率8MHz的精度由工廠校準到±1%,在-40到105℃,該內(nèi)部高速時鐘
    的頭像 發(fā)表于 08-30 12:26 ?750次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>085 | 雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK時鐘校準

    如何在雅特力AT32 MCU上創(chuàng)建IAP應用程序

    概述AT32CANIAP快速使用方法使用CAN進行IAP升級,此示例使用PC上位軟件(IAP_Programmer.exe)通過一個USB轉(zhuǎn)CAN的橋接設(shè)備和目標板進行通信,IAPDemo和橋接設(shè)備
    的頭像 發(fā)表于 05-20 08:15 ?1189次閱讀
    如何在雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上創(chuàng)建IAP應用程序

    芯海通用 MCU 應用筆記 :CS32F103 系列 MCU IAP 升級指南

    本應用筆記旨在幫助指導用戶針對芯海 CORTEX-M3 MCU CS32F103 系列單片機 IAP 應用的快速開發(fā)。本應用筆記實現(xiàn)了 CAN 和 USART 兩種接口方式來開發(fā) IAP 應用,協(xié)議
    發(fā)表于 05-16 11:40

    HyperLynx入門指南

    HyperLynx入門指南
    發(fā)表于 05-06 10:17 ?4次下載

    雅特力AT32 MCU與SEGGER攜手合作,開發(fā)量產(chǎn)事半功倍

    近日,雅特力與SEGGER共同宣布J-Link仿真調(diào)試器與Flasher在線燒錄器全面支持AT32 MCU產(chǎn)品,SEGGER工具鏈的加持使AT32 MCU開發(fā)如虎添翼。 雅特力自201
    的頭像 發(fā)表于 02-23 10:27 ?443次閱讀

    雅特力AT32 MCU與SEGGER攜手合作,開發(fā)量產(chǎn)事半功倍

    近日,雅特力與SEGGER共同宣布J-Link仿真調(diào)試器與Flasher在線燒錄器全面支持AT32MCU產(chǎn)品,SEGGER工具鏈的加持使AT32MCU開發(fā)如虎添翼。雅特力自2018年對外銷售以來
    的頭像 發(fā)表于 02-22 08:13 ?515次閱讀
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>與SEGGER攜手合作,開發(fā)量產(chǎn)事半功倍
    主站蜘蛛池模板: 五月激情婷婷综合| 三级成人影院| 能可以直接看的av网址| 毛片一区| 看日本黄色大片| 国产精品你懂的在线播放| 爱爱免费小视频| 天天夜约| 成年香蕉大黄美女美女| 91最新网站免费| 欧美日日日| 超碰v| 看视频免费网站| 乱色伦短篇小说| 午夜欧美电影| 亚洲狠狠操| 色聚网久久综合| 久青草国产手机在线视频| 国产三级在线看| 黄www色| 狠狠色丁香久久综合婷婷| www.色播| 99se亚洲综合色区| www在线小视频免费| 天天曰天天干天天操| 福利视频自拍| 男女性接交无遮挡免费看视频| 亚欧美色| 久久99久久精品免费思思6| 亚洲精品午夜视频| 69japanese日本100| 狠狠色噜噜狠狠狠狠五月婷| 特级毛片aaaa级毛片免费| 久久久噜噜噜www成人网| 午色影院| 岛国大片在线播放| 亚洲国产高清人在线| 美剧免费在线观看| 天天干干干干| 亚洲欧美视频网站| 视频在线欧美|