目录

  • 1 课程简介
    • 1.1 课程简介
    • 1.2 课程标准
    • 1.3 职业证书对接
    • 1.4 课程分工
  • 2 数据采集
    • 2.1 数据采集之数字量传感数据采集
    • 2.2 数据采集之模拟量传感数据采集
    • 2.3 数据采集之模拟量转换为数字量
    • 2.4 数据采集之开关量传感数据采集
  • 3 STM32微控制器基本外设应用开发
    • 3.1 STM32基础知识
    • 3.2 任务1 开发环境搭建和工程建立
    • 3.3 任务2 LED流水灯应用开发
    • 3.4 任务3 按键控制LED灯亮灭
    • 3.5 任务4 串行通信控制LED流水灯应用开发
    • 3.6 任务5 电池电量检测应用开发
  • 4 RS-485总线通信应用
    • 4.1 RS-485基本知识
    • 4.2 RS-485通信协议及网关通信协议
    • 4.3 Modbus通信协议
    • 4.4 任务1 案例分析及工程代码编写
    • 4.5 任务2 系统搭建及云平台项目创建
  • 5 CAN总线通信应用
    • 5.1 CAN总线基本知识
    • 5.2 CAN通信帧
    • 5.3 CAN控制器和收发器
    • 5.4 任务1 案例分析及工程代码编写
    • 5.5 任务2 系统搭建及云平台项目创建
    • 5.6 任务3 CAN通信数据抓包与解析
  • 6 BasicRF的无线通信应用
    • 6.1 BasicRF基础知识
    • 6.2 任务1创建工程项目
    • 6.3 任务2 温湿度节点数据采集
    • 6.4 任务3 火焰节点数据采集
    • 6.5 任务4 传感器节点组网
    • 6.6 任务5 传感数据汇聚
  • 7 WiFi数据通信
    • 7.1 WI-FI基础知识
    • 7.2 使用AT指令配置WI-FI工作模式
    • 7.3 WI-FI接入云平台
  • 8 NB-IoT联网通信
    • 8.1 NB-IoT技术简介
    • 8.2 利尔达NB-IoT模组介绍
    • 8.3 任务1 “智慧路灯”AT指令代码编写
    • 8.4 任务2.烧写智能路灯
    • 8.5 任务3NB-IoT接入云平台
  • 9 LoRa 通信技术
    • 9.1 基础知识
    • 9.2 项目分析与LoRa驱动移植
    • 9.3 任务2 LoRa温湿度传感器节点应用程序开发
    • 9.4 任务3 LoRa光照传感器节点数据采集
    • 9.5 任务4 LoRa网关节点汇聚传感器数据
    • 9.6 讨论
CAN通信帧
  • 1 知识介绍
  • 2 PPT
  • 3 学习视频
  • 4 随堂练习
  • 5 超级工程

一、CAN通信帧类型及帧格式

CAN 总线上的数据通信基于以下 5 种类型的通信帧,它们的名称与用途如表所示:第一是数据帧,用来发送单元向接受单元传送数据;第二是遥控帧,用于接收单元向具有相同ID的发送单元请求数据;第三是错误帧,用于当检测出错误时向其他单元通知错误;第四是过载帧,用于接收单元通知发送单元其尚未做好接收准备;第五是帧间隔,用于将数据帧及遥控帧与前面的帧分离开来,防止帧数据重复和错乱。

1

在CAN通信帧中,数据帧和遥控帧有标准格式和扩展格式两种格式。

2

标准格式有11个位标识符,而扩展格式有29个位标识符。其他内容的格式基本相同。CAN标准帧和扩展帧在ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议。CAN协议的一个最大特点是废除了传统的站地址编码,而是对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识符可由11位或29位二进制数组成,因此可以定义2或2个以上不同的数据块。这种按数据块编码的方式使不同的节点同时接收到相同的数据,在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。

二、CAN数据帧

数据帧由 7 个段构成,如图所示:

3

分别是帧起始、仲裁段、控制段、数据段、CRC校验段、ACK段以及帧结束。图中深灰色底的位为“显性电平”,浅色底的位为 “显性或隐性电平”,白色底的位为“隐性电平”。CAN总线上的数据位采用具有两种互补的逻辑值,即显性(Dominant)和隐性(Recessive)。显性电平在逻辑层面表现为0,隐性电平在逻辑层面表现为1,即显性电平用逻辑“0”表示,隐性电平用逻辑“1”表示

其中数据帧结构的第一部分帧起始表示数据帧和远程帧的起始,它仅由一个“显性电平”位组成。CAN总线的同步规则规定,只有当总线处于空闲状态(总线电平呈现隐性状态)时,才允许站点开始发送信号。仲裁段表示帧优先级的段。标准帧的仲裁段由11个bit的标识符ID和RTR位构成;扩展帧的仲裁段由29个bit的标识符ID、SRR位、IDE位和RTR位构成。控制段是表示数据的字节数和保留位的段,标准帧与扩展帧的控制段格式不同。标准帧的 控制段由 IDE(Identifier Extension,标志符扩展)位、保留位 r0 和 4 个 bit 的数据长 度码 DLC 构成。扩展帧的控制段由保留位 r1、r0 和 4 个 bit 的数据长度码 DLC 构成。IDE 位 用于指示数据帧为标准帧还是扩展帧,标准帧的 IDE 位为“显性电平”。

数据长度码与字节数的关系如图所示:

4

其中数据长度代码DLC(Date Length Code),用于规定数据场的字节数,DLC的编码规则如表所示;最大为8字节,最小为0字节。“D”代表显性电平,为逻辑0;“R”代表隐形电平,为逻辑1。

数据段用于承载数据的内容,它可包含0~8个字节的数据,从MSB(最高有效位)开始输出;CRC段用于检查帧传输是否错误的段,它由15个bit的CRC序列和1个bit的CRC界定符(用于分隔)构成。CRC序列是根据多项式生成的CRC值,其计算范围包括帧起始、仲裁段、控制段和数据段;ACK段用于确认接收是否正常的段,它由ACK槽(ACK Slot)和ACK界定符(用于分隔)构成,长度为2个bit;最后是帧结束:表示数据帧的结束,它由7个bit的隐性位构成。

三、CAN遥控帧和错误帧

5

从图中可以看到,遥控帧与数据帧相比,除了没有数据段,其他段的构成均与数据帧完全相同。如前所述,RTR 位的极性指明了该帧是数据帧还是遥控帧,遥控帧中的 RTR 位 为“隐性电平”。RTR位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”。它是区别数据帧和远程帧的标志。

错误帧用于在接收和发送消息时检测出错误并通知错误,从图可知,错误帧由错误标志和错误界定符构成。错误标志包括主动错误标志和被 动错误标志,前者由 6 个 bit 的显性位构成,后者由 6 个 bit 的隐性位构成。错误界定符由 8 个 bit 的隐性位构成。

6

四、CAN过载帧和帧间隔

过载帧是接收单元用于通知发送单元其尚未完成接收准备的帧:

7

从图可知,过载帧由过载标志和过载界定符构成。过载标志的构成与主动错误标志 的构成相同,由 6 个 bit 的显性位构成。过载界定符的构成与错误界定符的构成相同,由 8 个 bit 的隐性位构成。

帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧或过载帧等)隔开,但错误帧和过载帧前不允许插入帧间隔。

8

如图所示,帧间隔的构成元素有三个:一是间隔,它由 3 个 bit 的隐性位构成;二是总线空闲,它由隐性电平构成,且无长度限制。注意:只有在总线处于空闲状态下,要发送的单元才可以开始访问总线;三是延迟传送,它由 8 个 bit 的隐性位构成。