stm32:CAN通讯

目录

介绍

物理层​编辑

差分信号

总线网络

协议层

CAN的 帧/报文 种类

数据帧

远程帧(遥控帧)

错误帧

过载帧

帧间隔

总线仲裁

位同步

数据同步

波特率

stm32的CAN外设

工作模式

测试模式

功能框图

时序

标准时序

例子  环回静默模式测试

寄存器代码

HAL版本


介绍

一种功能丰富的车用总线标准。被设计用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信

它基于消息传递协议,设计之初在车辆上复用通信线缆,以降低铜线使用量,后来也被其他行业所使用

CAN拥有了良好的弹性调整能力,可以在现有网络中增加节点而不用在软、硬件上做出调整。除此之外,消息的传递不基于特殊种类的节点,增加了升级网络的便利性

物理层

  • 一个CAN控制器
    • 一般MCU提供,stm32内部提供了一个can控制器
  • 一个CAN收发器
    • 收发器一般需要专门芯片提供,例如PD1050S收发器芯片
  1. 发数据
    1. 控制器把要发送的二进制编码通过CAN_Tx线发送到收发器
    2. 收发器会把逻辑电平信号转化为差分信号,通过差分信号线CAN_High和CAN_Low线输出到CAN总线网络
  2. 收数据
    1. 收发器把总线上的CAN_High和CAN_Low信号转化成普通的逻辑电平信号
    2. 通过CAN_Rx输出到控制器中

差分信号

差分传输是一种信号传输的技术,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反,简单来说就是一高一低,互相相反

信号接收端比较这两个电压的差值来判断发送端发送的逻辑状态,插值为-0.5--0.05表示0,插值为1.5--3表示1

在电路板上,差分走线必须是等长、等宽、紧密靠近、且在同一层面的两根线。

总线网络

当CAN线上接入多个设备时,就构成了CAN总线网络,根据接法不同,总线网络分2种 

  • 闭环总线网络
    • 速度快,距离近
  • 开环总线网络
    • 速度慢,距离远

协议层

CAN的 帧/报文 种类

特点:

  1.  CAN总线是广播类型的总线
  2. 这意味着所有节点都可以侦听到所有传输的报文
  3. 无法将报文单独发送给指定节点
  4. 所有节点都将始终捕获所有报文
  5. 但是CAN硬件能够提供本地过滤功能,让每个节点对报文有选择性地做出响应
  6. CAN使用短报文 – 最大实用负载是94位
  7. 可以认为报文是通过内容寻址,也就是说,报文的内容隐式地确定其地址
  8. CAN总线上有5种不同的报文类型
    1. 数据帧,远程帧,错误帧,过载帧,帧间隔

数据帧

 

  • 数据帧是最常见的报文类型,用于发送单元向接收单元发送数据
  • 有标准格式与扩展格式。标准格式有11位标识符,扩展格式有29位标识符
  •  仲裁段
    • 标识符位
      • 长度为11位,ID10~ID0,按照10-0的顺序进行传输
      • 是一个动能性的地址,CAN接收器通过标识符来过滤数据帧,表示自己的id
      • 不同节点的标识符是不能相同的
    • 远程发送请求位
      • 用于区分该帧是数据帧还是远程帧
      • 显性信号为0表示数据帧,远程帧为1
    • ssr位
      • 替代RTR,隐性信号
    • ide位
      • 表示扩展帧还是标准帧
    • rtr位
      • 表示数据帧还是远程帧
  • 控制段
    • ide位
      • 区分标准格式与扩展格式
      • 显性电平时表示标准格式
      • 隐性电平时表示扩展格式
    • R1位RO位
      • 保留位
    • DLC
      • 表示报文中的数据段含有多少个字节
  • 数据段
    • 发送的数据,高位先行
  • crc段
    • 校验码
      • 用于校验传输的正不正确
      • 硬件自动生成
    • 界定符
      • 隐性位,表示校验码的结束
  • ACK段
    • 确认位
      • 隐性位
      • 接收端收到正确的CRC校验位后,把这一位置为显性位
    • 界定符
      • 隐性位,表示与后面的帧结束隔开

远程帧(遥控帧)

  • 远程帧用于接收单元向具有相同id的发送单元请求发送数据
  • 有标准格式与扩展格式。标准格式有11位标识符,扩展格式有29位标识符
  • 与数据帧相比没有数据段
    • DLC都为0
    • 其他和数据帧一样

错误帧

  • 错误帧当检测出错误时向其他单元通知错误的帧
  • 由硬件自动完成的,没有办法用软件来控制

过载帧

  • 过载帧并不常用,因为当今的CAN控制器会非常智能化地避免使用过载帧
  • 由硬件自动完成的,没有办法用软件来控制

帧间隔

  • 用于将数据帧及遥控帧与前面的帧分离开来的帧
  • 由硬件自动完成的,没有办法用软件来控制

总线仲裁

发送接收特点:

  1. CAN总线处于空闲状态的时候,最先发送消息的单元获得发送权
  2. 多个单元同时开始发送时,从仲裁段(报文id)的第一位开始进行仲裁
  3. 连续输出显
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值