版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务5.3基于CAN总线的多机通信应用开发引导案例CAN通信任务5.3基于CAN总线的多机通信应用开发CAN(ControllerAreaNetwork)总线是一种用于在工业自动化系统中传输数据的通信协议。它具有实时性、可靠性和灵活性等特点,广泛应用于汽车、航空、能源、医疗和物联网等领域。(1)汽车电子:发动机控制单元、刹车系统、仪表盘等。通过CAN总线,这些节点可以实现数据的传输和命令的发送,从而实现汽车电子系统的高效协同工作。(2)工业自动化:在工业领域中,PLC(可编程逻辑控制器)和传感器。CAN总线能够提供稳定的数据传输,使得工业系统的监测和控制更加可靠和高效。(3)无人机:用于接收和发送飞行状态信息、控制指令等。通过CAN总线,无人机可以传感器和其他装备之间进行实时数据交换,从而实现高度精确的飞行控制。(4)能源管理:在太阳能或风能发电系统中,利用CAN总线与电池管理系统(BMS)进行通信。通过CAN总线,可以实现对充电、放电过程的监测和控制,从而提高能源利用效率和安全性。任务描述CAN通信为了给汽车传感系统设计发动机温度监测和倒车雷达功能,同时让用户可在中控台上查看实时的监测结果,我们需要借助MCU与CAN收发器建立一个CAN通信网络。任务描述任务要求任务5.3基于CAN总线的多机通信应用开发主节点和各个从节点之间通过CAN总线进行连接。主节点每隔2s向从节点1发送“Hi,Node1”消息,从节点1收到后翻转其上的LED灯作为提示,同时回复“Node1Ack”消息给主节点。主节点每隔3s向从节点2发送“Hi,Node2”消息,从节点2收到后翻转其上的LED灯作为提示,同时回复“Node2Ack”消息给主节点。。任务目标CAN通信职业能力目标(1)了解CAN总线相关的基础知识。(2)掌握CAN控制器的工作原理。(3)掌握CAN收发器芯片的功能及典型应用电路的工作原理。(1)会设计Cortex-M4微控制器与CAN收发器芯片的接口程序。(2)会搭建基于CAN总线的通信网络并编程实现组网通信。任务目标技能目标任务分析CAN通信任务5.3基于CAN总线的多机通信应用开发基于STM32F407MCU建立CAN通信网络是一项常见的任务,适用于很多实时控制系统和汽车电子应用。下面是对该任务的分析。硬件设置(1)要使用CAN通信,需要确定STM32F407上的CAN硬件模块。STM32F407具有两个CAN控制器,可以配置为CAN1和CAN2。(2)确保正确连接CAN总线,包括电源、地线和数据线。初始化CAN控制器(1)使用STM32的HAL库或标准外设库初始化CAN控制器,包括设置CAN时钟、引脚、波特率等。(2)配置接收和发送缓冲区以及过滤器来管理消息的接收和发送。
编写CAN消息发送代码(1)创建一个CAN消息结构体,并填充所需的标识符(ID)和数据。(2)将消息发送到CAN总线上。编写CAN消息接收代码(1)监听CAN总线并检测是否有新的消息到达。(2)如果有消息到达,读取消息的标识符和数据。任务分析CAN通信任务5.3基于CAN总线的多机通信应用开发基于STM32F407MCU建立CAN通信网络是一项常见的任务,适用于很多实时控制系统和汽车电子应用。下面是对该任务的分析。处理接收到的消息根据接收到的消息做出相应的动作。这可能涉及控制输出、修改内部状态或触发其他操作。错误处理可能会出现一些通信错误,如位错误、组帧错误等。在代码中实现错误处理机制,以确保可靠的通信。控制任务优先级在一个实时系统中,对CAN通信任务的处理可能需要和其他任务进行优先级管理,以确保及时响应通信需求。CAN通信CAN介绍知识链接CAN总线定义了更为优秀的物理层、数据链路层,并且拥有种类丰富、简繁不一的上层协议。CAN是控制器局域网络(ControllerAreaNetwork)的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986年率先提出。用于应对汽车上日益庞大的电子控制系统的需求,其最大的特点是可拓展性好,可承受大量数据的高速通信,并且高度稳定可靠。广泛应用于:汽车电子、工业自动化、安防监控、楼宇自动化、船舶、医疗设备、工业设备等方面。CAN总线属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。01数据传输距离远(最远10Km);
具有实时性强、传输距离较远、抗电磁干扰能力强、成本低数据传输速率高;通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1mb/s。具备优秀的仲裁机制(ID识别);具有优先权和仲裁功能,多个控制模块通过CAN控制器挂到CAN-bus上,形成多主机局部网络。CAN总线主要特性CAN通信CAN介绍知识链接02使用筛选器实现多地址的数据帧传递;借助遥控帧实现远程数据请求;具备错误检测与处理功能,保证了数据通信的可靠性。;具备数据自动重发功能;发送的信息遭到破坏后,可自动重发;故障节点可自动脱离总线且不影响总线上其他节点的正常工作。CAN是一种多主总线,即每个节点机均可成为主机,且节点机之间也可进行通信。CAN总线主要特性CAN通信CAN介绍知识链接CAN通信CAN技术规范与标准知识链接ISO未对此部分进行标准化CAN的再发送控制功能未在ISO11898/11519-2中标准化ISO对此部分进行了标准化对于数据链路层,ISO11898和11519-2定义的内容相同;对于物理层,ISO11898和11519-2定义的内容不相同;美国汽车工程师学会等组织针对不同应用领域对CAN技术规范进行了标准化,常见的标准见下表:CAN通信CAN技术规范与标准知识链接ISO11898标准高速CAN总线网络(500Kbps)闭环网络应用在汽车动力与传动系统总线最大长度为40米两端各有一个120Ω的电阻ISO11519标准低速CAN总线网络(125Kbps)应用在汽车车身系统两根总线是独立的,不形成闭环要求每根总线上各串联一个2.2KΩ的电阻终端电阻用来做阻抗匹配,以减少回波反射CAN通信CAN总线的报文信号电平知识链接CAN总线有ISO11898和ISO11519两个通信标准对物理层的定义不同,两者的信号电平特性也不相同,CAN总线上的报文信号使用差分电压传送。差动信号放大器将CAN-H线上的电压(UCAN-High)减去CAN-L线上的电压(UCAN-Low)得出输出电压;CAN-H为3.5V,Can-L为1.5V时,差值为2V时判定为逻辑0;静态时均为2.5左右,差值为0V时判定为逻辑1。CAN通信CAN总线的网络拓扑结构知识链接CAN总线的物理连接只需要两根线,CAN_H和CAN_L,通过差分信号进行数据的传输.CAN总线有两种电平,分别为隐性电平和显性电平,这两种电平有着“与”的关系:·若隐性电平相遇,则总线表现为隐性电平;·若显性电平相遇,则总线表现为显性电平;·若隐性电平和显性电平相遇,则总线表现为显性电平。CAN通信CAN总线的传输介质知识链接CAN总线上的报文信号使用差分电压传送,分别为显性电平和隐性电平。传输介质选择注意事项:物理介质必须支持显性、隐性状态,总线仲裁时,显性状态可支配隐性状态双线结构的总线必须使用终端电阻抑制信号反射,并且采用差分信号以减弱电磁干扰使用光学介质时,隐性电平-状态“暗”,显性电平—状态“亮”同一段CAN总线网络必须采用相同的传输介质CAN通信CAN总线的传输介质——双绞线知识链接双绞线目前在汽车电子、电力系统、电梯控制系统和远程传输系统得到广泛应用双绞线构成CAN网络时的注意事项1.网络两端必须各有一个120欧左右的终端电阻2.支线尽可能短3.确保不在干扰源附近4.电缆电阻越小越好,避免电路压降过大5.CAN总线的波特率取决于传输线延时,通信距离随波特率减小而增加CAN通信知识链接CAN总线的传输介质——双绞线CAN通信知识链接CAN总线的传输介质——光纤拓扑结构的类型总线型环型星型CAN通信知识链接CAN收发器芯片介绍D:CAN发送引脚RS:高速/静音模式选择(低电平为高速)Vref:参考电压输出R:CAN接收引脚CANH:高电位CAN电压输入输出端CANL:低电位CAN电压输入输出端跳线帽选择用于阻抗匹配,减少回波反射CAN收发器芯片TJA1050、TJA1042、SIT1050TSIT1050T支持高速CAN,传输速率可达1MbpsCAN通信知识链接CAN协议层 CAN总线以“帧”形式进行通信。CAN协议定义了5种类型的帧:数据帧、遥控帧、错误帧、过载帧、间隔帧,其中数据帧最为常用。帧类型帧作用数据帧(DataFrame)用于发送单元向接收单元传输数据的帧遥控帧(RemoteFrame)用于接收单元向具有相同ID的发送单元请求数据的帧错误帧(ErrorFrame)用于当检测出错误时向其他单元通知错误的帧过载帧(OverloadFrame)用于接收单元通知其尚未做好接收准备的帧间隔帧(InterFrameSpace)用于将数据帧及遥控帧与前面的帧分离开来的帧重点常用CAN通信知识链接数据帧介绍标准数据帧扩展数据帧数据帧由7段组成。数据帧又分为标准帧(CAN2.0A)和扩展帧(CAN2.0B),主要体现在仲裁段和控制段。帧起始:表示数据帧开始的段,显性信号仲裁段:表示该帧优先级的段,优先级控制段:表示数据的字节数及保留位的段数据段:数据的内容,一帧可发送0~8字节数据CRC段:检查帧的传输错误的段ACK段:表示确认正常接收的段帧结束:表示数据帧结束的段,7个隐性信号标识符位远程发送请求位0数据帧1遥控帧扩展标识符位数据长度编码位循环校验序列界定符确认位用在扩展格式,替代RTRCAN通信知识链接CAN位时序介绍 CAN总线以“位同步”机制,实现对电平的正确采样。位数据都由四段组成:同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2),每段又由多个位时序Tq组成。采样点是指读取总线电平,并将读到的电平作为位值的点。根据位时序,就可以计算CAN通信的波特率。(1Tq)(8~25)(1~8Tq)(1~8Tq)(2~8Tq)注意:节点监测到总线上信号的跳变在SS段范围内,表示节点与总线的时序是同步,此时采样点的电平即该位的电平。CAN通信知识链接数据同步过程CAN为了实现对总线电平信号的正确采样,数据同步分为硬件同步和再同步。硬件同步节点通过CAN总线发送数据,一开始发送帧起始信号。总线上其他节点会检测帧起始信号在不在位数据的SS段内,判断内部时序与总线是否同步。假如不在SS段内,这种情况下,采样点获得的电平状态是不正确的。所以,节点会使用硬件同步方式调整,把自己的SS段平移到检测到边沿的地方,获得同步,同步情况下,采样点获得的电平状态才是正确的。时钟频率误差、传输上的相位延迟引起偏差CAN通信知识链接数据再同步再同步再同步利用普通数据位的边沿信号(帧起始信号是特殊的边沿信号)进行同步。再同步的方式分为两种情况:超前和滞后,即边沿信号与SS段的相对位置。再同步时,PSB1和PSB2中增加或者减少的时间被称为“再同步补偿宽度(SJW)”,其范围:1~4Tq。限定了SJW值后,再同步时,不能增加限定长度的SJW值。SJW值较大时,吸收误差能力更强,但是通讯速度会下降。CAN通信知识链接CAN总线仲裁——优先级决定CAN总线处于空闲状态,最先开始发送消息的单元获得发送权。多个单元同时开始发送时,从仲裁段(报文ID)的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送,即首先出现隐性电平的单元失去对总线的占有权变为接收。竞争失败单元,会自动检测总线空闲,在第一时间再次尝试发送。CAN通信知识链接STM32CAN控制器介绍STM32CAN控制器(bxCAN),支持CAN2.0A和CAN2.0BActive版本协议。CAN2.0A只能处理标准数据帧且扩展帧的内容会识别错误,而CAN2.0BActive可以处理标准数据帧和扩展数据帧。CAN2.0BPassive只能处理标准数据帧且扩展帧的内容会忽略。bxCAN主要特点:
波特率最高可达1Mbps
支持时间触发通信(CAN的硬件内部定时器可以在TX/RX的帧起始位的采样点位置生成时间戳)
具有3级发送邮箱
具有3级深度的2个接收FIFO
可变的过滤器组(最多28个)CAN通信知识链接CAN控制器模式CAN控制器的工作模式有三种:初始化模式、正常模式和睡眠模式。降低功耗进行软件初始化CAN总线同步,开始接收和发送对寄存器配置需进入到初始化模式CAN通信知识链接CAN控制器模式CAN控制器的测试模式有三种:静默模式、环回模式和环回静默模式。静默模式环回模式环回静默模式只向总线发送1不能发送0,可从总线接收数据发送的数据直接到输入(总线可监测数据),不能从总线接收数据发送的数据直接到输入(总线不可监测到数据),不能从总线接收数据正常模式可向总线发送或接收数据可统计总线的流量自检自检(不影响总线)总线的正常节点初始化模式下进行配置CAN通信知识链接CAN控制器框图①②③④注意:F1中互联型产品才有2个CAN控制器 F4/F7产品都有2个CAN控制器1)CAN内核2)发送邮箱包含各种控制/状态/配置寄存器,可以配置模式、波特率等用来缓存待发送的报文,最多可以缓存3个报文3)接收FIFO缓存接收到的有效报文4)接收过滤器筛选有效报文CAN通信知识链接CAN收发处理流程发送优先级由邮箱中报文的标识符决定。标识符数值越低有最高优先级。如果标识符值相同,邮箱小的先被发送。选择空置邮箱邮箱退出空状态挂号状态预定发送状态发送状态空置状态等待成为最高优先级的邮箱等待总线进入空闲状态报文被成功发送接收处理空置FIFO挂号_1挂号_2挂号_3溢出状态空置状态收到有效报文有效报文指的是(数据帧直到EOF段的最后一位都没有错误),且通过过滤器组对标识符过滤。有效报文数量可从FMP位得知读取FIFO输出邮箱读出邮箱中的报文收到有效报文收到有效报文收到有效报文FIFO已满出现报文丢失问题取决FIFO锁定功能放入优先级最高的邮箱请求数据发送发送处理CAN通信知识链接接收过滤器位宽可设置32位或16位,寄存器存储的内容就有所区别。当总线上报文数据量很大时,总线上的设备会频繁获取报文,占用CPU。过滤器的存在,选择性接收有效报文,减轻系统负担。每个过滤器组都有两个32位寄存器CAN_FxR1和CAN_FxR2。根据过滤器组的工作模式不同,寄存器的作用不尽相同。位宽和选择模式过滤器组Reg32位16位(寄存器由两部分组成)CAN_FxR1STDID[10:0]、EXTID[17:0]、IDE、RTRSTDID[10:0]、EXTID[17:15]、IDE、RTRCAN_FxR2STDID[10:0]、EXTID[17:0]、IDE、RTRSTDID[10:0]、EXTID[17:15]、IDE、RTR选择模式可设置屏蔽位模式或标识符列表模式,寄存器内容的功能就有所区别。屏蔽位模式,可以选择出一组符合条件的报文。寄存器内容功能相当于是否符合条件。标识符列表模式,可以选择出几个特定ID的报文。寄存器内容功能就是标识符本身。REG中bit值代表的是匹配与否:1必须匹配0不用关心CAN通信知识链接CAN控制器位时序CAN控制器位时序STM32F103,设TS1=8、TS2=7、BRP=3,波特率=36000/[(9+8+1)*4]=500Kbps。STM32F407,设TS1=6、TS2=5、BRP=5,波特率=42000/[(7+6+1)*6]=500Kbps。STM32的CAN外设位时序分为三段:
同步段SYNC_SEG
时间段1BS1
时间段2BS2PTS
+PBS1
注意:通信双方波特率需要一致才能通信成功。CAN通信知识链接CAN相关寄存器介绍寄存器名称作用CAN_MCRCAN主控制寄存器主要负责CAN工作模式的配置CAN_BTR位时序寄存器用来设置分频/TBS1/TBS2/TSWJ等参数,设置测试模式CAN_(T/R)IxR标识符寄存器存放(待发送/接收)的报文ID、扩展ID、IDE位及RTR位CAN_(T/R)DTxR数据长度和时间戳寄存器存放(待发送/接收)报文的DLC段CAN_(T/R)DLxR低位数据寄存器存放(待发送/接收)报文数据段的Data0~Data3的内容CAN_(T/R)DHxR高位数据寄存器存放(待发送/接收)报文数据段的Data4~Data7的内容CAN_FM1R过滤器模式寄存器用于设置各过滤器组的工作模式CAN_FS1R过滤器位宽寄存器用于设置各过滤器组的位宽CAN_FFA1RFIFO关联寄存器用于设置报文通过过滤器后,被存入的FIFOCAN_FA1R过滤器激活寄存器用于开启对应的过滤器组CAN_FxR(1/2)过滤器组x寄存器根据位宽和模式设置不同,CAN_FxR1和FxR2功能不同CAN通信知识链接CAN相关HAL库驱动介绍(掌握)驱动函数关联寄存器功能描述__HAL_RCC_CANx_CLK_ENABLE(…)使能CAN时钟HAL_CAN_Init(…)MCR/
BTR初始化CANHAL_CAN_ConfigFilter(…)过滤器寄存器配置CAN接收过滤器HAL_CAN_Start(…)MCR/MSR启动CAN设备HAL_CAN_ActivateNotification(…)IER使能中断__HAL_CAN_ENABLE_IT(…)IER使能CAN中断允许HAL_CAN_AddTxMessage(…)TSR/TIxR/TDTxR/TDLxR/TDHxR发送消息HAL_CAN_GetTxMailboxesFreeLevel(…)TSR等待发送完成HAL_CAN_GetRxFifoFillLevel(…)RF0R/RF1R等待接收完成HAL_CAN_GetRxMessage(…)RF0R/RF1R/RDLxR/RDHxR接收消息CAN通信知识链接1)CAN的关键结构体——CAN_InitTypeDeftypedef
struct{uint32_tPrescaler;/*预分频*/
uint32_tMode;/*工作模式*/
uint32_tSyncJumpWidth;/*再次同步跳跃宽度*/
uint32_tTimeSeg1;/*时间段1(BS1)长度*/
uint32_tTimeSeg2;/*时间段2(BS2)长度*/
FunctionalStateTimeTriggeredMode;/*时间触发通信模式*/
FunctionalStateAutoBusOff;/*总线自动关闭*/
FunctionalStateAutoWakeUp;/*自动唤醒*/
FunctionalStateAutoRetransmission;/*自动重传*/FunctionalStateReceiveFifoLocked;/*接收FIFO锁定*/FunctionalStateTransmitFifoPriority;/*传输FIFO优先级*/}CAN_InitTypeDef;CAN通信知识链接2)CAN的关键结构体——CAN_TxHeaderTypeDeftypedef
struct{uint32_tStdId;/*标准标识符*/uint32_tExtId;/*扩展标识符*/uint32_tIDE;/*帧格式(标准帧或扩展帧)*/uint32_tRTR;/*帧类型(数据帧或远程帧)*/uint32_tDLC;/*数据长度*/FunctionalStateTransmitGlobalTime;/*发送时间标记(时间戳)*/}CAN_TxHeaderTypeDef;CAN通信知识链接3)CAN的关键结构体——CAN_RxHeaderTypeDeftypedef
struct{uint32_tStdId;/*标准标识符*/uint32_tExtId;/*扩展标识符*/uint32_tIDE;/*帧格式(标准帧或扩展帧)*/uint32_tRTR;/*帧类型(数据帧或远程帧)*/uint32_tDLC;/*数据长度*/uint32_tTimestamp;/*时间戳*/uint32_tFilterMatchIndex;/*过滤器号*/}CAN_RxHeaderTypeDef;CAN通信知识链接5)CAN基本驱动步骤1、CAN参数初始化2、使能CAN时钟和初始化相关引脚3、设置过滤器4、CAN数据接收和发送GPIO模式设为复用功能模式HAL_CAN_MspInit工作模式、波特率等HAL_CAN_InitHAL_CAN_ConfigFilter完成过滤器的初始化HAL_CAN_AddTxMessage发送消息HAL_CAN_GetRxMessage接收数据5、使能CAN相关中断/设置NVIC/编写中断服务函数__HAL_CAN_ENABLE_IT(可选)CAN通信任务实施设备清单表任务实施前必须先准备好以下设备和资源。序号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第1课时 倍的认识
- 2026秋小学冀人版科学五年级上册科技擂台《18 创意车模大比拼》教学设计
- 时序逻辑电路试题及答案
- 2026年一建市政实务案例突破试卷及答案
- 2026年一建民航工程综合模拟试卷及答案
- 2026大学地勤面试题及答案
- 2026年一建经济考前必做冲刺试卷及答案
- 2026丰润面试题及答案
- 2026工厂管理岗面试题及答案
- 2026管道工面试题及答案
- 华为VDBD价值驱动业务设计体系实战
- 2025年上半年设备工作总结模版(二篇)
- DB33T 1228-2020 建筑地面工程施工质量验收检查用表标准
- 综合应急预案模板
- 合同履约管理
- 接地电阻、绝缘电阻和漏电保护器漏电动作参数测定记录表
- DL∕T 2447-2021 水电站防水淹厂房安全检查技术规程
- 慢性粒细胞白血病查房
- 2024年大学生就业指导课程试题库及答案
- 法院对建筑设计版权侵权的判例解读
- 14D504接地装置安装图集
评论
0/150
提交评论