基于STM32,低速CAN通信的收發(fā)器芯片選擇問題
本電路系統(tǒng)第一版測試電路使用的CAN收發(fā)器芯片為philips公司生產(chǎn)的TJA1050,電路參考了戰(zhàn)艦STM32開發(fā)版的電路,如下圖。
電路測試沒有問題,但是性能不能滿足工程要求。經(jīng)測試在STM32F103C8T6芯片上,工作于24MHZ,在代碼中設置SJW,BS2,BS1,BRP分別為1,8,7,125時可以實現(xiàn)12kbps的速率,可正常發(fā)送與接收數(shù)據(jù)。在外部條件最優(yōu)的前提下,12kbps約對應于5KM的理論通信距離,這顯然距離CAN的5kbps對應的10KM距離還有一定差距?,F(xiàn)如今,最低通信速率為1,8,7,128配置下的波特率,如果再低則無法正常通信。為達到更遠通信距離的目的,我們必須想辦法將通信速率降下來。
開始以為是MCU有問題,后來換了其他型號,發(fā)現(xiàn)問題一直存在。查資料之后,發(fā)現(xiàn)是CAN收發(fā)器限制了通信速率。
策略:尋策略:找其他替代CAN收發(fā)器
據(jù)在網(wǎng)上查詢,收發(fā)芯片都有速度限制
TJA1050 >60kb/s此數(shù)據(jù)為官網(wǎng)datasheet提供數(shù)據(jù),貌似有問題,親測12kbps通信無問題
TJA1040>40kb/s此芯片沒實際測試過,具體限制未知
MCP2551 >16kb/s此芯片沒實際測試過,具體限制未知
65HVD230 >60kb/s此芯片沒實際測試過,具體限制未知
SN65HVD232兼容3.3VI/O,參數(shù)未知,未提到速度限制,或者是我沒找到。
TJA1054T<125kb/s速度滿足,但最多只能連接32節(jié)點,電路復雜
CTM1050 40kbps—1Mbps可接110節(jié)點,但有低速限制,未實測
猜測速度與連接節(jié)點之間相互限制,高速收發(fā)器可連接110節(jié)點,但無法實現(xiàn)低速;低速收發(fā)器可實現(xiàn)低速,卻不能連接過多節(jié)點。據(jù)網(wǎng)上說,PCA82C250等老版芯片無速度限制,但不知連接節(jié)點數(shù)目和抗干擾性能如何。
后某網(wǎng)友提示,其親測PCA82C250沒有低速限制,且兼容3.3VI/O。遂購買PCA82C250和PCA82C251各5片,測試,PCA82C251無法兼容3.3VI/O,但是PCA82C250兼容!將PCA82C250直接替換TJA1050(就在第一版終端測試電路上),測試可正常收發(fā)數(shù)據(jù)。由于第一版電路下載比較特殊,在替換之后無法下載。故,未測試PCA82C250是否能實現(xiàn)低速CAN收發(fā)。
據(jù)查詢,許多CAN收發(fā)器要求TXD和RXD端為5VI/O,如PCA82C250、PCA82C251等。若要與STM32連接,需接隔離器,或者說是電平轉換器。
最后,經(jīng)過實測,PCA82C250可以兼容3.3VI/O(數(shù)據(jù)資料提示不兼容,實測兼容),PCA82C251不兼容3.3VI/O
另外,測試發(fā)現(xiàn)在低速情況下(10Kbps)以TJA1050、PCA82C250作為收發(fā)芯片,TJA1050端可收數(shù)據(jù),不能發(fā)。MCU同為STM32C8T6,如果收發(fā)芯片兩端均為PCA82C250,測試5kbps可相互通信。未測試更低速率情況是否可以正常通信,但250的datasheet上沒有寫速率限制,理論上應該是0--1Mbps。
其他經(jīng)驗:
LOOPBACK正常但NORMAL不正常。這個是由于CAN總線在發(fā)送出錯達到一定數(shù)量的時候(128?)會自動關閉這個節(jié)點來保護整個總線不被堵死。
如果只有一個節(jié)點的話,一下子就busoff了,當然是看不到波形的。我用的設置程序帖下面,LZ可以參考一下,已經(jīng)調通了。另外CAN_InitStructure.CAN_ABOM=DISABLE;這句是我當時busoff的主因。