阿白凌坤 发表于 2024-6-28 18:53:48

屠龙刀板就可以实现CAN吧

神农鼎 发表于 2024-6-28 20:12:57

阿白凌坤 发表于 2024-6-28 18:53
屠龙刀板就可以实现CAN吧

可以,自己要焊上 CAN 的收发器

ahwhlzg 发表于 2024-8-28 14:17:46

请问 STC32G 的 CAN 通讯模块,在通讯的过程中,如何判断帧数据被正确发送,也就是说网络上至少有一个设备接收了该帧数据,以此来判断接收方设备是否在线

乘风飞扬 发表于 2024-8-28 18:18:36

ahwhlzg 发表于 2024-8-28 14:17
请问 STC32G 的 CAN 通讯模块,在通讯的过程中,如何判断帧数据被正确发送,也就是说网络上至少有一个设备 ...
CAN总线通信需要总线上至少有2个节点,才能正常收发。
一个节点发送时,至少有另一个节点进行应答,数据才能正常发出,
否则会产生总线错误,增加错误计数。
错误计数超过255就会进入BUS-OFF,无法再进行收发。

LoveAmanda 发表于 2024-8-29 06:56:52

深度学习一下{:5_332:}

llyymm 发表于 2024-8-29 08:18:57

乘风飞扬 发表于 2024-1-8 16:23
做CAN总线通信的话,R79,R80需要断开。

我当时就掉这个坑里了{:4_238:}

ahwhlzg 发表于 2024-8-29 13:25:17

乘风飞扬 发表于 2024-8-28 18:18
CAN总线通信需要总线上至少有2个节点,才能正常收发。
一个节点发送时,至少有另一个节点进行应答,数据才 ...

谢谢指教,我是做检测的,有个问题想请教一下:如果接收方不在线或不工作了,导致报文无法被正确接收,这种情形下,如何判断报文没有被接收,另外,CAN模块是否不断重发,如果是,CAN发送通道就阻塞了,如何将CAN模块复位,以便进行后续的工作,谢谢

乘风飞扬 发表于 2024-8-29 17:24:42

ahwhlzg 发表于 2024-8-29 13:25
谢谢指教,我是做检测的,有个问题想请教一下:如果接收方不在线或不工作了,导致报文无法被正确接收,这 ...

如果发生报文时没有节点进行应答接收,就会产生总线错误,错误计数增加(+8)。
CAN控制器在发送产生错误的情况下会自动进行重发,如果还是没有应答,继续产生总线错误,错误计数继续增加。
错误计数超过255就会进入BUS-OFF模式,不再进行收发。
可以通过清除RESET MODE状态位恢复正常工作模式。

ahwhlzg 发表于 2024-8-30 13:04:37

STC32G 的 CAN 发送命令寄存器 TR 置位后,
到 RS 寄存器的 TS 正在发送状态位被置位之间有一段时间延时,
实测大约100个NOP左右,这给发送完成判断带来了一点麻烦,
中间要加一个延时才能可靠判断 TS 的状态位,
不知道实际情况是不是这样

乘风飞扬 发表于 2024-8-30 14:26:41

ahwhlzg 发表于 2024-8-30 13:04
STC32G 的 CAN 发送命令寄存器 TR 置位后,
到 RS 寄存器的 TS 正在发送状态位被置位之间有一段时间延时,
...

通过ISR寄存器的TI位判断是否发送完成:



页: 1 2 [3] 4
查看完整版本: CAN总线标准帧扩展帧收发例子-C语言与汇编