`
jiagou
  • 浏览: 2537871 次
文章分类
社区版块
存档分类
最新评论

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。
位15 RESET: bxCAN 软件复位
0: 本外设正常工作;
1: 对bxCAN进行强行复位,复位后bxCAN进入睡眠模式(FMP位和CAN_MCR寄存器被初始化为其复位值)。此后硬件自动对该位清0。
位14:8 保留,硬件强制为0。
位7 TTCM: 时间触发通信模式
0: 禁止时间触发通信模式;
1: 允许时间触发通信模式。
位6 ABOM: 自动离线(Bus-Off)管理
该位决定CAN硬件在什么条件下可以退出离线状态。
0: 离线状态的退出是在,软件对CAN_MCR寄存器的INRQ位进行置1随后清0后,一旦硬件检测到128次11位连续的隐性位,就退出离线状态;
1: 一旦硬件检测到128次11位连续的隐性位,自动退出离线状态。
位5 AWUM: 自动唤醒模式
该位决定CAN处在睡眠模式时由硬件还是软件唤醒
0: 睡眠模式通过清除CAN_MCR寄存器的SLEEP位,由软件唤醒;
1: 睡眠模式通过检测CAN报文,由硬件自动唤醒。唤醒的同时,硬件自动对CAN_MSR寄存器的SLEEP和SLAK位清0 。
位4 NART: 禁止报文自动重传
0: 按照CAN标准,CAN硬件在发送报文失败时会一直自动重传直到发送成功;
1: CAN报文只被发送1次,不管发送的结果如何(成功、出错或仲裁丢失)。
位3 RFLM: 接收FIFO锁定模式
0: 在接收溢出时FIFO未被锁定,当接收FIFO的报文未被读出,下一个收到的报文会覆盖原有的报文;
1: 在接收溢出时FIFO被锁定,当接收FIFO的报文未被读出,下一个收到的报文会被丢弃。
位2 TXFP: 发送FIFO优先级
当有多个报文同时在等待发送时,该位决定这些报文的发送顺序
0: 优先级由报文的标识符来决定;
1: 优先级由发送请求的顺序来决定。
位1 SLEEP: 睡眠模式请求
软件对该位置1可以请求CAN进入睡眠模式,一旦当前的CAN活动(发送或接收报文)结束,CAN就进入睡眠。
软件对该位清0使CAN退出睡眠模式。
当设置了AWUM位且在CAN Rx信号中检测出SOF位时,硬件对该位清0。
在复位后该位被置1-CAN在复位后处于睡眠模式。
位0 INRQ: 初始化请求
软件对该位清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模式的接口为:

/**
  * @brief  Enables or disables the CAN Time TriggerOperation communication mode.
  * @note   DLC must be programmed as 8 in order Time Stamp (2 bytes) to be 
  *         sent over the CAN bus.  
  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral.
  * @param  NewState: Mode new state. This parameter can be: ENABLE or DISABLE.
  *         When enabled, Time stamp (TIME[15:0]) value is  sent in the last two
  *         data bytes of the 8-byte message: TIME[7:0] in data byte 6 and TIME[15:8] 
  *         in data byte 7. 
  * @retval None
  */
void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState);

或者在初始化CAN_Init时,将CAN_InitTypeDef的成员CAN_TTCM使能。

3.2 开启时间戳

在TTCAN模式下,CAN硬件的内部定时器被激活,并且被用于产生发送与接收邮箱的)时间戳,分别存储在CAN_RDTxR/CAN_TDTxR寄存器中。内部定时器在每个CAN位时间累加。内部定时器在接收和发送的帧起始位的采样点位置被采样,并生成时间戳。如下:

发送邮箱时间戳:

图2

如上图:在TTCAN模式下,TIME[15:0]将保留SOF的时间戳。

若通过将TGT位置1则开启了时间戳,此时TIME[15:0]将保存了在发送该报文SOF的时刻,16位定时器的值。同时,在发送长度为8的报文中,时间戳TIME[15:0]是最后2个发送的字节:TIME[7:0]作为第7个字节,TIME[15:8]为第8个字节,它们替换了写入CAN_TDHxR[31:16]的数据(DATA6[7:0]和DATA7[7:0])。为了把时间戳的2个字节发送出去,DLC必须编程为8。

在源码中开启此功能,修改CAN_TypeDef的sTxMailBox[3]的RDTR寄存器。

接收邮箱时间戳:

图3

在TTCAN模式下,接收邮箱数据长度和时间戳寄存器的TIME[15:0]记录接收到的报文的SOF时间戳。


完!

分享到:
评论

相关推荐

    STM32 CAN学习

    STM32之CAN---TTCAN模式浅析.mht STM32之CAN---中断管理浅析.mht STM32之CAN---发送管理分析.mht STM32之CAN---工作-测试模式浅析.mht STM32之CAN---接收管理分析.mht STM32之CAN---配置波特率.mht STM32之CAN---...

    基于STM32的TTCAN Level1节点设计.pdf

    基于STM32的TTCAN Level1节点设计.pdf

    基于STM32的TTCAN Level1节点设计.zip

    基于STM32的TTCAN Level1节点设计

    基于TTCAN协议的井下通信网络研究

    针对煤矿井下CAN通信网络中低优先级数据延迟较大而存在实时性与确定性较差的问题,提出了一种基于时间触发机制的TTCAN协议;给出了由主站节点和多个从站节点构成的TTCAN网络系统硬件结构,详细介绍了基于Level 1同步...

    基于PXA322的TTCAN网络的研究与设计

    针对CAN网络在调度信号时的不确定性和低优先级信号延迟较大,容易死锁的缺陷问题,提出了基于时间触发机制的TTCAN协议,可以有效改善CAN网络通信的实时性和不确定性。本文通过对TTCAN协议和调度算法的研究,采用...

    时间触发的CAN协议TTCAN.pdf

    时间触发的CAN协议TTCAN.pdf

    MultiCAN – a step to CAN and TTCAN.pdf

    MultiCAN is a new CAN module, which is building up a bridge between TTCAN level 1 & 2 and normal CAN network.

    基于DSP的TTCAN控制器设计

    基于DSP的TTCAN控制器设计.pdf

    CAN与TTCAN通信延迟时间的分析 (2006年)

    为了优化设计采用CAN、TTCAN通信协议的通信系统的应用层,需建立CAN、TTCAN中各消息帧的通信延迟时间的数学模型,分析消息帧的延迟时间。利用该文搭建的通信系统仿真与开发试验平台,对不同网络负载下的通信延迟时间...

    基于CAN与TTCAN的汽车整车分层控制网络及调度 (2007年)

    在分析汽车控制系统信息特点的基础上,构建了动力传动时间触发控制器局域网(TTCAN)和车身控制器局域网(CAN)子网互连的整车分层网络,针对动力传动TTCAN子网提出均匀装载(AL)调度策略;针对车身控制CAN子网采用...

    TTCAN系统及其在分布式车辆网络中的应用

    在车辆总线技术研究的基础上分析了...不足引入时间触发通信协议,阐述了时间触发CAN( TTCAN) 系统结构、定时机制、容错等关键技术,并对车辆其它 类似总线进行了分析,最后对TTCAN 在分布式车辆网络中的应用前景进行了展望

    基于XC164CS的车载TTCAN网络通信设计

    阐述Infineon XC164CS单片机...根据XC164CS的应用特性设计了适用于TTCAN的车载动力系统的CAN通信网络,开发了相应的硬件接口电路,并在μC/OSII嵌入式系统平台上设计了通信模块的底层驱动软件以及多任务应用程序。

    boach ttcan datasheet

    ttcan的datasheet 由BOACH公司提供 主要介绍TTCAN的IP MODULE 希望能对大家有所帮助

    TTCAN协议的分析与展望

    TTCAN 是一种基于CAN 总线充分利用时间触发与事件触发两种机制优点的新型协议,其具有带宽利用率 高、通讯延时低以及消息传输可管理等特点,对于分布式硬实时系统的应用以及解决网络控制系统中消息延时具有 重大的意义...

    AUTOSAR_SRS_TTCAN.zip

    AUTOSAR_SRS_TTCAN.zip

    AUTOSAR_SRS_TTCAN.pdf

    AUTOSAR_SRS_TTCAN.pdf

    基于CANoe的混合动力电动车TTCAN建模与仿真.pdf

    针对混合动力电动车控制器网络的特点,使用对独占窗和仲裁窗分别调度的系统矩阵设计方法设计了时间触发 CAN总线 (TTCAN)协议。在对网络仿真系统 CANoe进行二次开发、增加应用层和会话层模型的基础上,对所设计协议进行...

    燃料电池汽车TTCAN网络的调度设计 (2010年)

    针对目前燃料电池汽车应用层协议不统一的情况,该文以自主研发的燃料电池中巴车为对象,基于 SAE J1939协议,利用均匀装载(AL)调度算法实现了其动力总成系统 TTCAN协议的调度设计,该协议对其各节点源地址分配、优先级和...

    矿用新能源电机车CAN通信网络软件优化方法

    针对矿用新能源电机车CAN节点发送错误造成关键信息丢失的隐患,在TTCAN协议的基础上提出了CAN总线发送容错方法,即对CAN节点发送失败的报文重新发送,当发送成功或者达到预设的最大重发次数后退出该报文的发送;...

Global site tag (gtag.js) - Google Analytics