關於CAN自發自收(全雙工)的問題 —— 遷移帖


因為amobbs越來越封閉,所以將早些年上面發的帖子挑選一些,放到這里。

 

初學CAN,昨天一直糾結於是否可以將CTXD和CRXD直接相連,以實現自身收發,實際驗證不行,為了找到不行的原因,
今天早上抓了個圖,是兩個節點的通信,本機接收到數據以后就發送ID = 1 數據場都是0x55的標准數據幀。
CTXD發送的時候,CRXD與其保持一致,這是什么道理?苦於找不到相關資料與這個現象印證,CAN不是全雙工的嗎?
是不是不同廠家的CAN控制器的做法不一樣,我用的是NXP的CAN控制器,求高手指點。
圖1:接收數據時CTXD和CRXD的時序
圖2:發送數據時CTXD和CRXD的時序

 

接收數據時CTXD和CRXD的時序

接收數據時CTXD和CRXD的時序

 

發送數據時CTXD和CRXD的時序

發送數據時CTXD和CRXD的時序
 
 
 
原因是:CAN總線有監聽功能,就是在發送一個位時,需要在RXD端產生反饋,以便報文ID仲裁。正常發送時,接收器不儲存接受到的報文,只是在發送完畢收到應答位后而進入接收模式;而自發自收,必須在自發自收模式下,發送時會同時打開接收器,這時發送的幀接收器會存儲,因此CAN是單雙工。
 
詳細了解,請參看 CANforbeginer.pdf


免責聲明!

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



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