出其而亮 发表于 2013-4-28 14:54:26

CAN发送和接收的一个问题 (第一次发帖)


初学CAN,昨天一直纠结于是否可以将CTXD和CRXD直接相连,以实现自身收发,实际验证不行,为了找到不行的原因,
今天早上抓了个图,是两个节点的通信,本机接收到数据以后就发送ID = 1 数据场都是0x55的标准数据帧。
CTXD发送的时候,CRXD与其保持一致,这是什么道理?苦于找不到相关资料与这个现象印证,CAN不是全双工的吗?
是不是不同厂家的CAN控制器的做法不一样,我用的是NXP的CAN控制器,求高手指点。
图1:接收数据时CTXD和CRXD的时序
图2:发送数据时CTXD和CRXD的时序

shangdawei 发表于 2013-4-29 13:17:21

看看这个文档是否有用 ?

CANforbeginer



lnskngdc 发表于 2013-4-29 14:24:52

有个LOOP模式,你仔细看看datasheet试试

x11223y 发表于 2013-4-29 14:29:26

CAN 有全双工模式?
CAN是有两根线,不过是差分线吧,不是和串口一样,一个发送,一个接受的

出其而亮 发表于 2013-4-29 14:45:44

x11223y 发表于 2013-4-29 14:29 static/image/common/back.gif
CAN 有全双工模式?
CAN是有两根线,不过是差分线吧,不是和串口一样,一个发送,一个接受的 ...

收发器出来的信号才是差分信号,只能是半双工,这是毋庸置疑了,但控制器到收发器之间是CTXD和CRXD,仅从总线电气特性看,是完全可以实现全双工的(CTXD只管发,CRXD只管收,当然就CAN来说,两者还要能监控总线),但我测试不是这样的,结果如图2所示,苦于找不到资料说明,纠结于此呀。

出其而亮 发表于 2013-4-29 14:55:31

lnskngdc 发表于 2013-4-29 14:24 static/image/common/back.gif
有个LOOP模式,你仔细看看datasheet试试

恩,是有回环模式,我是想了解CAN的收发时序,故测试到图二所示的现象,发送的时候,接收端出现和发送端相似的时序,所以CTXD和CRXD短接的话是不可以滴,但我不知道原因,是控制器明确规定,发送时,RXD要监听总线吗?可怎么个监听法呢?

出其而亮 发表于 2013-4-29 14:59:40

shangdawei 发表于 2013-4-29 13:17 static/image/common/back.gif
看看这个文档是否有用 ?

CANforbeginer

谢谢,我先看看,搞懂了,就发上来。

出其而亮 发表于 2013-7-23 22:26:22

原因是:CAN总线监听,就是在发送一个位时,需要在RXD端产生反馈,以便报文ID仲裁。正常发送时,接收器不储存接受到的报文,只是在发送完毕收到应答位后而进入接收模式;而自发自收,必须在自发自收模式下,发送时会同时打开接收器,这时发送的帧接收器会存储。

diskcopy 发表于 2013-7-23 23:31:47

用的哪款单片机?

出其而亮 发表于 2013-7-24 18:20:46

NXP的LPC1700   但应该是所有符合CAN2.0规范的都要满足这种特性。

xiefy21 发表于 2013-8-13 23:34:25

mark……
顶一个…

奋进的蚂蚁 发表于 2014-4-18 10:56:23

所有符合2.0的都这样?有时间要测试一下
页: [1]
查看完整版本: CAN发送和接收的一个问题 (第一次发帖)