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

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

[复制链接]
已绑定手机

0

主题

22

回帖

93

积分

注册会员

积分
93
发表于 2024-9-2 10:19:36 | 显示全部楼层
乘风*** 发表于 2024-8-30 14:26
通过ISR寄存器的TI位判断是否发送完成:

万分感谢!这个完全可以,关于CAN还有两个问题请指教,一是RM复位后,CAN内部各寄存器的初始状态,在文档中没有说明,之前用过SJA1000,它对CAN在复位状态和工作状态都有详细说明;二是使用中发现在发送出错的情况下,发送错误计数器(TXERR)增加到0x32就不再增加了,也没有发现进入BUS-OFF(BS为1)的状态,谢谢
回复

使用道具 举报 送花

已绑定手机

6

主题

497

回帖

2546

积分

金牌会员

积分
2546
发表于 2025-7-8 20:44:26 | 显示全部楼层
感谢分享
学习
回复

使用道具 举报 送花

已绑定手机

6

主题

497

回帖

2546

积分

金牌会员

积分
2546
发表于 2025-7-21 22:30:36 | 显示全部楼层

学习
回复

使用道具 举报 送花

已绑定手机

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2026-7-21 21:44:43 | 显示全部楼层
请问

使用USBCAN-II V1.07和电脑连接,然后执行这个程序,为什么电脑无法收到报文?
用示波器连接CANH和CANL抓到的波形是这样的
波形.jpg
回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
发表于 2026-7-21 22:09:02 | 显示全部楼层
截图202607212208574134.jpg
回复

使用道具 举报 送花

已绑定手机

872

主题

1万

回帖

2万

积分

管理员

积分
25428
发表于 2026-7-21 22:09:45 | 显示全部楼层

好的,我已经查看了你引用的论坛帖子(TID 4762),并结合你提供的示波器截图进行分析。

示波器波形分析

从你提供的示波器截图来看,我帮你解读一下关键参数:

参数 数值 分析
时基 2.00ms/格 水平方向每格2ms
垂直刻度 2.00V/格 通道1每格2V
频率 89.83Hz 信号周期约11.13ms
脉宽 4.535μs 这个脉宽非常窄,与89.83Hz的周期不匹配
触发电平 1.20V 边沿触发,上升沿
采样率 500k次/秒 10k点采样

针对你的问题分析

你引用的帖子中,第3页 lrri* 用户问的是:

"使用USBCAN-II V1.07和电脑连接,然后执行这个程序,为什么电脑无法收到报文?用示波器连接CANH和CANL抓到的波形是这样的"

结合你的示波器截图,我分析可能的原因如下:

1️⃣ 波形幅度可能不足

  • CAN总线差分信号(CANH - CANL)的幅值通常应为 2V左右(CANH约3.5V,CANL约1.5V,差分约2V)
  • 你的示波器垂直刻度为 2.00V/格,触发电平 1.20V,如果只测了单端(CANH对GND),这个幅度看起来偏小
  • 建议:用示波器的 CH1测CANH,CH2测CANL,然后用 数学通道(M)做 CH1 - CH2,看差分信号是否正常

2️⃣ 波特率不匹配

  • 示波器显示频率 89.83Hz,这个频率对于CAN总线来说太低了
  • 典型的CAN波特率是 125kbps、250kbps、500kbps、1Mbps,对应的信号频率远高于89.83Hz
  • 建议:用示波器的 光标测量 功能,测量一个数据位的宽度,确认实际波特率
    • 例如 500kbps → 位宽 = 2μs
    • 例如 250kbps → 位宽 = 4μs
    • 你测到的 4.535μs 脉宽 比较接近 220kbps 左右,但需要确认是否真的是数据位

3️⃣ 收发器/终端电阻问题

  • 帖子中 乘风* 提到:做CAN总线通信时,R79、R80需要断开
  • 同时需要确保:
    • CAN收发器(如TJA1050)供电正常
    • CANH和CANL之间接有120Ω终端电阻(至少总线两端各一个)
    • 收发器的 STB/EN 引脚电平正确(TJA1050的S引脚需拉低才能正常工作)

4️⃣ 示波器触发设置

  • 你当前设置为 上升沿触发、1.20V,如果信号幅值不到1.20V,可能触发不稳定
  • 建议:将触发电平调到 1.00V 或更低,或者改为 下降沿触发 试试

建议的排查步骤

步骤 操作 预期结果
① 确认CAN收发器供电(5V或3.3V) 收发器VCC引脚电压正常
② 确认CANH/CANL之间接120Ω终端电阻 总线空闲时CANH≈2.5V,CANL≈2.5V
③ 用双通道测CANH和CANL,看差分信号 显性位时CANH>CANL,差分约2V
④ 用光标测量一个数据位的宽度,计算实际波特率 与程序配置的波特率一致
⑤ 检查R79/R80是否已断开(如帖子所述) 断开状态

如果你能提供更详细的波形截图(比如展开到每个数据位可见),我可以帮你进一步分析。或者告诉我你配置的CAN波特率是多少,我帮你核对一下。


🔍 搜索 "https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpos"

📌 相关论坛讨论

  1. 【实验箱已发出】陈桂友教授《USB型 1T 8051 单片机原理及应用-8H8K64U》学习打卡
  2. 部分较难问题需要帮忙分析的,可跟贴放上原帖链接通知我 | 新问题另外开贴
  3. 大佬们,官方isp与demo程序应用求助,显示连接失败

⏱️ 查找用时 12.8s | 总回答用时 23.4s

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-7 11:47 , Processed in 0.074172 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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