CAN总线学习(四)错误处理 STM32CAN外设一

目录

CAN总线学习(四)

一、CAN总线错误处理

1.1 错误类型

  • 错误一共有五种:位错误、填充错误、CRC错误、格式错误、应答错误
  • 错误帧一旦产生,当前的数据就被破坏了,所有的设备都停止发送数据,等待总线空闲之后重新依次发送

1.2 错误状态

  • 主动错误状态的设备正常参与同行并在检测到错误时发出主动错误帧
  • 被动错误状态的设备正常参与同行并在检测到错误时只能发出被动错误帧
  • 总线关闭状态的设备不能参与通信
  • 每个设备内部管理一个TEC(发送错误计数)和REC(接收错误计数),根据TEC和REC的值确定自己的状态

1.3 错误计数器

  • ACK错误示例,只连接一个设备就会产生(没有人回答)

    1. 设备处于主动错误状态,发送标准数据帧,正常传输

    2. 设备处于主动错误状态,发送标准数据帧,检测到ACK错误

    3. 设备处于被动错误状态,发送标准数据帧,检测到ACK错误

  • 由于被动错误状态存在8位的延迟,所以主动错误状态的设备总能优先抢占到总线

二、STM32 CAN外设简介

*STM32内置bxCAN外设(CAN控制器,需要搭配TJA1050之类的CAN收发器才能正常工作),支持CAN2.0A和2.0B,可以自动发送CAN报文和按照过滤器自动接收指定CAN报文,程序只需要处理报文数据而无需关注总线的电平细节

  • 波特率最高可达1Mbps(支持高速CAN)
  • 3个可配置有优先级的发送邮箱(3个缓冲区)
  • 2个3级深度的接受FIFO(6个接收缓冲区)
  • 14个过滤器组(互联型28个)
  • 特色功能:事件触发通信、自动离线恢复、自动唤醒、禁止自动重传、接受FIFO溢出处理方式可配置、发送优先级可配置、双CAN模式
  • STM32F103C8T6资源:CAN1

2.1 CAN网络拓扑结构

  • 在STM32中USB和CAN是无法同时使用的

2.2 CAN收发器电路

  • 电源引脚附近加电容的作用:去耦,防止电源电压突变
  • 电阻阻值121代表12后面加1和0,就是120Ω
  • 如果有些单片机没有内置CAN控制器,就会使用SJA1000芯片作为CAN控制器

附学习参考网址

  1. CAN总线入门教程-全面细致 面包板教学 多机通信

欢迎大家有问题评论交流 (* ^ ω ^)

相关推荐
Ha_To2 分钟前
2025.12.19 OSPF
运维·服务器·网络
MicroTech20253 分钟前
隐私计算与区块链融合:微算法科技(NASDAQ MLGO)构建新一代区块链网络的创新实践
网络·科技·区块链
秦奈4 分钟前
Unity复习学习笔记(七):NGUI
笔记·学习·unity
行业探路者5 分钟前
网站二维码的全解析与使用技巧分享
大数据·人工智能·学习·产品运营·软件工程
晨欣6 分钟前
[eBPF硬核] Gemini阿吉学习笔记:Tetragon企业版两类核心日志 & 冷热数据分流架构设计 & 学习资源推荐
笔记·学习·云原生·云安全·ebpf·谷歌gemini
草莓熊Lotso9 分钟前
Python 流程控制完全指南:条件语句 + 循环语句 + 实战案例(零基础入门)
android·开发语言·人工智能·经验分享·笔记·后端·python
神的孩子都在歌唱11 分钟前
eNSP 中使用 NAT 地址池实现内网出网转换
网络
加勒比之杰克11 分钟前
【操作系统原理】进程间通信之管道
网络·管道·ipc
zore_c12 分钟前
【数据结构】队列——超详解!!!(包含队列的实现)
c语言·网络·数据结构·c++·笔记·算法·链表
詩不诉卿12 分钟前
超简单stm32cubemx+lwip+yt8512c工程搭建记录
stm32·单片机·嵌入式硬件