05--STM32之CAN---TTCAN模式浅析.doc_第1页
05--STM32之CAN---TTCAN模式浅析.doc_第2页
05--STM32之CAN---TTCAN模式浅析.doc_第3页
05--STM32之CAN---TTCAN模式浅析.doc_第4页
05--STM32之CAN---TTCAN模式浅析.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM32之CAN-TTCAN模式浅析1 前言 传统CAN 采用事件触发消息传输机制,CSMA/ CD+ AMP( Carrier-Sense Mult iple Access w ith Co llision Detect ion and Arbit ration on Message Priorit ies, 载波侦听、多路访问、冲突检测、优先级仲裁) 介质访问控制机制, 即多个消息同时发送时, 按照消息标识符的优先级顺序, 低优先级消息自动退出, 高优先级消息继续发送。这种介质访问方式提高了网络的利用率和高优先级消息的实时性, 但在重负载CAN 中, 低优先级消息经常由于总线冲突而被迫退出发送, 导致低优先级消息传输时延长, 且传输时延不可预测, 因此, CAN 不适合实时性和可靠性要求特别高或有安全性要求的场合, 如汽车电子钟的X-by-w ir e( 线控技术) 。为此国外有专家自2000 年起研究时间触发机制的CAN -TT CAN。2004 年国际标准化组织将TT CAN 制定为ISO 11898-4国际标准。2 什么是TTCAN? TT CA N 是CAN 的高层协议, 其数据链路层需要帧起始时刻信息。T TCAN 在CAN 的物理层和数据链路层基础上, 通过调度表实现网路上节点的分时同步通信。网路上各节点取得同步后, 消息只能根据调度表在规定的时间隙传输, 避免了消息传输的冲突、仲裁,消息传输时延短, 且可预知。具体介绍请参考ISO11898-4。3 STM32中的TTCAN实现3.1 开启TTCAN模式STM32是通过主控制寄存器(CAN_MCR)的TTCM位来控制TTCAN模式的使能开关的。CAN_MCR寄存器如下所示:地址偏移量: 0x00复位值: 0x0001 0002图1位31:16保留,硬件强制为0。位15RESET: bxCAN 软件复位0: 本外设正常工作;1: 对bxCAN进行强行复位,复位后bxCAN进入睡眠模式(FMP位和CAN_MCR寄存器被初始化为其复位值)。此后硬件自动对该位清0。位14:8保留,硬件强制为0。位7TTCM: 时间触发通信模式0: 禁止时间触发通信模式;1: 允许时间触发通信模式。位6ABOM: 自动离线(Bus-Off)管理该位决定CAN硬件在什么条件下可以退出离线状态。0: 离线状态的退出是在,软件对CAN_MCR寄存器的INRQ位进行置1随后清0后,一旦硬件检测到128次11位连续的隐性位,就退出离线状态;1: 一旦硬件检测到128次11位连续的隐性位,自动退出离线状态。位5AWUM: 自动唤醒模式该位决定CAN处在睡眠模式时由硬件还是软件唤醒0: 睡眠模式通过清除CAN_MCR寄存器的SLEEP位,由软件唤醒;1: 睡眠模式通过检测CAN报文,由硬件自动唤醒。唤醒的同时,硬件自动对CAN_MSR寄存器的SLEEP和SLAK位清0 。位4NART: 禁止报文自动重传0: 按照CAN标准,CAN硬件在发送报文失败时会一直自动重传直到发送成功;1: CAN报文只被发送1次,不管发送的结果如何(成功、出错或仲裁丢失)。位3RFLM: 接收FIFO锁定模式0: 在接收溢出时FIFO未被锁定,当接收FIFO的报文未被读出,下一个收到的报文会覆盖原有的报文;1: 在接收溢出时FIFO被锁定,当接收FIFO的报文未被读出,下一个收到的报文会被丢弃。位2TXFP: 发送FIFO优先级当有多个报文同时在等待发送时,该位决定这些报文的发送顺序0: 优先级由报文的标识符来决定;1: 优先级由发送请求的顺序来决定。位1SLEEP: 睡眠模式请求软件对该位置1可以请求CAN进入睡眠模式,一旦当前的CAN活动(发送或接收报文)结束,CAN就进入睡眠。软件对该位清0使CAN退出睡眠模式。当设置了AWUM位且在CAN Rx信号中检测出SOF位时,硬件对该位清0。在复位后该位被置1CAN在复位后处于睡眠模式。位0INRQ: 初始化请求软件对该位清0可使CAN从初始化模式进入正常工作模式:当CAN在接收引脚检测到连续的11个隐性位后,CAN就达到同步,并为接收和发送数据作好准备了。为此,硬件相应地对CAN_MSR寄存器的INAK位清0。软件对该位置1可使CAN从正常工作模式进入初始化模式:一旦当前的CAN活动(发送或接收)结束,CAN就进入初始化模式。相应地,硬件对CAN_MSR寄存器的INAK位置1。如上,只需要将CAN_MCR寄存器的TTCM位置1则开启了TTCAN模式。此时STM32的CAN模式以TTCAN模式进行通信。STM32F20x的固件库对应开启TTCAN模式的接口为:cppview plaincopy1. /*2. *briefEnablesordisablestheCANTimeTriggerOperationcommunicationmode.3. *noteDLCmustbeprogrammedas8inorderTimeStamp(2bytes)tobe4. *sentovertheCANbus.5. *paramCANx:wherexcanbe1or2totoselecttheCANperipheral.6. *paramNewState:Modenewstate.Thisparametercanbe:ENABLEorDISABLE.7. *Whenenabled,Timestamp(TIME15:0)valueissentinthelasttwo8. *databytesofthe8-bytemessage:TIME7:0indatabyte6andTIME15:89. *indatabyte7.10. *retvalNone11. */12. voidCAN_TTComModeCmd(CAN_TypeDef*CANx,FunctionalStateNewState);或者在初始化CAN_Init时,将CAN_InitTypeDef的成员CAN_TTCM使能。3.2 开启时间戳在TTCAN模式下,CAN硬件的内部定时器被激活,并且被用于产生发送与接收邮箱的)时间戳,分别存储在CAN_RDTxR/CAN_TDTxR寄存器中。内部定时器在每个CAN位时间累加。内部定时器在接收和发送的帧起始位的采样点位置被采样,并生成时间戳。如下:发送邮箱时间戳:图2如上图:在TTCAN模式下,TIME15:0将保留SOF的时间戳。若通过将TGT位置1则开启了时间戳,此时TIME15:0将保存了在发送该报文SOF的时刻,16位定时器的值。同时,在发送长度为8的报文中,时间戳TIME15:0是最后2个发送的字节:TIME7:0作为第7个字节,TIME15:8为第8个字节,它们替换了写入CAN_TDHxR31:16的数据(DA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论