




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
普中STM32开发板带您进入ARM世界 CAN通信实验 普中STM32开发板带您进入ARM世界 本讲主要内容1 CAN介绍2 CAN配置步骤3 硬件电路4 编写CAN控制程序 普中STM32开发板带您进入ARM世界 1 CAN介绍1 1CAN总线介绍CAN是ControllerAreaNetwork的缩写 中文意思是控制器局域网络 是ISO国际标准化的串行通信协议 它是德国电气商博世公司于1986年面向汽车而开发的CAN通信协议 此后 CAN通过ISO11898及ISO11519进行了标准化 CAN是国际上应用最广泛的现场总线之一 在欧洲已是汽车网络的标准协议 CAN的高性能和可靠性已被认同 并被广泛地应用于工业自动化 船舶 医疗设备 工业设备等方面 CAN通信只具有两根信号线 分别是CAN H和CAN L CAN控制器根据这两根线上的电位差来判断总线电平 总线电平分为显性电平和隐性电平 二者必居其一 发送方通过使总线电平发生变化 将消息发送给接收方 普中STM32开发板带您进入ARM世界 CAN协议特点 1 多主控制 2 系统的柔软性 3 通信速度较快 通信距离远 4 具有错误检测 错误通知和错误恢复功能 5 故障封闭功能 6 连接节点多 普中STM32开发板带您进入ARM世界 CAN已通过ISO11898及ISO11519进行了标准化 这两种标准在物理层的主要不同点如图 普中STM32开发板带您进入ARM世界 普中STM32开发板带您进入ARM世界 CAN总线具有多节点可组网特性 其网络拓扑结构如下 普中STM32开发板带您进入ARM世界 CAN通信主要是通过5种类型的帧进行 分别是数据帧 遥控帧 错误帧 过载帧和帧间隔 各种帧的用途如图 普中STM32开发板带您进入ARM世界 数据帧的构成如图 普中STM32开发板带您进入ARM世界 帧起始是由1个位的显性电平表示 标准帧和扩展帧相同 仲裁段 表示数据优先级的段 标准帧和扩展帧格式在本段有所区别 如图 普中STM32开发板带您进入ARM世界 控制段由6个位构成 表示数据段的字节数 标准帧和扩展帧的控制段稍有不同 如图 普中STM32开发板带您进入ARM世界 数据段 该段可包含0 8个字节的数据 从MSB 最高位 开始输出 标准帧和扩展帧此段相同 如图 CRC段 该段用于检查帧传输错误 由15个位的CRC顺序和1个位的CRC界定符 用于分隔的位 构成 标准帧和扩展帧此段也是相同的 如图 普中STM32开发板带您进入ARM世界 ACK段 此段用来确认是否正常接收 由ACK槽 ACKSlot 和ACK界定符2个位构成 标准帧和扩展帧此段也是相同的 如图 帧结束 它表示该帧的结束的段 由7个位的隐性位构成 标准帧和扩展帧此帧是相同的 如图 普中STM32开发板带您进入ARM世界 CAN的位时序由发送单元在非同步的情况下发送的每秒钟的位数称为位速率 一个位可分为4段 同步段 SS 传播时间段 PTS 相位缓冲段1 PBS1 相位缓冲段2 PBS2 这些段又由可称为TimeQuantum Tq 的最小时间单位构成 1位分为4个段 每个段又由若干个Tq构成 这称为位时序 普中STM32开发板带您进入ARM世界 1个位的构成如图 普中STM32开发板带您进入ARM世界 CAN协议的仲裁功能在总线空闲态 最先开始发送消息的单元获得发送权 当多个单元同时开始发送时 各发送单元从仲裁段的第一位开始进行仲裁 连续输出显性电平最多的单元可继续发送 仲裁的过程如图 普中STM32开发板带您进入ARM世界 1 2STM32F1CAN介绍STM32F1芯片自带bxCAN控制器 BasicExtendedCAN 即基本扩展CAN 可与CAN网络进行交互 它支持2 0A和B版本的CAN协议 STM32F1的bxCAN的主要特性有 支持CAN协议2 0A和2 0B主动模式 波特率最高达1Mbps 支持时间触发通信 具有3个发送邮箱 具有3级深度的2个接收FIFO 可变的过滤器组 互联网产品中有28个 CAN1和CAN2共享 其他STM32F103xx有14个 我们使用的STM32F103ZET6自带1个CAN控制器 而STM32F105 STM32F107互联网型含有2个CAN控制器 互联网型只是比STM32F103多一个而已 如图所示 普中STM32开发板带您进入ARM世界 普中STM32开发板带您进入ARM世界 1 标号1 CAN控制内核CAN控制内核包含了各种控制 状态寄存器 控制寄存器CAN MCR主控制寄存器CAN MCR负责管理CAN的工作模式 位时序寄存器 CAN BTR 位时序寄存器CAN BTR用于配置测试模式 波特率以及各种位内的段参数 1 测试模式A 正常模式B 静默模式 普中STM32开发板带您进入ARM世界 C 回环模式D 静默回环模式 普中STM32开发板带您进入ARM世界 2 位时序及波特率 普中STM32开发板带您进入ARM世界 2 标号2 发送邮箱它含有3个发送邮箱 软件可通过三个发送邮箱设置消息 发送调度程序负责决定首先发送哪个邮箱的内容 3 标号3 验收筛选器bxCAN提供了28个可调整 可配置的标识符筛选器组 用于选择软件所需的传入消息并丢弃其余消息 每个筛选器组由2个32为寄存器 CAN FxR1和CAN FxR2组成 通过CAN FMR寄存器 可以配置过筛选器组的位宽和工作模式 如图 普中STM32开发板带您进入ARM世界 普中STM32开发板带您进入ARM世界 4 标号4 CAN接收FIFO硬件使用两个接收FIFO来存储传入消息 每个FIFO中有三个邮箱用于存储三条完整消息 FIFO完全由硬件管理 5 标号5 CAN2整体控制逻辑CAN2与CAN1是一样的 它们共用验收筛选器且由于存储访问控制器由CAN1控制 所以要使用CAN2的时候必须要使能CAN1的时钟 普中STM32开发板带您进入ARM世界 2 CAN配置步骤具体步骤如下 CAN相关库函数在stm32f10 x can c和stm32f10 x can h文件中 1 使能CAN时钟 将对应引脚复用映射为CAN功能RCC APB2PeriphClockCmd RCC APB2Periph GPIOA ENABLE RCC APB1PeriphClockCmd RCC APB1Periph CAN1 ENABLE 使能CAN1时钟GPIO InitStructure GPIO Pin GPIO Pin 11 PA11GPIO InitStructure GPIO Mode GPIO Mode IPU 上拉输入模式GPIO Init GPIOA 普中STM32开发板带您进入ARM世界 2 设置CAN工作模式 波特率等uint8 tCAN Init CAN TypeDef CANx CAN InitTypeDef CAN InitStruct typedefstruct uint16 tCAN Prescaler uint8 tCAN Mode uint8 tCAN SJW uint8 tCAN BS1 uint8 tCAN BS2 FunctionalStateCAN TTCM FunctionalStateCAN ABOM FunctionalStateCAN AWUM FunctionalStateCAN NART FunctionalStateCAN RFLM FunctionalStateCAN TXFP CAN InitTypeDef 普中STM32开发板带您进入ARM世界 CAN Prescaler 用于设置CAN外设的时钟分频 它可控制时间片tq的时间长度 这里设置的值最终会加1后再写入BRP寄存器位 CAN Mode 用于设置CAN的工作模式 可设置为正常模式 CAN Mode Normal 回环模式 CAN Mode LoopBack 静默模式 CAN Mode Silent 以及回环静默模式 CAN Mode Silent LoopBack CAN SJW 用于置SJW的极限长度 即CAN重新同步时单次可增加或缩短的最大长度 它可以被配置为1 4tq CAN SJW 1 2 3 4tq CAN BS1 用于设置CAN位时序中的BS1段的长度 它可以被配置为1 16个tq长度 CAN BS1 1 2 3 16tq CAN BS2 用于设置CAN位时序中的BS2段的长度 它可以被配置为1 8个tq长度 CAN BS2 1 2 3 8tq CAN TTCM 用于设置是否使用时间触发功能 ENABLE为使能 DISABLE为失能 时间触发功能在某些CAN标准中会使用到 CAN ABOM 用于设置是否使用自动离线管理 ENABLE DISABLE 使用自动离线管理可以在节点出错离线后适时自动恢复 不需要软件干预 普中STM32开发板带您进入ARM世界 CAN AWUM 用于设置是否使用自动唤醒功能 ENABLE DISABLE 使能自动唤醒功能后它会在监测到总线活动后自动唤醒 CAN NART 用于设置是否使用自动重传功能 ENABLE DISABLE 使用自动重传功能时 会一直发送报文直到成功为止 CAN RFLM 用于设置是否使用锁定接收FIFO ENABLE DISABLE 锁定接收FIFO后 若FIFO溢出时会丢弃新数据 否则在FIFO溢出时以新数据覆盖旧数据 CAN TXFP 用于设置发送报文的优先级判定方法 ENABLE DISABLE 使能时 以报文存入发送邮箱的先后顺序来发送 否则按照报文ID的优先级来发送 设置好CAN Prescaler CAN BS1和CAN BS2的值 带入到CAN波特率计算公式 CAN波特率 Fpclk1 CAN BS1 CAN BS2 1 CAN Prescaler 普中STM32开发板带您进入ARM世界 本章实验我们初始化配置CAN为正常工作模式 波特率为500Kbps 配置代码如下 CAN InitTypeDefCAN InitStructure CAN单元设置CAN InitStructure CAN TTCM DISABLE 非时间触发通信模式CAN InitStructure CAN ABOM DISABLE 软件自动离线管理CAN InitStructure CAN AWUM DISABLE 睡眠模式通过软件唤醒 清除CAN MCR的SLEEP位 CAN InitStructure CAN NART ENABLE 使用报文自动传送CAN InitStructure CAN RFLM DISABLE 报文不锁定 新的覆盖旧的CAN InitStructure CAN TXFP DISABLE 优先级由报文标识符决定CAN InitStructure CAN Mode CAN Mode Normal 模式设置CAN InitStructure CAN SJW CAN SJW 1tq 重新同步跳跃宽度 Tsjw 为tsjw 1个时间单位CAN SJW 1tq CAN SJW 4tq 普中STM32开发板带您进入ARM世界 CAN InitStructure CAN BS1 CAN BS1 8tq Tbs1范围CAN BS1 1tq CAN BS1 16tqCAN InitStructure CAN BS2 CAN BS2 9tq Tbs2范围CAN BS2 1tq CAN BS2 8tqCAN InitStructure CAN Prescaler 4 分频系数 Fdiv 为brp 1CAN Init CAN1 初始化CAN1 普中STM32开发板带您进入ARM世界 3 设置CAN筛选器voidCAN FilterInit CAN FilterInitTypeDef CAN FilterInitStruct typedefstruct uint16 tCAN FilterIdHigh uint16 tCAN FilterIdLow uint16 tCAN FilterMaskIdHigh uint16 tCAN FilterMaskIdLow uint16 tCAN FilterFIFOAssignment uint8 tCAN FilterNumber uint8 tCAN FilterMode uint8 tCAN FilterScale FunctionalStateCAN FilterActivation CAN FilterInitTypeDef 普中STM32开发板带您进入ARM世界 CAN FilterIdHigh 用于存储要筛选的ID 若筛选器工作在32位模式 它存储的是所筛选ID的高16位 若筛选器工作在16位模式 它存储的就是一个完整的要筛选的ID CAN FilterIdLow 同上一个成员一样 它也是用于存储要筛选的ID 若筛选器工作在32位模式 它存储的是所筛选ID的低16位 若筛选器工作在16位模式 它存储的就是一个完整的要筛选的ID CAN FilterMaskIdHigh 用于存储要筛选的ID或掩码 CAN FilterMaskIdHigh存储的内容分两种情况 当筛选器工作在标识符列表模式时 它的功能与CAN FilterIdHigh相同 都是存储要筛选的ID 而当筛选器工作在掩码模式时 它存储的是CAN FilterIdHigh成员对应的掩码 与CAN FilterIdLow组成一组筛选器 CAN FilterMaskIdLow 同上一个成员一样 它也是用于存储要筛选的ID或掩码 只不过这里对应存储CAN FilterIdLow的成员 CAN FilterFIFOAssignment 用于设置当报文通过筛选器的匹配后 该报文会被存储到哪一个接收FIFO 它的可选值为FIFO0或FIFO1 CAN Filter FIFO0 1 普中STM32开发板带您进入ARM世界 CAN FilterNumber 用于设置筛选器的编号 即使用的是哪个筛选器 CAN一共有28个筛选器 所以它的可输入参数范围为0 27 CAN FilterMode 用于设置筛选器的工作模式 可以设置为列表模式 CAN FilterMode IdList 及掩码模式 CAN FilterMode IdMask CAN FilterScale 用于设置筛选器的位宽 可以设置为32位长 CAN FilterScale 32bit 及16位长 CAN FilterScale 16bit CAN FilterActivation 用于设置是否激活这个筛选器 ENABLE DISABLE 普中STM32开发板带您进入ARM世界 本章实验使用滤波器组0 并工作在32位标识符屏蔽位模式 配置代码如下 CAN FilterInitTypeDefCAN FilterInitStructure 配置过滤器CAN FilterInitStructure CAN FilterNumber 0 过滤器0CAN FilterInitStructure CAN FilterMode CAN FilterMode IdMask CAN FilterInitStructure CAN FilterScale CAN FilterScale 32bit 32位CAN FilterInitStructure CAN FilterIdHigh 0 x0000 32位IDCAN FilterInitStructure CAN FilterIdLow 0 x0000 CAN FilterInitStructure CAN FilterMaskIdHigh 0 x0000 32位MASKCAN FilterInitStructure CAN FilterMaskIdLow 0 x0000 CAN FilterInitStructure CAN FilterFIFOAssignment CAN Filter FIFO0 过滤器0关联到FIFO0CAN FilterInitStructure CAN FilterActivation ENABLE 激活过滤器0CAN FilterInit 滤波器初始化 普中STM32开发板带您进入ARM世界 4 选择CAN中断类型 开启中断voidCAN ITConfig CAN TypeDef CANx uint32 tCAN IT FunctionalStateNewState 普中STM32开发板带您进入ARM世界 5 CAN发送和接收消息发送消息的函数是 uint8 tCAN Transmit CAN TypeDef CANx CanTxMsg TxMessage typedefstruct uint32 tStdId uint32 tExtId uint8 tIDE uint8 tRTR uint8 tDLC uint8 tData 8 CanTxMsg 普中STM32开发板带您进入ARM世界 StdId 用于存储报文的11位标准标识符 范围是0 0 x7FF ExtId 用于存储报文的29位扩展标识符 范围是0 0 x1FFFFFFF ExtId与StdId这两个成员哪一个有效要根据下面的IDE位配置 IDE 用于存储扩展标志IDE位的值 其值可配置为CAN ID STD和CAN ID EXT 如果为CAN ID STD时表示本报文是标准帧 使用StdId成员存储报文ID 如果为CAN ID EXT时表示本报文是扩展帧 使用ExtId成员存储报文ID RTR 用于存储报文类型标志RTR位的值 当它的值为宏CAN RTR Data时表示本报文是数据帧 当它的值为宏CAN RTR Remote时表示本报文是遥控帧 由于遥控帧没有数据段 所以当报文是遥控帧时 下面的Data 8 成员的内容是无效
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Animate CC实例教程(Animate CC 2019)课件 第11章 交互式动画的制作
- 智能科学技术导论 课件 第一讲-智能科学概念
- 民政局火灾安全培训课件
- 教育局省考面试题库及答案
- 外汇业务2023科目练习试题附答案
- 2025年数控机床智能化改造对船舶制造行业的影响及应对策略报告
- 涉密文件管理办法合集
- 网络借款管理暂行办法
- 荔枝主播直播管理办法
- 污水处理厂药剂选用与投加方案
- 水果供应链协议
- 用别人资质中标合同范本
- 储备土地巡查管理办法
- 考古学复习资料与题库
- 铝粉代加工铝锭合同范本
- 餐前礼仪教学课件
- 临床试验病历书写规范与流程
- 2025四年级班主任心理健康教育计划
- 第二课 创新驱动发展 教学分析课件-2022-2023学年道德与法治九年级上册
- 以水为界:洱海流域产业结构优化与水环境协同发展探究
- 新人教版九年级新目标英语教材分析计划
评论
0/150
提交评论