笔记十三:总线关闭状态<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
总线关闭状态,是错误状态中最严重的一个状态,节点不参与总线活动~这时候需要人为的干涉或者编辑专门处理的函数来处理。要用文字来描述总线关闭状态的发生过程比较复杂了一点,所以我以图形整理了一下:
当发送错误计数器达到255的时候,总线状态位BS置一,节点不参与总线活动,然后进入复位模式。
如果在这期间,中断使能寄存器的错误中断使能位EIE=1,产生错误中断Error Interrupt, EI=1。随之接收错误计数器清零,发送错误计数器被赋值为127,作为倒数数。
如果没有认为的干涉或者没有专门的函数处理的话,次状态会一直保持,因为复位模式标志位RM一直置一。当退出复位模式后,节点会开始发送空闲信号(空闲型号可以看成是无用的报文吧,因为我们知道一旦报文发送成功,发送错误计数器的值就会开始递减)直到发送错误计数器的值为0,如果在发送计数器倒数的期间读取发送计数器的话,会读取到倒数中的值,亦即恢复状态信息。
当倒数完毕后,总线状态位清零,BS=0,错误状态为也一样被清理ES=0(我们知道状态寄存器是只读寄存器,所以手动的清零是不可能的),引用前章笔记,我们知道一旦错误计数器的值超过报警限额,错误状态位会置一,利用这个原理反推道,一旦错误计数器的值在于报警限额以下,错误状态标志位被清零。
接下来的故事当然离不开,错误报警中断(Error Interrupt),当总线状态标志位或者错误状态标志位产生变化(由先前的1编程0),会引发错误报警中断,前提是错误中断使能的话,EIE=1,最后节点恢复,换句话说就是节点已参与总线活动。
从上面的内容中,我们进一步的分析得到的信息有:
第一次产生错误报警中断 Error Interrupt 的原因是,由于发送错误计数器达到255的值,所以引发了总线状态标志位 BS 的变化 (也可以看成是错误认可状态引起的变化),触发错误报警中断 Error Interrupt。然后节点会自己进入复位模式(我们知道要清楚中断标志位只有一个方法那就是进入复位模式,这个环节中就是起到这样的作用),然而第二次发生错误报警中断原因出于总线状态标志位起了变化(从1变成0)。当节点恢复后或者说节点参与总线活动后,该错误报警中断标志位依然是置一 EI=1,所以应该适当的进入复位或者错误报警中断使能使无效 EIE=0。
老实说要确确实实明白 状态位,中断使能,中断源 它们之间的关系有点猥琐~ 所以小的手痒,稍微整理一个图表。该图表实际上没有任何作用...不过在感觉上可能比较直观一点。
中英文对照表:
BS,Bus Status 总线状态 | BEIE,Bus Error Interrupt En. 总线错误中断使能 | BEI,Bus Error Interrupt 总线错误中断 |
ES,Error Status 错误状态 | ALI,Arbitration Lost Interrupt En. 仲裁丢失中断使能 | ALI,Arbitration Lost Interrupt 仲裁丢失中断 |
TS,Transmit Status 发送状态 | EPI,Error Passive Interrupt En. 错误认可中断(错误被动中断)使能 | EPI,Error Passive Interrupt 错误认可中断(错误被动中断) |
RS,Receive Status 接收状态 | WUI,Wake Up Interrupt En. 唤醒中断使能 | WUI,Wake Up Interrupt 唤醒中断 |
TCS,Transmition Complete Status 发送完成状态 | DOI,Data Overrun Interrupt En. 数据溢出中断使能 | DOI,Data Overrun Interrupt 数据溢出中断 |
TBS,Transmition Buffer Status 发送缓冲器状态 | EI,Error Interrupt En. 错误报警中断使能 | EI,Error Interrupt 错误报警中断 |
DOS,Data Overrun Status 数据溢出状态 | TI,Transmit Interrupt En. 发送中断使能 | TI,Transmit Interrupt 发送中断 |
RBS,Receive Buffer Status 接收缓冲器状态 | RI,Receive Interrupt En. 接收中断使能 | RI,Receive Interrupt 接收中断 |
第十二章和第十三章的笔记我承认自己确实写的不是很好~因为以上的内容也仅是我所认识的概念而已, 无法深入,逼近能力有限呀,所以也只能以“文字”那样般描述了。见笑了,真的很不才...如果已经误人子弟了,真的很抱歉。
用户377235 2015-10-8 17:31
很详细。非常感谢你的经验分享,向你学习!我也会整理我的思路继续发扬光大的。