




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CAN模块用户手册1. 引言FlexCAN (FC)模块实现控制器局域网络协议(CAN)通信。CAN是一种用于汽车和工业控制系统异步通讯协议,是高速(1Mbit/sec)、短时间间隔、基于优先级的协议,能够使用多种通讯媒介(例如:光缆,非屏蔽线对等)。FlexCAN 模块同时支持CAN协议规范2.0版、B部分所规定的标准帧和扩展帧。CAN协议主要但不是仅仅地用于车辆串行总线,面对这样的特殊要求现场:实时处理、车辆电磁干扰环境的可靠操作、成本效率和需要的带宽等。本文档理论上采用CAN协议2.0版的一般应用知识。更详细的参见CAN协议规范2.0版。2. 功能说明 基于并包含所有现有的TouCAN 模块功能。 IP接口结构。 完全实现CAN协议规范2.0 标准数据和远程帧 (直到109位长度) 扩展数据和远程帧 (直到127位长度) 08字节数据长度。 可编程位速率直到1Mbit/sec。 多达16个08字节长度的弹性信息缓存器,各自可以配置为接收或传输,所有的都支持标准帧和扩展帧。 允许单侦听模式。 内容相关的寻址。 无读/写信号。 三个可编程过滤寄存器: 全局过滤 (用于MBs 0-13) MB14专用 MB15专用 独立于传输介质(假设使用外部收发器)。 开放的网络架构。 多主总线。 高度抗电磁干扰。 高优先级信息短延迟时间。 低功耗睡眠模式,可编程总线活动唤醒。3. 结构图图1:4. 典型的CAN系统图图2每个CAN站点物理上通过一个收发器连接到CAN总线,收发器提供CAN总线上通讯所需的传输驱动、波形,以及接受/比较等功能,还提供保护以预防不良的总线或站点对FlexCAN模块造成损坏。5. 信息缓存123455.1 信息缓存器结构。图3 说明扩展(29-bit) ID信息缓存器结构;图4说明标准(11-bit) ID 信息缓存器结构。图3图45.2 扩展和标准格式帧的公共字段。如表1:表1:公共字段字段描述TIMESTAMP时间戳。装载CAN总线上本帧ID开始时捕捉的自由运行定时器的高字节值的拷贝。CODE参见表2 和表3LENGTH(接收时)存储在缓存器地址偏移量$3到$6中的接收到的数据长度。该字段由FlexCAN 模块填写,拷贝自接收数据的DLC字段。万一接收到的DLC字段的值超过8,则只有前8个接收到的数据字节被保存。LENGTH(发送时)位于缓存器地址偏移量$3到$6中的待发送数据长度。该字段由器件填写,用于作为DLC字段的值。如果远程传送请求(RTR)=1,本帧作为远程帧,DATA字段不被传输,从而忽略LENGTH的值。DATA数据。本字段存储帧数据直到8字节。对于接收帧,这些数据作为从总线上收到的数据存储;对于发送帧,器件提供所需要发送的帧内数据。Reserved保留字。该字的整个字段(16Bit)器件不能访问。改字用于内部测试,不允许以任何方式访问。表2:接收缓存器编码接收新帧前描述新帧收到后注释0000NOT ACTIVE:信息缓存未激活0100EMPTY:信息缓存有效且是空的00100010FULL:信息缓存满0110如果器件读取发生在新帧到来之前,新接收码是: 00100110OVERRUN:在器件读取第一个信息之前,第二个信息写入填满的缓存。0101*BUSY:信息缓冲正在被新接收的帧填写。这种情形将在20周期内清除。0010填写了空缓存0011*0110填写了满缓存0111*0110填写了已经溢出的缓存* 对于发送信息缓存,读的时候应忽略BUSY位。表3:发送缓存器编码RTR初始值描述发送之后X1000信息缓存器没有准备好发送01100数据帧无条件传送一次。100011100远程帧传送一次,并且信息缓冲器转换成数据帧的接收信息缓存。010001010*数据帧仅作为远程帧的响应传送。101001110数据帧无条件传送一次,然后仅作为远程帧的响应。1010* 当检测到匹配的远程请求帧,这样的信息缓冲编码变为1110。5.3 仅用于扩展模式帧的字段。表4:扩展帧字段描述ID28:18/17:15包含14个扩展标识的最高位,位于信息缓冲区的ID HIGH 字。置换远程请求(SRR)包含一个确定的隐性位,仅用于扩展模式,对于发送缓冲,需将此位置1,对于接收帧将按在总线上收到的来保存,该位位于信息缓冲区(MB)的ID HIGH 字。如果FlexCAN模块发送了一个值,并收到了匹配的响应,预示着一个成功的位传送。无论如何,如果FlexCAN模块以“1”来传送此位,但却收到它为“0”,预示着失去了仲裁;并且,如果FlexCAN模块以“0”来传送此位,但却收到它为“1”,意味着发生了1个位错误。ID 扩展(IDE)如果使用扩展帧,该字段必须设置为“1”,如为“0”,将使用标准帧。该位位于信息缓冲区(MB)的ID HIGH 字。ID14:0扩展标识符ID的位14:0,位于信息缓冲区(MB)的ID LOW 字。远程发送请求(RTR)该位是信息缓冲区(MB)的ID LOW 字的最低位(LSB):0:数据帧;1:远程帧。5.4 仅用于标准模式帧的字段。表5:标准帧字段描述ID28:18包含位28:18,位于信息缓冲区(MB)的ID HIGH 字。该寄存器的四个最低位(LSBs)(对应于扩展帧的IDE位和ID17:15),必须全部写为逻辑0,以确保 FlexCAN模块的正确操作,图示于第4节。远程发送请求(RTR)该位是信息缓冲区(MB)的ID LOW 字的最低位:0:数据帧;1:远程帧。如果FlexCAN模块发送了一个值,并收到了匹配的响应,预示着一个成功的位传送。无论如何,如果FlexCAN模块以“1”来传送此位,但却收到它为“0”,预示着失去了仲裁;并且,如果FlexCAN模块以“0”来传送此位,但却收到它为“1”,意味着发生了1个位错误。16-Bit Time Stamp16位时间戳,位于信息缓冲(MB)的ID LOW字, 标准帧是不需要的。在标准信息缓存中,它用于保存自由运行定时器的16位值,该定时器值是ID字段开始在CAN总线上传输时捕捉的。6. 功能概述FlexCAN模块是弹性的,允许它的16个信息缓存(MBs)中的各个分配为传输缓冲或接收缓冲,各MB也可以分配中断标志位,指示传输或接收成功完成。注:对于所有的过程,准备MB的第一个动作应当是通过将它的CODE字段设为适当的值将其变成非活动状态。这个要求是强制性的,以确保正确的操作。66.1 发送过程器件通过执行以下的步骤准备或转换为发送MB: 写控制/状态字(Control/Status word)保持发送MB处于非活动状态(CODE = 1000); 写入ID_HIGH和ID_LOW字; 写入数据字节; 写控制/状态字(Control/Status word) (激活码CODE, LENGTH)注:第一和最后一步是强制性的。从最后一步开始,该MB将参加内部仲裁过程,该过程发生在每次接收,或帧间时隙,检测到CAN总线空闲以及至少一个MB准备发送。内部仲裁旨在选择下一个发送的MB。当该过程结束传输仲裁胜出的MB帧将传送至串行信息缓存(SMB, 参见6.3.1节)以发送(传出)。发送过程中,FlexCAN模块传输多达8字节的DATA字段,即使LENGTH字段得值更大。(当LENGTH 8,传输的帧中DLC = 8)在成功传输结束后: 自由运行定时器的值(ID字段开始在CAN总线上传输时捕捉的) 写入MB的TIME_STAMP字段。 MB控制/状态字(Control/Status word)中的CODE字段更新。 中断标志寄存器的某状态标志置位(FCIFLAG1,8.12节)。6.1.1 传输中断。如果对应的FCIMASK1位置位,每个MB都可以成为中断源。对于特定的MB,接收和发送中断并没有区别。更多关于FCIMASK1和中断的信息参见第8.11、8.12和第9节。6.1.2 传输轮询。如果使用软件轮询来发送,必须读FCIFLAG1寄存器来确定发送状态。警告:不要通过读MB的控制状态字来确定发送状态,因为这个程序将导致此MB锁定。更多信息参见8.12节FCIFLAG1寄存器。6.2 接收过程。器件通过执行以下的步骤准备或转换为接收MB: 写MB的控制/状态字(Control/Status word)保持接收寄存器为非活动状态(CODE = 0000); 写入ID_HIGH和ID_LOW字; 写控制/状态字(Control/Status word)指明该MB为活动的和空的(CODE = 0100)。注:第一步和最后一步是强制性的。从最后一步开始,该MB是一个活动的接收缓冲器,并参加内部的匹配过程,发生在每次收到无误的帧。在此过程中,所有的活动的接收寄存器将自己的ID与更新的接收的ID相比较,如果发生了匹配事件,该帧将传送(移进)至第一个(最低入口)匹配的MB。自由运行定时器的值(捕捉于IDENTIFIER字段开始在CAN总线上传输时的时刻),写入MB的TIME_STAMP字段。ID字段、DATA字段(最多8字节)、以及LENGTH接着被存入,CODE字段被更新,以及,中断标志寄存器(FCIFLAG1)中的一个BUFnnI标志置位。器件应当按照以下的方法从MB中读取接收的帧: 控制/状态字(Control/Status word) (必须的,激活本缓存的内部锁定); ID(可选仅当使用屏蔽时才是必要地); DATA字段的字; 自由运行定时器(释放内部锁定可选)。对于自由运行定时器的读取不是必须的,如果没有执行,该MB将保持锁定,除非器件开始了读取另一个MB的过程。注:在任何时刻仅有单个MB是锁定的。唯一必须的器件操作是读控制/状态字(Control/Status word),以确保数据的一致性。如果BUSY位置位,器件需要推迟操作直到此位清零。注:接收到的IDENTIFIER字段总是存储在匹配的MB中,因此MB中ID字段的内容可能由MASK导致改变。注:如果数据字节数是奇数(如LENGTH字段指示),则最后一字节将被重复以填充16位的字。接受的全部数据字段在移进时写入,故此如果接受的字节数少于8,未使用的字节不会保持它们以前的值。6.2.1 接收中断。如果对应的FCIMASK1位置位,每个MB都可以成为中断源。对于特定的MB,接收和发送中断并没有区别。更多关于FCIMASK1和中断的信息参见第8.11、8.12和第9节。6.2.2 接收轮询。如果使用软件来进行接收轮询,必须读FCIFLAG1寄存器来确定发送状态。警告:不要通过读MB的控制状态字来确定接收状态,因为这个过程将导致此MB锁定。更多信息参见8.12节FCIFLAG1寄存器。6.2.3 自接收的帧。如果匹配的接收MB存在,FlexCAN模块收到自己发送的帧。6.3 信息缓冲管理。为维护数据的一致性和正确的FlexCAN操作,器件必须遵从6.1和3.2节所列的规则。解除MB活动是一个核心动作,导致MB拒绝来自FlexCAN的发送和接收过程。任何对MB结构的控制/状态字(Control/Status word)的写访问会解除MB活动,该过程使其排斥收/发进程。任何形式的FlexCAN模块内部的MB访问(不同于6.1和6.2节指明的)将导致FlexCAN模块不可预知的行为。匹配/仲裁过程仅在一个周期期间由FlexCAN模块来完成。一旦确定了胜出或匹配,就没有任何的重新评估动作,以保证接收帧不会丢失。如果在FlexCAN扫描第二个之后解除了匹配的MB的活动,则两个或更多的接收MB对接收帧持有匹配的ID也不能确保接收。假设MB0和MB1被设置为接收匹配同一个ID的帧,最低号数的MB(MB0)对接收信息具有优先权,如果收到了匹配的ID,将移入MB0。但如果MB0被锁定,信息将逗留在串行信息缓冲区(SMB),如6.3.1节讨论的那样,如果MB0在第1次扫描MB1后被解除活动,则移动操作不能确保。在扫描过程中,FlexCAN模块将读取每个MB的控制/状态字(Control/Status word),并搜索活动接收码,如果ID_HIGH字显示该MB配置为接收扩展帧,FlexCAN模块将检查ID_LOW,否则它将访问下一个控制/状态字。这次FlexCAN将在扫描MB0后找到一次匹配,但它并不就此退出扫描,因为MB0被锁定,它将去向MB1。它也将发现MB1活动并且与ID匹配,但优先级较低,从而数据没有被存储。因此如果在扫描MB1后故意解除MB0的活动,在扫描过程的最后,FlexCAN将找不到数据移入的有效MB。6.3.1 串行信息缓存 (SMBs)为了对信息进行双重缓冲,FlexCAN模块有两个影子缓存,称为串行信息缓存(SMBs)。这两个缓存由FlexCAN模块用来保存接收和发送的两个信息。在同一时刻,仅有一个SMB是活动的,其功能取决于FlexCAN模块在那一时刻的操作。这两个缓冲的任何一个在任何时间都是不可访问的或不可见的。6.3.2 解除发送信息缓冲的活动。当选择一个MB来发送时,对其控制/状态字(Control/Status word)的任何写访问都将立即解除其活动,从而从发送进程中移除。 如果一个信息开始从发送缓冲移入SMB时该MB被解除活动,本条信息将不会发送。 如果一个信息从发送缓冲移入SMB之后该MB被解除活动,信息会被发送,但不会产生中断,TX CODE也不会更新。 如果一条拥有最低优先级的信息正在内部接受发送仲裁,其MB被解除活动,则信息不被发出。6.3.3 解除接收信息缓冲的活动。当选择一个MB来接收时,对其控制/状态字(Control/Status word)的任何写访问都将立即解除其活动,从而从接收进程中移除。 如果一个信息开始移入时该MB被解除活动,传输将被终止并且不会申告中断。如果发生了这样的情况,接收MB中可能保存着两个不同帧的混合数据。警告:绝对不要把数据写入接收MB。如果信息正从SMB传入时这样做,控制/状态字表现为填满(FULL)或溢出(OVER RUN)的情形,但不请求中断。这个动作绝对禁止!6.4 锁定/释放/忙碌机构以及SMB的用法。该机构的执行用于在接收和发送两个进程中确保数据的一致性。该机构包含FlexCAN模块内部的一个MB和两个SMB的缓冲帧传输的锁定状态(Lock Status)。 器件读取MB的控制/状态字(Control/Status word)时触发该MB的锁定,也就是说一个新的与该MB匹配的接收帧不能写入该MB。 为了释放一个锁定的MB,器件可以通过读取控制/状态字的方式锁定另一个MB,或者通过读取自由运行定时器全局释放所有的锁定MB。 若一个MB被锁定时,收到了匹配的接收帧,则此帧不能存入该MB,保留在SMB中,这种情形没有指示。 若一个MB被锁定时,收到了两个或更多的匹配接收帧,则最后收到的一个保留在SMB中,同时先期接收的丢失,这种情形没有指示。 如果锁定的MB释放,SMB中又存在有匹配的帧,则该帧传送到匹配的MB。 如果器件在SMB正在向接收MB传输时读取该MB,控制/状态字的BUSY CODE位置位,为保证数据的一致性,器件需要等到该位清零,这时该MB没有锁定,才能进一步读取。 如果器件解除一个锁定MB的活动,其锁定状态清除,但没有数据传入该MB。6.5 远程帧。远程帧是发送去请求数据帧的信息帧。FlexCAN模块能够配置为自动发送数据帧来响应远程帧,或者发送远程帧然后等待接收应答的数据帧。当发送一个远程帧: 初始化一个MB作为发送MB,并将远程发送请求(RTR)位置1。一旦此远程帧被成功发送,该发送MB自动成为带有同样ID的接收MB。当FlexCAN模块接收到一个远程帧: 远程帧ID与所有CODE字段编程为1010的发送MB的ID进行比较; 如果有一个ID精确匹配的MB,其中的数据帧被发送; 如果匹配的发送MB中的RTR位置位,FlexCAN模块传输一个远程帧作为响应。接收的远程帧并不存放在接收MB中,它仅仅用于触发自动应答。屏蔽寄存器不用于远程帧ID的匹配。新来接收帧的所有ID位(除RTR)必须匹配远程帧,以触发应答发送。在远程帧已收到并匹配发送MB的情况下,该MB立即进入内部仲裁进程,但仅仅作为一个没有高优先级的普通发送MB。6.6 过载帧。除非CAN总线上检测到特定的条件,过载帧不由FlexCAN模块发起,这些条件包括: 在间隔的第1或第2位检测到一个显性位; 在接收帧的帧结束(EOF)字段的第7(最后)位检测到显性位。 在错误帧或过载帧定界符的第8位(最后)检测到显性位。6.7 时间戳。这个数值采样于ID字段开始在CAN总线上时的16位自由运行定时计数器。 对于接收到的信息,时间戳在信息写入缓冲的时刻存储到接收MB的TIME_STAMP字段。对于发送帧,一旦发送正确完成,TIME_STAMP字段会被写入发送MB。】自由运行定时器可以在一条信息接收进MB0时复位。这项功能允许实现网络时间同步。参见8.21节中FCCTL0寄存器的TSYNC位。6.8 单侦听模式。单侦听模式下,FlexCAN模块能够接收另一个站点的接收信息应答。无论何时模块进入该模式后,错误计数器冻结,FlexCAN模块在错误被动模式下运行。错误和状态寄存器的故障限制位指示被动错误,而不考虑错误计数器的值。因为该模式下,模块不影响CAN总线,器件能够履行监视器的功能,或者自动位速率测试。不论如何,FlexCAN将仅仅监视有效的传输而不会导致错误。这要求总线上的另一个CAN模块提供应答(ACK)位以完成传送。一旦设定到这种模式,FlexCAN模块等待进入传输间隔、被动错误、总线关闭或空闲状态。在等待周期内,FlexCAN模块等待进入此模式之前的所有内部活动的完成,不同于作为CAN总线接口的行为。6.9 位定时。FlexCAN模块支持以多种方式设置CAN协议要求的位定时参数。有两个16为寄存器(FCCTL0 和FCCTL1)来确定位定时参数各个字段的值。传播段(PROPSEG),1/2相位段(PSEG1 and PSEG2),以及同步跳跃宽度(RJW)都通过FCCTL0 和FCCTL1寄存器来编程,参见8.2和8.3节。同样,FlexCAN维护一个预分频(PRES_DIV)值,以确定系统时钟和SCLOCK、当前时间元之间的比率。表6: System Clock/CAN Bit-Rate/S-Clock 举例系统时钟频率 (Mhz)Can位速率(Mhz)允许的S-Clock频率(Mhz)允许的时间元/位数量预分频器编程值 + 1注释60120, 15, 12, 1020, 15, 12, 103, 4, 5, 6最少8个、最多25个元时间56114, 814, 84, 754118, 918, 93, 650125, 1025, 102, 5600.1253, 2.5, 2, 1.875,1.5, 1.25, 124, 20, 16, 15, 12,10, 820, 24, 30, 3240, 48, 606.9.1 配置FlexCAN模块位定时。位定时的详细内容参考CAN通讯协议2.0规范。编程位定时功能时必须注意以下的考虑: 如果编程后的PRES_DIV值导致每时间元一个系统时钟,FCCTL1寄存器的PSEG2字段必须编程为0。 如果编程后的PRES_DIV值导致每时间元一个系统时钟,信息处理时间(IPT)等于3个时间元,要不它等于两个时间元。如果PSEG2 = 2,FlexCAN模块传输时相对于同步段推迟一个时间元。 如果遇到下面两个条件,相对发送更早的帧起始SOF信号的节点,FlexCAN模块可能不能够及时准备一个MB来开始自身的发送与仲裁。 当预分频器和位定时控制字段编程到某个值,导致一个CAN位时间小于十个系统时钟周期,并且, CAN总线负载率为100%,任何时候其它节点的帧起始(SOF) 符号上升沿的发送发生在信息间隔的三位期间; FlexCAN模块位时间必须编程为大于或等于9个系统时钟,否则不能保证正确操作。6.9.2 FlexCAN初始化/复位顺序。FlexCAN模块按两种方法复位:a. 使用系统复位线硬件复位b. 在FCMCR中声明SOFT_RST软复位下面是复位的反面,FlexCAN模块不与CAN总线同步,FCMCR寄存器的 HALT和FRZ1位置位。其主要控制禁止,FCMCR的FREEZ_ACK和NOT_RDY位置位,FlexCAN模块的CANTX引脚处于隐性状态,不发起帧发送,也不从CAN总线上接收任何帧。SOFT_RESET或硬件复位后,MB的内容不作改变。通过FCMCR寄存器申告HALT位或复位改变或初始化FlexCAN模块,使之来冻结,需要进行所有的配置,参见7.1节。以下是FlexCAN模块可用的一般初始化顺序。 初始化所有操作模式: 位定时参数:PROPSEG, PSEG1, PSEG2, RJW (FCCTL0和FCCTL1寄存器); 通过编程FCCTL1寄存器的PRES_DIV字段来确定位速率; 确定内部仲裁模式(FCCTL0寄存器的LBUF位)。 初始化信息缓存(MBs): 所有的MB的控制/状态字必须作为活动或非活动写入; MB的其它项目必须按要求初始化。 初始化必要的MASK寄存器以允许接收屏蔽: 按要求设置FCIMASK1寄存器中的BUFnnI位(所有MB),FCCTL0中的Busoff和Error中断,FCMCR中的唤醒(Wake)中断。 初始化FlexCAN的中断管理程序: 清除FCMCR的HALT位: 从这个事件开始,FlexCAN模块开始尝试与CAN总线同步。7. 特殊操作模式77.1 调试模式。调试模式由FRZ1授权。假设FRZ1=1,当HALT置位时进入调试模式。一旦设置为这种模式,FlexCAN等待成为间断、被动错误、总线关闭或空闲状态。当处于这些状态其中之一时,FlexCAN等待内部的这些动作完成,另外相对于从前CAN总线接口发生了以下事件: FlexCAN模块停止收/发信息帧; 预分频器停止,导致所有相关行为停止; 允许器件读出或写入错误计数寄存器; FlexCAN模块忽略其CAN_RX引脚的输入,驱动该引线为隐性; FlexCAN模块与总线失去同步,FCMCR的NOT_RDY和FREEZ_ACK位置位。申告调试模式配置位后,执行下一步动作之前等待FCMCR 中的FREEZ_ACK位被置位。警告:疏忽于等待FREEZ_ACK置位将可能导致FlexCAN模块不可预知的行为。可以通过以下的方法之一退出调试模式: 清除HALT位; 清除FRZ1位;一旦退出了调试模式,FlexCAN模块通过等待11个连续的隐性位来尝试与CAN总线再次同步。7.2 用于省电的停止模式。注:这节讨论两种不同的停止模式。这里描述的停止模式是通过写FCMCR寄存器中的STOP位完成的内部停止模式。LPStop是通过STOP指令实现的,影响整个芯片。FlexCAN模块的停止模式是为了实现省电的功能。当设置这种模式,FlexCAN模块检查CAN总线是否处于总线关闭或空闲模式其中之一,否则它将等待传送间隔的第3位,检查其是否隐性。FlexCAN模块等待所有内部操作的完成,除了等待总线接口在发生以下事件之前: FlexCAN模块关闭它的时钟,停止大多数内部电路,因此节约了最大功率。 IPBus接口逻辑继续运行,允许器件访问FCMCR。 FlexCAN模块忽略CAN_RX输入引线,并驱动CAN_TX引线为隐性。 FlexCAN模块与总线失去同步,FCMCR的NOT_RDY和STOP_ACK位置位。可以通过以下的方法之一退出调试模式: 清除FCMCR的STOP位。 如果FlexCAN模块进入停止模式时,FCMCR的SELF_WAKE置位,则当检测到CAN总线上隐性到显性变化,FlexCAN模块复位FCMCR的STOP位,恢复时钟。当处于Stop或LPStop模式,CAN总线上的一个隐性到显性的变化将引起错误和状态寄存器中的WAKE_INT位置位。如果FCMCR中的WAKE_MASK位置位,该事件将引起一个器件中断。7.2.1 停止模式操作说明。 在停止/自唤醒模式下,FlexCAN模块尝试接收响应帧来唤醒,换而言之,假设接收到的显性位是帧起始,它不参加CAN总线的仲裁。 在宣告进入停止模式前,器件应当禁止FlexCAN模块的所有中断。如不这样做,在停止模式下的一个非唤醒(Non Wake-up)状态将导致一次中断。如需要,WAKE_MASK位需置位,以允许唤醒(Wake-up)中断。 如果宣告进入停止模式时FlexCAN模块处于总线关闭(Busoff)状态,模块将转到停止模式。在此时刻,它停止计数同步序列。一旦停止位被清除,计数将继续。参见8.10节。 按以下正确的流程进入带自唤醒功能的停止模式。 宣告停止(Stop)模式同时宣告自唤醒(SELF_WAKE)。 等待STOP_ACK位置位。 在自唤醒时清除停止状态的正确流程: 清除停止(Stop)模式同时清除自唤醒。 等待STOP_ACK位无效。 SELF_WAKE的设置仅能在FCMCR中STOP位清除以及FlexCAN模块就绪的情况下进行。也就是FCMCR的NOT_ RDY位是清除的。 如果设置了STOP和SELF_WAKE,并且如果一个隐性到显性的边沿随之立即出现在CAN总线上,FCMCR的STOP_ACK位可能永远不会置位,重新设置FCMCR STOP位。 为避免当FlexCAN模块唤醒时无用的旧帧被发送,可在停止之前禁用所有的发送源,远程响应也包含在内。 如果宣告停止模式时调试模式有效,调试模式的FlexCAN模块将被退出。调试模式试图同步CAN总线(11个连续的隐性位),搜索合适的条件来进入停止模式。 允许尝试复位后立即停止FlexCAN模块,但仅在完成基本初始化之后。 如果停止模式由自唤醒激活,并且FlexCAN模块运行在每元时间一个系统时钟的状态,有一种极端情形:FlexCAN模块由隐性到显性的边沿唤醒时可能不遵从BOSCH CAN协议,这种意义上,FlexCAN模块同步从必需的情形移动一个元时间。这种移动持续直到下一个隐性到显性的边沿,往回重新同步FlexCAN模块,以遵从协议。在自动节电模式由隐性到显性边沿唤醒的情形也同样适用。参见7.3节。 如果发送时期执行LPStop,数据可能丢失,发生与BOSCH CAN协议的不一致。使用时小心确认在将器件置于LPStop模式前,FlexCAN模块处于空闲状态。7.3 自动省电模式。FlexCAN模块的这个模式旨在优化电源节省的同时允许一般操作。设置FCMCR的AUTO_PWR_SAVE位,FlexCAN模块寻找时钟不必运行的一组条件,如果所有这些条件具备,FlexCAN模块停止其时钟,从而节约了电源。如果当时钟停止时,下面提及的条件的任何一个不再为真,模块恢复时钟。FlexCAN模块持续监视这些条件,据此停止或恢复时钟。 进程中没有接收或发送的帧。 接收/发送帧不在SMB和MB之间移动,或者任何MB中都没有待发送的CANTX帧。 FlexCAN模块核心访问不可用。 FlexCAN模块不处于以下的任何模式: 调试模式(FCMCR位8); 停止模式(FCMCR位15); 总线关闭。8. 寄存器定义。表7:FlexCAN存储器映射各个FlexCAN寄存器的地址是基址与偏移的和,关于FlexCAN基址的定义请参考器件的数据手册,所有的存储单元基址和偏移地址由寄存器汇总表以16进制给出。表8:FlexCAN寄存器汇总表8:FlexCAN寄存器汇总(续)表8:FlexCAN寄存器汇总(续)表8:FlexCAN寄存器汇总(续)127个寄存器各自的位域图示于图5,详细说明跟随其后。 图5:FlexCAN寄存器映射88.1 模块配置寄存器(FCMCR)图6:模块配置寄存器8.1.1 停止(STOP)Bit 15该位设置低功率睡眠模式,可以由器件设定。该位可由器件清除,如果FCMCR中的 SELF_WAKE置位,也可仅由FlexCAN清除。 0 = 允许FlexCAN时钟运行。 1 = 关闭FlexCAN时钟。请参考7.2节。8.1.2 冻结允许(FRZ1)Bit 14FRZ1位指定FlexCAN模块响应FCMCR的HALT位的声明。复位期间该位初始化为1,清除该位将导致FlexCAN模块退出调试模式,详细的描述参见7.1节。 0 = 忽略FCMCR的HALT位。FlexCAN模块正常运行。 1 = FlexCAN模块能够进入调试模式。当FREZ = 1时,允许FlexCAN模块进入FRZ1/HALT模式。为了进入该模式,FRZ1必须设为1,并且FCMCR 中的FRZ1/HALT必须设置,清除该位将导致FlexCAN模块从FRZ1/HALT模式中退出,请参见7.1节。8.1.3 保留位Bit 13该位保留或不被填充,初始化为零且不能通过写入来修改(FlexCAN的其它实现中此位为FRZ0)8.1.4 停止SClock (HALT)Bit 12当HALT和FRZ1置位,FlexCAN进入调试模式。该位在复位时初始化为1。初始化MB和控制寄存器后,HALT位应当清除,在它清除之前不会发生接收或发送操作。当声明了HALT,错误计数寄存器可写。请参见7.1节。 0 = FlexCAN正常运行。 1 = 如果FRZ1 = 1,进入调试模式。8.1.5 FlexCAN未就绪(NOT_RDY)Bit 11这个只读位指示FlexCAN进入了停止或调试模式。一旦FlexCAN通过同步到总线(11个隐性位) 或者由自唤醒机制退出调试模式,该位被清除。8.1.6 唤醒中断屏蔽(WAKE_MASK)Bit 10该位使能产生唤醒中断(Wake-Up)。 0 = 唤醒中断禁止。 1 = 唤醒中断允许。8.1.7 软件复位(SOFT_RST)Bit 9当宣告了SOFT_RST,FlexCAN复位其内部状态机(序列发生器,错误计数器,错误标志,定时器)以及接口寄存器(FCMCR, FCIMASK1, FCIFLAG1, FCMAXMB)。控制位控制着CAN总线(FCCTL0和FCCTL1)与MB的接口,以及接收信息不被改变。这就允许器件使用SOFT_RST在系统运行时作为调试功能。SOFT_RST也影响FCMCR,导致STOP位复位。FlexCAN在停止的节电模式后恢复时钟SOFT_RST位维持HALT/FRZ1位,引起FlexCAN模块进入调试模式。该位自行清除。注:设置SOFT_RST后,下一个器件访问不应是到FlexCAN模块的,以允许FlexCAN的内部电路完全复位。8.1.8 FlexCAN禁用(FREEZ_ACK)Bit 8。该只读位提供模块在调试模式,停止预分频器的状态的指示。其值为: 0= FlexCAN退出调试,预分频器允许。 1= FlexCAN进入调试模式,预分频器禁止。FREEZ_ACK在FlexCAN模块进入调试模式时置位,器件可以通过查询此位的方式来确定模块进入了调试模式,当FlexCAN退出调试,该位被清除。当预分频器运行时该位也会被清除。请参见8.1.5节。8.1.9 保留位Bit 7该位保留或不执行操作,读写为零。8.1.10 自唤醒(SELF_WAKE)Bit 6该位允许在不需要器件干涉的情况下,FlexCAN在停止后自主唤醒。如此位置位,当进入停止模式,在停止期间,FlexCAN模块在总线寻找一个显性位,如果检测到一个隐性到显性的过渡,模块立即清除STOP位,恢复时钟。如果一次到FCMCR的SELF_WAKE置位写操作正好同时发生在CAN总线上隐性到显性的边沿时刻,则该位不被置位,模块时钟不会停止。可通过读FCMCR来校验该位是否置位。注:如果最终执行了LPStop命令,该位将不会置位,更详细的信息参见7.2.1节。8.1.11 自动节电(AUTO_PWR_SAVE)Bit 5该位允许FlexCAN在没有程序需要执行时,关掉自己的时钟来节约电源,然后在没有任何器件参与的情况下自动地恢复同样的时钟。注:IPBus时钟没有停止,以允许器件访问,自动节电模式不依赖于SELF_WAKE (Bit 6)或WAKE_MASK (Bit 10)位的值。 0 = 自动节电模式无效,时钟正常运行。 1 = 自动节电模式有效,时钟按需要停止和恢复。8.1.12 FlexCAN停止(STOP_ACK)Bit 4FlexCAN在停止模式,同时,主时钟停止。这是一个只读位,当FlexCAN模块进入停止模式并且时钟停止时,其值为1,而停止模式清除并且时钟再次运行时,其值为0,参见7.2节。当FlexCAN进入停止模式,并停止了自己的时钟,它置位STOP_ACK位。器件可以查询此位来了解是否FlexCAN已经进入停止模式并停止了时钟,如果Stop模式清除,一旦FlexCAN模块的时钟运行,该位关闭。 0 = FlexCAN退出停止(Stop)模式。 1 = FlexCAN进入停止模式。8.1.13 保留位Bits 30。该位域保留或不生效。读取时为0,且不能改写。8.2 控制寄存器0 (FCCTL0)这些寄存器(FCCTOL0,FCCTL1,以及FCTIMER)提供与CAN总线相关的控制方法。例如位速率、CANRX位内的可编程采样点,以及全局自由运行定时器。图7:控制器存器0(FCCTL0)8.2.1 总线关闭屏蔽(BOFF_MASK)Bit 15该位提供总线关闭中断(Busoff)的屏蔽 0 = 中断禁止; 1 = 中断允许。8.2.2 错误屏蔽(ERR_MASK)Bit 14该位提供错误中断(Error)的屏蔽 0 = 中断禁止; 1 = 中断允许。8.2.3 保留Bits 138该位域保留或不生效。位读/写仅能用0。试图对改变这些为会引起未知的功能改变。警告:访问该寄存器时应慎重考虑,仅往这些位写0。8.2.4 样本众数(SAMP)Bit 7。采样位决定FlexCAN模块采样每个接收位、确定其数值时是采样1次还是3次。 0 = (复位值)用1次采样来确定接受到的位的值。 1 =用3次采样来确定接受到的位的值,正常的一个(采样点)和领先SClock周期的两个,使用多数决定原则。8.2.5 回环模式(LOOPB)Bit 6该位仅能在测试模式下置位,仅仅除了FCMAXMB寄存器的TEST_EN位置位。参见8.5.2节。如果此位置位,内部的回环被允许,阻止模块检测到总线活动。 0 = 回环模式禁止; 1 = 回环模式允许。8.2.6 时间同步模式(TSYNC)Bit 5该位允许机构在每个接收信息进入MB0的时候复位或清除自由运行定时器。该位提供用特殊的同步信息同步多个FlexCAN站点的途径。也就是全局网络时间,Buffer0中断同样可用。 0 = 定时器同步禁止。 1 = 定时器同步允许。8.2.7 最低缓冲先行传输(LBUF)Bit 4该位定义先行发送安排。 0 = 低ID先发。 1 = 低缓冲器号先发。注:LBUF = 0时,如果多个MB拥有同样的ID,数据帧先于远程帧发送。同样ID的数据帧或远程帧之中,低缓冲的先发。8.2.8 单侦听模式(LOM)Bit 3该控制位配置FlexCAN到单侦听模式。该模式下,模块能够在没有应答的情况下接收信息,或者在总线上活动以供诊断。详细信息请参见6.8节。 0 = 正规操作,单侦听模式关闭。 1 = 允许单侦听模式。8.2.9 传播段(PROPSEG)Bits 20该位域定义位定时的传播段长度,合法的编程值为0到7。传播段时间 (PROPSEG + 1) 元时间1个元时间 1个SClock周期(参见8.3节)8.3 控制寄存器1(FCCTL1)。图8:控制器存器1(FCCTL1)8.3.1 预分频因子(PRES_DIV)Bits 158该位域决定系统时钟和串行时钟 (Sclock) (1 Sclock = 1元时间) 之间的频率比率。SClock等于系统时钟除以该寄存器的值加1。该寄存器的复位值是0,意味着SClock等于系统时钟的频率。该8bit位域的最大值是0xFF,给出的最小SClock频率 系统时钟256。更多信息请参见6.9节。8.3.2 再同步跳转宽度(RJW)Bits 76。该位域定义一次重新同步过程中一个位的元时间数量能够改变的最大值。合法的数值是0到3。再同步跳转宽度 (RJW + 1) 元时间8.3.3 相位段1(PSEG1)Bits 53.该位域定义位定时中相位缓冲段1的长度,合法数值为0到7。相位缓冲段1 (PSEG1 + 1) 元时间8.3.4 相位段2(PSEG2)Bits 20.该位域定义位定时中相位缓冲段2的长度,合法数值为0到7。相位缓冲段2 (PSEG2 + 1) 元时间8.4 自由运行定时器(FCTMR)图9:自由运行定时器(FCTMR)8.4.1 自由运行定时器(TMR)Bits 150此16位自由运行计数器由器件读写。定时器复位后从零开始,线性计数到0xFFFF,然后回转。该定时器的时钟由FlexCAN模块位时钟驱动,在一个信息期间,每位的收发使其加1。当总线上没有信息时,它按照额定位速率计数。定时器的值在CAN总线上帧的ID字段起始时被捕捉,信息的收发成功完成后该值写入MB的TIME_STAMP项。8.5 最大信息缓冲寄存器(FCMAXMB)图10:最大信息缓存寄存器(FCMAXMB)警告:改变位158、64的值会导致不希望的功能。8.5.1 保留位Bits 158。这个位域保留或不被执行,其中的位初始化时为0,并仅能写入0。8.5.2 测试允许(TEST_EN)Bit 7该只读位在设置FCCTL0的LOOPB位之前被置位,参见8.2.5节关于环回模式的更多信息。 0 = 测试模式禁用; 1 = 测试模式允许。 8.5.3 保留位Bits 64这个位域保留或不被执行,其中的位初始化时为0,并仅能写入0。8.5.4 最大信息缓冲(MAXMB)Bits 30。该位域定义模块的最大MB的配置。这些位的复位值是0xF,对应于一个16-MB的配置。使用中最大MB数 MAXMB + 18.6 接收屏蔽(Receive Mask)寄存器这些寄存器用于对接收的帧ID进行认可屏蔽。两个全局屏蔽、描述为高和低,用于接收MB的0到13。四个额外的屏蔽用于缓冲14和15,描述为高和低(High,Low)。 0 = 屏蔽位:对应新进帧的ID位不考虑。: The corresponding incoming ID bit is dont care 1 = 屏蔽位:对应的ID位与新进帧的ID进行检查,确定是否存在匹配。注:标准和扩展帧都使用这些屏蔽,一般操作模式下,这些屏蔽寄存器的值不应变化,就像锁定的帧通过屏蔽匹配一个MB,能够传输到MB(然后立即释放),但可能不再匹配。表9:普通/扩展信息屏蔽示例注:(1) 扩展模式匹配(MB3)(2) 标准模式匹配(MB2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 斜屋面梁板高支模专项施工方案
- 小学天宫课堂活动方案策划
- 2025年注册设备监理师考试 设备监理实务考点精讲冲刺试卷
- 云计算技术在各行业中的应用前景分析
- 网红推广营销方案策略
- 夜间施工专项安全保障方案
- 期货从业资格之期货投资分析考试押题卷附参考答案详解【黄金题型】
- 2025年安徽蚌埠市事业单位招聘154人(市区)笔试备考题库及参考答案详解一套
- 2025年度民政部所属单位公开招聘应届毕业生笔试高频难、易错点备考题库及参考答案详解一套
- 2023年度收银审核员考前冲刺练习试题附答案详解(夺分金卷)
- DB3702T 31-2023 未成年人家庭监护能力评估工作规范
- 大学生反诈宣传课件
- 体育行业体育产业园区建设方案
- 2024-2025年历年成人高考民法真题及复习资料
- 幼儿园课程教研活动
- 幼儿烫伤课件教学课件
- 人美版(2024)小学美术一年级上册教学设计(附教材目录)
- 国家职业技术技能标准 6-29-01-01 砌筑工 人社厅发20235号
- 2024-2025学年初中数学八年级上册沪科版(2024)教学设计合集
- 中小学危险化学药品分类
- (完整版)新概念英语第一册单词表(打印版)
评论
0/150
提交评论