找回密码
 立即注册
楼主: 乘风飞扬

CAN总线标准帧扩展帧收发例子-C语言与汇编

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-05-12 09:57:32

0

主题

22

回帖

134

积分

注册会员

积分
134
发表于 2024-6-28 18:53:48 | 显示全部楼层
屠龙刀板就可以实现CAN吧

点评

可以,自己要焊上 CAN 的收发器  详情 回复 发表于 2024-6-28 20:12
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:112
  • 最近打卡:2025-06-29 00:35:48

741

主题

1万

回帖

1万

积分

管理员

积分
17198
发表于 2024-6-28 20:12:57 | 显示全部楼层
阿白*** 发表于 2024-6-28 18:53
屠龙刀板就可以实现CAN吧

可以,自己要焊上 CAN 的收发器
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:23
  • 最近打卡:2025-06-24 10:20:11

0

主题

16

回帖

97

积分

注册会员

积分
97
发表于 2024-8-28 14:17:46 | 显示全部楼层
请问 STC32G 的 CAN 通讯模块,在通讯的过程中,如何判断帧数据被正确发送,也就是说网络上至少有一个设备接收了该帧数据,以此来判断接收方设备是否在线
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-06-28 21:18:20
已绑定手机

40

主题

2079

回帖

7167

积分

论坛元老

积分
7167
发表于 2024-8-28 18:18:36 | 显示全部楼层
ahwh*** 发表于 2024-8-28 14:17
请问 STC32G 的 CAN 通讯模块,在通讯的过程中,如何判断帧数据被正确发送,也就是说网络上至少有一个设备 ...

CAN总线通信需要总线上至少有2个节点,才能正常收发。
一个节点发送时,至少有另一个节点进行应答,数据才能正常发出,

否则会产生总线错误,增加错误计数。
错误计数超过255就会进入BUS-OFF,无法再进行收发。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:447
  • 最近打卡:2025-06-29 08:38:55

3

主题

85

回帖

559

积分

高级会员

积分
559
发表于 2024-8-29 06:56:52 | 显示全部楼层
深度学习一下{:5_332:}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:371
  • 最近打卡:2025-06-29 18:01:55
已绑定手机

21

主题

488

回帖

917

积分

高级会员

积分
917
发表于 2024-8-29 08:18:57 | 显示全部楼层
乘风*** 发表于 2024-1-8 16:23
做CAN总线通信的话,R79,R80需要断开。

我当时就掉这个坑里了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:23
  • 最近打卡:2025-06-24 10:20:11

0

主题

16

回帖

97

积分

注册会员

积分
97
发表于 2024-8-29 13:25:17 | 显示全部楼层
乘风*** 发表于 2024-8-28 18:18
CAN总线通信需要总线上至少有2个节点,才能正常收发。
一个节点发送时,至少有另一个节点进行应答,数据才 ...

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-06-28 21:18:20
已绑定手机

40

主题

2079

回帖

7167

积分

论坛元老

积分
7167
发表于 2024-8-29 17:24:42 | 显示全部楼层
ahwh*** 发表于 2024-8-29 13:25
谢谢指教,我是做检测的,有个问题想请教一下:如果接收方不在线或不工作了,导致报文无法被正确接收,这 ...

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

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:23
  • 最近打卡:2025-06-24 10:20:11

0

主题

16

回帖

97

积分

注册会员

积分
97
发表于 2024-8-30 13:04:37 | 显示全部楼层
STC32G 的 CAN 发送命令寄存器 TR 置位后,
到 RS 寄存器的 TS 正在发送状态位被置位之间有一段时间延时,
实测大约100个NOP左右,这给发送完成判断带来了一点麻烦,
中间要加一个延时才能可靠判断 TS 的状态位,
不知道实际情况是不是这样
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-06-28 21:18:20
已绑定手机

40

主题

2079

回帖

7167

积分

论坛元老

积分
7167
发表于 2024-8-30 14:26:41 | 显示全部楼层
ahwh*** 发表于 2024-8-30 13:04
STC32G 的 CAN 发送命令寄存器 TR 置位后,
到 RS 寄存器的 TS 正在发送状态位被置位之间有一段时间延时,
...

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

截图202408301425568818.jpg

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-29 21:58 , Processed in 0.122912 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表