- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
stm32F4 CAN总线学习
STM32F4 CAN学习记录CAN协议学习CAN基础CAN属于多主机局部网,采用多主竞争式/view/576327.htm总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点,各节点之间可以实现自由通信。CAN总线以报文为单位进行/view/5593592.htm数据传送,报文的优先级由标识符决定,具有最低二进制数的标识符有最高的优先级。CAN总线采用差分电压传输;在空闲状态下CAN_H和CAN_L均为2.5V左右,此时的状态表示为逻辑“1”,称为“隐性”电平(差值为0v); 当CAN_H比CAN_L高时表示逻辑“0”,称为“显性”电平(差值为2v)。显性时,通常电压值为:CAN_H=3.5V,CAN_L=1.5V。CAN总线采用“载波监测,多主掌控/冲突避免”(CSMA/CA)的通信模式。该模式工作流程大致如下:当总线处于空闲状态时(呈隐性电平),任何节点都可以向总线发送显性电平作为帧开始。当网络中存在2个及以上节点同时要求发送时就会产生竞争。CAN总线按位对标识符进行仲裁;各节点在发送电平的同时也在监听总线,如果总线电平与发送电平不同,则表明总线上存在更高优先级的节点在发送,则节点停止发送退出竞争。其他节点继续上述过程直到剩余1个节点,则最终优先级最高节点获得总线控制权并发送数据。参与总线仲裁的只有仲裁段;基础ID相同的标准can报文比扩展can报文优先级更高;相同ID的数据帧与远程帧,数据帧优先级更高。CAN报文结构CAN分为标准格式(CAN2.0A)和扩展格式(CAN2.0B);标准帧采用11位标识符ID,共可表示2047条报文;扩展帧采用29位标识符ID,共可表示5亿多条报文。CAN总线上传输的数据帧共有4种类型:数据帧、远程帧、错误帧、过载帧。每一帧都由多个场构成,每个场也都由多个位组成。下面分别描述着几种帧结构。数据帧:用于传输数据数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。数据帧组成如下图。根据标识符ID长度的不同又可分为标准数据帧和扩展数据帧;标准格式具有11位标识符,扩展格式具有29位标识符。两种格式的仲裁场部分不相同,其余场都基本一致;具体组成分别如下:标准数据帧格式帧起始:(SOF)标志着数据帧和远程帧的起始。它以一个比特的显性位“0”出现,只有在总线处于空闲状态时,才允许发送。仲裁场:(Arbitration Field)由标识符(Identifier)和远程发送请求位(RTR)标志组成。数据帧RTR=0;远程帧RTR=1;标识符的长度为11位,按高位在前低位在后的顺序发送,最低位为ID.0。控制场:控制场包括两个保留位(IDE/R1、R0)和4位数据长度码(DLC),这两个保留位必须发送显性位(逻辑0)。数据场:数据场由被发送的数据组成,包括0~8个字节(最长8字节)。CRC场:由15位CRC序列和1位CRC界定符(必须为逻辑1)组成。应答场:(ACK)由应答间隙(逻辑1)和应答界定符(逻辑0)组成。帧结束:每个数据帧和远程帧均由7个隐性位(逻辑1)组成。扩展数据帧格式帧起始:同标准帧格式。仲裁场:在扩展帧格式中,仲裁场由:11位基本ID、SRR、IDE、18位扩展ID、RTR组成。SRR位为“替代远程请求位”,属于扩展格式,它位于扩展帧中标准帧RTR的位置,因而替代标准帧的RTR位。在扩展帧格式中,IDE属于仲裁场,采用隐性电平;标准格式中,IDE属于控制场,采用现行电平;通过IDE可以区分标准帧和扩展帧。 控制场:同标准帧格式 数据场:同标准帧格式。CRC场:同标准帧格式。应答场:同标准帧格式。帧结束:同标准帧格式。远程帧:用于请求具有同一标识符的数据帧远程帧也有标准格式和扩展格式,而且都由6 个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结尾。远程帧的组成如下图。远程帧本身没有数据场,除RTR位被设置为1,其余部分与数据帧完全相同错误帧:任何单元检测到总线错误就发出错误帧错误帧由两个不同的场组成。第一个场是由不同站提供的错误标志(ERROR FLAG)的叠加;第二个场是错误界定符。出错帧的组成如下图。错误标志重叠:错误标志分为主动错误标志和被动错误标志。主动错误标志由6个显性位(逻辑0)组成,被动错误标志由6个隐性位(逻辑1)组成。当一个节点发生错误时,如果处于主动错误状态就会发送主动错误标志,处于被动错误状态时发送被点动错误标志。错误界定符:错误界定符由8个隐性电平(逻辑1)组成,用于结束错误帧(1位错误界定符7位EOF组成)。过载帧:用于在先行和后续数据帧(或远程帧)之间提供一附加的延时过载帧通常由尚未处理完上一帧消息的CAN控制器发出,可以用于延迟网络中其他设备发送下一帧消息。过载帧的结构类似于错误帧,过载帧包括两个位
文档评论(0)