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

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-08-29 09:07:00

0

主题

22

回帖

144

积分

注册会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:368
  • 最近打卡:2026-04-02 08:50:05

844

主题

1万

回帖

2万

积分

管理员

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:150
  • 最近打卡:2026-03-03 09:49:59
已绑定手机

0

主题

19

回帖

273

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:653
  • 最近打卡:2026-04-02 10:07:54
已绑定手机

52

主题

2542

回帖

8922

积分

论坛元老

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

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:684
  • 最近打卡:2026-04-02 08:56:09

3

主题

74

回帖

1116

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:588
  • 最近打卡:2026-04-02 07:05:27
已绑定手机

24

主题

527

回帖

1255

积分

金牌会员

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

我当时就掉这个坑里了
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:150
  • 最近打卡:2026-03-03 09:49:59
已绑定手机

0

主题

19

回帖

273

积分

中级会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:653
  • 最近打卡:2026-04-02 10:07:54
已绑定手机

52

主题

2542

回帖

8922

积分

论坛元老

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:150
  • 最近打卡:2026-03-03 09:49:59
已绑定手机

0

主题

19

回帖

273

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:653
  • 最近打卡:2026-04-02 10:07:54
已绑定手机

52

主题

2542

回帖

8922

积分

论坛元老

积分
8922
发表于 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, 2026-4-2 22:47 , Processed in 0.122285 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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