Mic_chen

It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

因为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
posted on 2020-08-28 12:51  Mic_chen  阅读(2279)  评论(0编辑  收藏  举报