硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7486|回复: 3
收起左侧

[有问必答] stm32中使用CAN通信时,通信错误是怎么处理的?

[复制链接]

14

主题

11

回帖

53

积分

初级会员

积分
53
发表于 2020-4-24 09:20:46 | 显示全部楼层 |阅读模式
最近在用CAN通信,看到错误管理和错误帧这一部分,不理解。
手册上说错误管理完全由硬件处理,是不是如果发生了错误,错误帧是由硬件自动发送的?
那么错误帧的接收呢?也是由硬件自动接收处理的?

还有stm32中的错误中断,是只要监测到总线上有错误就会触发中断吗?还是说只有本机发送引起的错误才会触发中断呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-4-24 10:05:47 | 显示全部楼层
CAN的错误类型很多的,有个专门的状态寄存器反馈这些的。程序要做的完美,需要根据这些状态做处理的。
回复

使用道具 举报

14

主题

11

回帖

53

积分

初级会员

积分
53
 楼主| 发表于 2020-4-24 13:20:32 | 显示全部楼层
eric2013 发表于 2020-4-24 10:05
CAN的错误类型很多的,有个专门的状态寄存器反馈这些的。程序要做的完美,需要根据这些状态做处理的。

我知道这个状态寄存器,可以读取这个寄存器的值,判断错误类型。
我想说的是CAN协议里面的错误帧,还区分主动错误和被动错误。我理解着错误帧的发送和接收都是硬件上自己完成的,而我们就是根据错误中断去读取错误类型再处理就可以了吧。

还有一个疑问就是,错误中断的触发,是只要本机监测到总线上有错误就会触发呢,还是说只是本机的发送引起的错误才会触发呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-4-24 14:13:04 | 显示全部楼层
bdjinger 发表于 2020-4-24 13:20
我知道这个状态寄存器,可以读取这个寄存器的值,判断错误类型。
我想说的是CAN协议里面的错误帧,还区 ...

我一直用的RL-CAN
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-17 05:01 , Processed in 0.036049 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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