||
標(biāo)準(zhǔn)化流程與關(guān)鍵步驟是高效開發(fā)的基礎(chǔ)。本文拆解五大核心步驟,指導(dǎo)工程師系統(tǒng)化推進(jìn)CAN接口開發(fā),確保項(xiàng)目順利實(shí)施。
在Air780EPM上開發(fā)CAN接口,需要注意哪些問題?
本文將分享CAN接口硬件參考設(shè)計(jì),以及相關(guān)軟件開發(fā)示例、問題排查要點(diǎn)等內(nèi)容。
資料中心文檔庫也在持續(xù)更新中,有需要的朋友可以查閱最新資料。
CAN接口硬件設(shè)計(jì)詳見:https://docs.openluat.com/air780epm/luatos/hardware/design/can/
LuatOS開發(fā)API文檔詳見:https://docs.openluat.com/air780epm/luatos/api/core/can/
我們從以下五個(gè)方面,一起來了解在Air780EPM上開發(fā)CAN接口的相關(guān)要點(diǎn):
CAN接口概述
硬件設(shè)計(jì)注意事項(xiàng)
軟件開發(fā)注意事項(xiàng)
應(yīng)用場景與參考設(shè)計(jì)
典型問題排查
大家在實(shí)際應(yīng)用中,可結(jié)合項(xiàng)目場景靈活選擇合適方案。
一、CAN接口概述
CAN(Controller Area Network)是一種被廣泛應(yīng)用于汽車和工業(yè)控制領(lǐng)域的串行通信協(xié)議。它支持多主節(jié)點(diǎn)通信,具有高可靠性、實(shí)時(shí)性以及錯誤檢測能力。
Air780EPM支持CAN 2.0A/B標(biāo)準(zhǔn),允許最高1Mbps的通信速率。
1.2 核心功能與協(xié)議
1)支持協(xié)議:
CAN 2.0A/B標(biāo)準(zhǔn),兼容標(biāo)準(zhǔn)幀(11 位ID)和擴(kuò)展幀(29 位ID)。
注意!Air780EPM不支持CAN FD標(biāo)準(zhǔn)。
2)通信速率:
最高支持1Mbps(如需更高帶寬需外接CAN FD收發(fā)器)。
3)物理層依賴:
需外接CAN收發(fā)器(如川土微的CA-IF1051S/VS),通過GPIO引腳復(fù)用實(shí)現(xiàn)差分信號傳輸(CAN_H/CAN_L)。
1)GPIO映射:
CAN_TXD(發(fā)送):默認(rèn)映射到GPIO26(GPIO13是另一組映射選擇)。
CAN_RXD(接收):默認(rèn)映射到GPIO25(GPIO12是另一組映射選擇)。
CAN_STB(待機(jī)模式控制):默認(rèn)映射到GPIO28(GPIO14是另一組映射選擇)。
▼ 關(guān)于CAN_STB信號 ▼
1)低功耗模式:
當(dāng)系統(tǒng)需要進(jìn)入節(jié)能狀態(tài)時(shí)(如汽車熄火或設(shè)備待機(jī)),CAN_STB信號可被觸發(fā)(高電平或低電平,取決于硬件設(shè)計(jì)),使CAN收發(fā)器進(jìn)入低功耗待機(jī)模式。此時(shí),收發(fā)器停止正常通信以降低能耗。
2)喚醒功能:
當(dāng)需要恢復(fù)通信時(shí),CAN_STB信號狀態(tài)切換(如拉低或拉高),將收發(fā)器從待機(jī)模式喚醒,重新激活CAN總線的數(shù)據(jù)傳輸。
02. 硬件控制1)收發(fā)器啟用/禁用:
在某些CAN收發(fā)器芯片(如TI的SN65HVD230)中,STB(Standby)引腳直接控制收發(fā)器的工作狀態(tài)。
例如:
STB = 高電平:收發(fā)器關(guān)閉,僅消耗微量靜態(tài)電流。
STB = 低電平:收發(fā)器正常工作,可收發(fā)CAN信號。
2)系統(tǒng)集成:
在復(fù)雜系統(tǒng)中,CAN_STB可能由主控制器(如MCU)輸出,協(xié)調(diào)多個(gè)CAN節(jié)點(diǎn)的電源狀態(tài),優(yōu)化整體能耗。
03. Air780EPM開發(fā)板設(shè)計(jì)注意!Air780EPM開發(fā)板,為了電平轉(zhuǎn)換的需要,在Air780EPM側(cè),CAN_STB信號,實(shí)際需要作如下反向設(shè)計(jì):
1)STB = 低電平:收發(fā)器關(guān)閉,僅消耗微量靜態(tài)電流。
2)STB = 高電平:收發(fā)器正常工作,可收發(fā)CAN信號。
1.4 電源與電平
CAN收發(fā)器邏輯電平需與Air780EPM的GPIO電平匹配(默認(rèn) 3.0V);CA-IF1051VS:支持IO邏輯電平獨(dú)立供電。
Air780EPM開發(fā)板為例:
可使用Air780EPM的PIN99:Vref(GPIO23保持高電平輸出)與其連接,從而保證CA-IF1051VS與Air780EPM的IO電平一致,不再需要額外的電平轉(zhuǎn)換電路。
2.1 外部電路設(shè)計(jì)
1)CAN收發(fā)器選型:
推薦使用川土微CA-IF1051S/VS,支持3.0V邏輯電平,抗干擾能力強(qiáng)。
確保收發(fā)器與Air780EPM的GPIO電平匹配(如VREF=3.0V)。
2)終端電阻:
必加:在CAN總線兩端各接入120Ω終端電阻,防止信號反射。
位置:靠近CAN收發(fā)器的CAN_H和CAN_L引腳。
3)布線與抗干擾:
差分對走線:CAN_H和CAN_L需走差分線,長度對稱,間距10-15mil。
遠(yuǎn)離干擾源:避免靠近電源線、高頻信號線,增加地線屏蔽。
ESD防護(hù):在CAN接口處添加TVS二極管(如PESD3V3YB4),靠近接口布局。
2.2 電源與復(fù)位
1)電源穩(wěn)定性:
CAN收發(fā)器需獨(dú)立供電,通常為5V,但需注意您所選擇的CAN收發(fā)器型號是否需要通過電平轉(zhuǎn)換與Air780EPM的3.0V IO電平一致。
比如:CA-IF1051S需要增加電平轉(zhuǎn)換電路,而CA-IF1051VS有IO電平獨(dú)立供電,無需再加電平轉(zhuǎn)換電路。
2)使用去耦電容(如100nF和10μF)穩(wěn)定電源。
1)總線長度:
50米內(nèi):1Mbps速率下可正常通信。
超長距離:需降速至125kbps或添加中繼器。
2)GPIO沖突:
確保CAN_TXD/CAN_RXD/CAN_STB引腳,初始化為CAN接口功能。
三、 軟件開發(fā)注意事項(xiàng)
1)初始化CAN接口:
2)發(fā)送CAN幀:
3)接收CAN幀:
1)波特率匹配:
所有CAN節(jié)點(diǎn)的波特率必須一致,否則通信失敗。
2)資源限制:
單幀最大8字節(jié),需分包傳輸大數(shù)據(jù)。
頻繁發(fā)送可能占用CPU資源,建議使用DMA或輪詢。
3)錯誤恢復(fù):
監(jiān)控錯誤計(jì)數(shù)器,超過閾值時(shí)重啟接口:
1)工業(yè)物聯(lián)網(wǎng):
如:設(shè)備狀態(tài)監(jiān)測、傳感器數(shù)據(jù)采集。
2)智能電網(wǎng):
如:遠(yuǎn)程抄表、設(shè)備控制。
4.2 方案優(yōu)化建議
1)硬件層面:
增加信號屏蔽層或縮短總線長度以減少干擾。
2)軟件層面:
采用DMA傳輸減少CPU占用;實(shí)現(xiàn)心跳包機(jī)制檢測鏈路狀態(tài)。
4.3 硬件參考設(shè)計(jì)
https://gitee.com/openLuat/LuatOS-Air780EPM/blob/master/demo/can/main.lua
1)檢查清單:
確認(rèn)CAN收發(fā)器電源和接地正常。
終端電阻是否正確安裝。
管腳初始化配置與硬件手冊一致例如:
CAN_TXD/CAN_RXD/CAN_STB引腳
波特率設(shè)置是否匹配其他節(jié)點(diǎn)。
2)工具輔助:
使用CAN分析儀(如Vector CANalyzer)捕獲信號。
5.2 數(shù)據(jù)丟失或亂碼
可能如下原因?qū)е拢?/font>
波特率不匹配導(dǎo)致幀同步失。
總線干擾或信號完整性問題(如走線過長、未加終端電阻);
發(fā)送間隔過短導(dǎo)致緩沖區(qū)溢出。
今天的內(nèi)容就分享到這里了~