用于MCU作为从器件识别I<sup>2</sup>C总线信号的装置及方法

文档序号:6432733阅读:146来源:国知局
专利名称:用于MCU作为从器件识别I<sup>2</sup>C总线信号的装置及方法
技术领域
本发明涉及用于微控制单元(Micro Control Unit, MCU)、又称为单片机(Single Chip Microcomputer)作为从器件识别 I2C QnterHntegrated Circuit)总线信号的装置及方法,特别涉及利用MCU所具有的支持门控制器(GATE)控制功能的计数器(COUNTER)模式所实现的用于MCU作为从器件识别I2C总线信号的装置及方法。
背景技术
在例如便携式系统等小型系统的设计中,通常会为了降低功耗和/或提升效率而将一些低时钟频率的应用功能从高时钟频率的CPU移植到低时钟频率的MCU。为了使CPU 与MCU之间的通讯更为便利,通常会设置CPU与MCU之间通过I2C总线连接,并由CPU作为 I2C总线的主器件、MCU作为I2C总线的从器件。如此一来,就需要作为从器件的MCU能够识别1 总线的起始信号和结束信号。图 1为现有的I2C总线的信号时序图。如图1所示,1 总线包括两根串行信号,即串行时钟 (SCL)信号和串行数据(SDA)信号,那么在图1中所表示出的起始信号S就是在SCL信号线处于高电平状态的期间,SDA信号线出现由高电平向低电平变化的下降沿;在图1中所表示出的结束信号P就是在SCL信号线处于高电平状态的期间,SDA信号线出现由低电平向高电平变化的上升沿。为了识别1 总线的起始信号和结束信号,现有技术中提供了硬件1 从器件控制器。但是,考虑到成本,MCU中通常都不会集成有硬件1 从器件控制器,这样,就需要MCU 依据起始信号和结束信号的时序规范来自行识别出起始信号和结束信号。现有技术中提供了如下两种方式用于MCU自行识别起始信号和结束信号方式1,通过MCU的指令采样来识别起始信号和结束信号。具体说,方式1以高频连续发送指令来采样SCL信号线和SDA信号线上出现的电平状态、并依据采样到的SCL信号线和SDA信号线上出现的电平状态是否满足时序规范来判断1 总线上是否出现了起始信号和结束信号。方式2,借助MCU提供的边沿检测功能来识别起始信号和结束信号。具体说,方式 2依据SCL信号上出现的边沿跳变来触发对SDA信号线上的电平状态的读取、并依据SCL信号上出现的跳变以及读取的SDA信号线上的电平状态来判断1 总线上是否出现了起始信号和结束信号。然而,上述两种方式均存在各自的缺陷上述的方式1需要在长时间内持续地以高频连续发送指令,因而不允许采样过程被中断打断,这样,就限制了 MCU通过中断实现的“多任务”处理能力。上述的方式2虽然实现简单、并且能够避免方式1存在的“多任务”处理能力受限制的问题,但是,方式2并没有严格按照时序规范来识别起始信号和结束信号、而是更多地依赖于SCL信号线上出现的边沿跳变,因此,当1 总线上出现异常波动时就会导致方式2出现误识别,即,以方式2识别起始信号和结束信号的可靠性不高。如上可见,现有技术所提供的两种方式均无法同时兼顾MCU的“多任务”处理能力、以及识别起始信号和结束信号的可靠性。

发明内容
有鉴于此,本发明提供用于MCU作为从器件识别1 总线信号的装置及方法。根据本发明的第一方面,提供一种用于MCU作为从器件识别1 总线信号的装置。 该装置包括所述MCU的中断管脚,连接I2C总线的SCL信号线;所述MCU的第一计数管脚,连接I2C总线的SDA信号线;所述MCU的第二计数管脚,连接所述SDA信号线的经一反向器反向后的反向信号线.
一入 ,内置于所述MCU的第一计数器,以所述中断管脚在所述SCL信号线感测到的电平状态为高电平时允许、低电平时禁止的门限控制,并捕捉所述第一计数管脚在所述SDA信号线感测到的下降沿、以及在每次捕捉到该下降沿后进行一次用于触发表示起始信号的中断的计数操作;内置于所述MCU的第二计数器,以所述中断管脚在所述SCL信号线感测到的所述电平状态为所述门限控制,并捕捉所述第二计数管脚在所述反向信号线感测到的下降沿、 以及在每次捕捉到该下降沿后进行一次用于触发表示结束信号的中断的计数操作。根据上述的装置,所述第一计数器和所述第二计数器均为可择一地提供计时或计数功能的寄存器器件、并被配置为所述计数功能。根据上述的装置,所述第一计数器和所述第二计数器的计数范围均被设置为寄存器最大值。根据上述的装置,所述中断管脚包括第一中断管脚和第二中断管脚;所述第一计数器以所述第一中断管脚在所述SCL信号线感测到的电平状态为所述门限控制;所述第二计数器以所述第二中断管脚在所述SCL信号线感测到的电平状态为所述门限控制。根据本发明的第二方面,提供一种用于MCU作为从器件识别I2C总线信号的方法。 该方法包括设置所述MCU的中断管脚连接I2C总线的SCL信号线;设置所述MCU的第一计数管脚连接I2C总线的SDA信号线;设置所述MCU的第二计数管脚连接所述SDA信号线的经一反向器反向后的反向信号线;设置内置于所述MCU的第一计数器以所述中断管脚在所述SCL信号线感测到的电平状态为高电平时允许、低电平时禁止的门限控制,并利用所述第一计数器捕捉所述第一计数管脚在所述SDA信号线感测到的下降沿、以及在每次捕捉到该下降沿后进行一次用于触发表示起始信号的中断的计数操作;设置内置于所述MCU的第二计数器以所述中断管脚在所述SCL信号线感测到的所述电平状态为所述门限控制,并利用所述第二计数器捕捉所述第二计数管脚在所述反向信号线感测到的下降沿、以及在每次捕捉到该下降沿后进行一次用于触发表示结束信号的中断的计数操作。根据上述的方法,该方法通过将可择一地提供计时或计数功能的寄存器器件配置为所述计数功能来实现所述第一计数器和所述第二计数器。根据上述的方法,该方法将所述第一计数器和所述第二计数器的计数范围均设置为寄存器最大值。根据上述的方法,所述中断管脚包括第一中断管脚和第二中断管脚;该方法设置所述第一计数器以所述第一中断管脚在所述SCL信号线感测到的电平状态为所述门限控制;该方法设置所述第二计数器以所述第二中断管脚在所述SCL信号线感测到的电平状态为所述门限控制。如上可见,本发明利用MCU内置的第一计数器捕捉第一计数管脚在SDA信号线感测到的下降沿、利用第二计数器捕捉第二计数管脚在SDA信号线的反向信号线感测到的下降沿(相当于SDA信号线的上升沿),并以中断管脚在SCL信号线感测到的电平状态将上述的捕捉限制在SCL信号线的高电平期间内,从而无需指令采样即可严格按照时序规范识别出起始信号和结束信号,因而既能够避免指令采样对MCU的“多任务”处理能力的限制,同时还能够确保识别起始信号和结束信号的可靠性。


图1为现有的I2C总线的信号时序图;图2为本发明具体实施方式
中用于MCU作为从器件识别I2C总线信号的装置的示例性结构示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。图2为本发明具体实施方式
中用于MCU作为从器件识别I2C总线信号的装置的示例性结构示意图。在图2中以一种51系列(例如8051)的MCU为例。首先参见图2,本发明具体实施方式
中用于MCU作为从器件识别1 总线信号的装置包括MCU的如下外部管脚第一计数管脚TO、第二计数管脚Tl、第一中断管脚INTO、第二中断管脚INTl ;以及,内置于MCU的第一计数器C0UNTER0和第二计数器C0UNTER1。通常来说,51系列的MCU内部都具有可择一地提供计时或计数功能的寄存器器件 TIMER/C0UNTER_0 和 TIMER/C0UNTER_1。当寄存器器件 TIMER/C0UNTER_0 和 TIMER/ COUNTER, 1被配置为COUNTER模式时,寄存器器件TIMER/C0UNTER_0即为图2中示出的第一计数器C0UNTER0、并能够捕捉第一计数管脚TO感测到的触发事件,寄存器器件TIMER/ C0UNTER_1即为图2中示出的本实施例的装置中的第二计数器C0UNTER1、并能够捕捉第二计数管脚Tl感测到的触发事件。因此,本发明具体实施方式
即可将用于构成起始信号的SDA信号线的下降沿作为可被第一计数管脚TO感测到的触发事件、以及将用于构成结束信号的SDA信号线的上升沿作为可被第二计数管脚Tl感测到的触发事件。为此,请再参见图2,在本发明具体实施方式
中第一计数管脚TO连接I2C总线的SDA信号线,以使用于构成起始信号的SDA信号线上出现的下降沿能够在第一计数管脚TO被第一计数器C0UNTER0捕捉;第二计数管脚Tl连接I2C总线的SDA信号线经一反向器N反向后的反向SDA_ η信号线,以使反向SDA_n信号线上出现的下降沿能够在第二计数管脚Tl被第二计数器 C0UNTER1捕捉,由于反向SDA_n信号线上出现的下降沿与SDA信号线上出现的上升沿同步, 因而捕捉到反向SDA_n信号线上出现的下降沿即相当于捕捉到用于构成结束信号的SDA信号线上出现的上升沿。此外,对于COUNTER模式,51系列的MCU会为第一计数器C0UNTER0和第二计数器 C0UNTER1提供GATE控制功能、或称之为门限控制功能,以MCU除第一计数管脚TO和第二计数管脚Tl之外的外部管脚感测到的电平信号为GATE信号,只有在GATE信号的电平状态为高电平时才允许第一计数器C0UNTER0捕捉第一计数管脚TO感测到的触发事件、以及允许第二计数器C0UNTER1捕捉第二计数管脚Tl感测到的触发事件,而当GATE信号的电平状态为低电平时则禁止第一计数器C0UNTER0捕捉第一计数管脚TO感测到的触发事件、以及禁止第二计数器C0UNTER1捕捉第二计数管脚Tl感测到的触发事件。因此,如果将SCL信号线上的电平信号作为GATE信号,即可将对SDA信号线上出现的下降沿和反向号线上出现的下降沿(相当于在SDA信号线出现的上升沿)的捕捉限制在SCL信号线上的高电平期间内,以避免捕捉到与起始信号无关的SDA信号线上出现的下降沿、以及与结束信号无关的反向SDA_n信号线上出现的下降沿(相当于在SDA 信号线出现的上升沿),从而能够严格按照时序规范来识别起始信号和结束信号。为此,请再参见图2,在本发明具体实施方式
中第一中断管脚INTO连接I2C总线的SCL信号线,以利用第一中断管脚INTO在 SCL信号线感测到的电平状态对第一计数器C0UNTER0实现高电平时允许、低电平时禁止的 GATE控制;第二中断管脚INTl连接I2C总线的SCL信号线,以利用第二中断管脚INTl在 SCL信号线感测到的电平状态对第二计数器C0UNTER1实现高电平时允许、低电平时禁止的 GATE控制。基于如上所述的第一计数管脚TO、第二计数管脚Tl、第一中断管脚INTO、第二中断管脚INTl的连接关系第一计数器C0UNTER0即可以第一中断管脚INTO在SCL信号线感测到的电平状态为GATE控制、并捕捉第一计数管脚TO在SDA信号线感测到的下降沿,而且,在每次捕捉到第一计数管脚TO在SDA信号线感测到的下降沿后还需要进行一次计数操作。第二计数器C0UNTER1即可以第二中断管脚INTl在SCL信号线感测到的电平状态为GATE控制、并捕捉第二计数管脚Tl在反向SDA_n信号线感测到的下降沿(相当于在SDA 信号线出现的上升沿),而且,在每次捕捉到第二计数管脚Tl在反向SDA_rWf号线感测到的下降沿后还需要进行一次计数操作。由于起始信号中只包含SDA信号线出现的一个下降沿、结束信号中也只包含SDA 信号线出现的一个上升沿,因此
第一计数器C0UNTER0在每次捕捉到第一计数管脚TO在SDA信号线感测到的下降沿后所进行的一次计数操作均需要触发用于触发表示起始信号的中断,以使处理内核(由于处理内核并不属于如图2所示的装置、因而以虚线框表示)能够以中断方式获知有起始信号已被识别出;同样地,第二计数器C0UNTER1在每次捕捉到第二计数管脚Tl在反向SDA_n信号线感测到的下降沿反向SDA_n信号的下降沿后所进行的一次计数操作均需要触发用于触发表示结束信号的中断,以使处理内核能够以中断方式获知有结束信号已被识别出。然而在实际应用中,第一计数器C0UNTER0和第二计数器C0UNTER1惯用地被用来记录触发事件的发生次数。相应地,第一计数器C0UNTER0和第二计数器C0UNTER1的计数范围通常会被惯用地设置为小于寄存器最大值的一个数值,并且,只有触发事件的发生次数达到小于寄存器最大值的该数值时才会触发中断。那么,为了使第一计数器C0UNTER0的每次计数操作都能够触发表示起始信号的中断、第二计数器C0UNTER1的每次计数操作也都能够触发表示结束信号的中断,本发明具体实施方式
并不对第一计数器C0UNTER0和第二计数器C0UNTER1采用上述的惯用设置、而是将第一计数器C0UNTER0和第二计数器C0UNTER1的计数范围均设置为寄存器最大值。这是因为,对于51系列的MCU来说,当第一计数器C0UNTER0和第二计数器C0UNTER1的计数范围设置为寄存器最大值时,第一计数器C0UNTER0和第二计数器C0UNTER1能够默认地每执行一次计数操作即触发一次中断。当第一计数器C0UNTER0/第二计数器C0UNTER1 (本文中出现的符号“/”表示“或”的关系)的计数当达到寄存器最大值时,只要第一计数器 C0UNTER0/第二计数器C0UNTER1再捕捉到一个触发事件即可导致溢出、并回到最小值重新开始计数,即,第一计数器C0UNTER0和第二计数器C0UNTER1能够循环地执行用于触发中断的计数操作。可见,本发明具体实施方式
中用于MCU作为从器件识别I2C总线信号的装置无需指令采样即可严格按照时序规范识别出起始信号和结束信号,因而既能够避免指令采样对 MCU的“多任务”处理能力的限制,同时还能够确保识别起始信号和结束信号的可靠性。基于与上述装置相同的原理,本发明具体实施方式
中用于MCU作为从器件识别1 总线信号的方法包括设置MCU的第一计数管脚TO连接I2C总线的SDA信号线,以使用于构成起始信号的SDA信号线上出现的下降沿能够在第一计数管脚TO被第一计数器C0UNTER0捕捉;设置MCU的第二计数管脚Tl连接I2C总线的SDA信号线经一反向器N反向后的反向号线,以使反向号线上出现的下降沿能够在第二计数管脚Tl被第二计数器C0UNTER1捕捉,由于反向SDA_n信号线上出现的下降沿与SDA信号线上出现的上升沿同步,因而捕捉到反向号线上出现的下降沿即相当于捕捉到用于构成结束信号的SDA信号线上出现的上升沿;设置MCU的第一中断管脚INTO连接I2C总线的SCL信号线,以利用第一中断管脚 INTO在SCL信号线感测到的电平状态对第一计数器C0UNTER0实现高电平时允许、低电平时禁止的GATE控制;设置MCU的第二中断管脚INTl连接I2C总线的SCL信号线,以利用第二中断管脚 INTl在SCL信号线感测到的电平状态对第二计数器C0UNTER1实现高电平时允许、低电平时禁止的GATE控制;设置内置于MCU的第一计数器C0UNTER0以第一中断管脚INTO在SCL信号线感测到的电平状态为GATE控制,并利用第一计数器C0UNTER0捕捉第一计数管脚TO在SDA信号线感测到的下降沿,而且,在每次捕捉到第一计数管脚TO在SDA信号线感测到的下降沿后还需要进行一次用于触发表示起始信号的中断的计数操作;设置内置于MCU的第二计数器C0UNTER1以第二中断管脚INTl在SCL信号线感测到的电平状态为GATE控制,并利用第二计数器C0UNTER1捕捉第二计数管脚Tl在反向SDA_ η信号线感测到的下降沿(相当于SDA信号线的上升沿),而且,在每次捕捉到第二计数管脚Tl在反向SDA_n信号线感测到的下降沿后还需要进行一次用于触发表示结束信号的中断的计数操作。其中,对于上述方法所基于的MCU为如图2中示出的一种51系列的MCU的情况该方法可以将MCU内部所具有的可择一地提供计时或计数功能的寄存器器件 TIME/RC0UNTER_0和TIMER/C0UNTER_1均设置为COUNTER模式,并以此来实现第一计数器 C0UNTER0 和第二计数器 C0UNTER1 ;而且,该方法为了使第一计数器C0UNTER0在每次捕捉到第一计数管脚TO在SDA 信号线感测到的下降沿后执行的计数操作都能够触发表示起始信号的中断、第二计数器 C0UNTER_1在每次捕捉到第二计数管脚Tl在反向SDA_n信号线感测到的下降沿后执行的计数操作都能够触发表示起始信号的中断,可以将第一计数器C0UNTER0和第二计数器 C0UNTER1的计数范围均设置为寄存器最大值。可见,本发明具体实施方式
中用于MCU作为从器件识别I2C总线信号的方法无需指令采样即可严格按照时序规范识别出起始信号和结束信号,因而既能够避免指令采样对 MCU的“多任务”处理能力的限制,同时还能够确保识别起始信号和结束信号的可靠性。另需要说明的是本发明具体实施方式
中用于MCU作为从器件识别I2C总线信号的装置及方法仅仅是以一种51系列的MCU为例进行的说明;但对于其他MCU来说,只要其具有可实现GATE控制功能(如果仅有一根中断管脚则可复用)、并可在每次计数后即触发中断(可以通过其他MCU的特有方式设置)的两个计数器C0UNTER0和C0UNTER1、以及相应地具有两根计数管脚TO和Tl,就均能够适用本发明具体实施方式
中用于MCU作为从器件识别I2C总线信号的装置及方法。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种用于MCU作为从器件识别1 总线信号的装置,其特征在于,该装置包括 所述MCU的中断管脚,连接1 总线的SCL信号线;所述MCU的第一计数管脚,连接1 总线的SDA信号线;所述MCU的第二计数管脚,连接所述SDA信号线的经一反向器反向后的反向信号线; 内置于所述MCU的第一计数器,以所述中断管脚在所述SCL信号线感测到的电平状态为高电平时允许、低电平时禁止的门限控制,并捕捉所述第一计数管脚在所述SDA信号线感测到的下降沿、以及在每次捕捉到该下降沿后进行一次用于触发表示起始信号的中断的计数操作;内置于所述MCU的第二计数器,以所述中断管脚在所述SCL信号线感测到的所述电平状态为所述门限控制,并捕捉所述第二计数管脚在所述反向信号线感测到的下降沿、以及在每次捕捉到该下降沿后进行一次用于触发表示结束信号的中断的计数操作。
2.根据权利要求1所述的装置,其特征在于,所述第一计数器和所述第二计数器均为可择一地提供计时或计数功能的寄存器器件、并被配置为所述计数功能。
3.根据权利要求2所述的装置,其特征在于,所述第一计数器和所述第二计数器的计数范围均被设置为寄存器最大值。
4.根据权利要求1所述的装置,其特征在于,所述中断管脚包括第一中断管脚和第二中断管脚;所述第一计数器以所述第一中断管脚在所述SCL信号线感测到的电平状态为所述门限控制;所述第二计数器以所述第二中断管脚在所述SCL信号线感测到的电平状态为所述门限控制。
5.一种用于MCU作为从器件识别1 总线信号的方法,其特征在于,该方法包括 设置所述MCU的中断管脚连接1 总线的SCL信号线;设置所述MCU的第一计数管脚连接1 总线的SDA信号线;设置所述MCU的第二计数管脚连接所述SDA信号线的经一反向器反向后的反向信号线.一入 ,设置内置于所述MCU的第一计数器以所述中断管脚在所述SCL信号线感测到的电平状态为高电平时允许、低电平时禁止的门限控制,并利用所述第一计数器捕捉所述第一计数管脚在所述SDA信号线感测到的下降沿、以及在每次捕捉到该下降沿后进行一次用于触发表示起始信号的中断的计数操作;设置内置于所述MCU的第二计数器以所述中断管脚在所述SCL信号线感测到的所述电平状态为所述门限控制,并利用所述第二计数器捕捉所述第二计数管脚在所述反向信号线感测到的下降沿、以及在每次捕捉到该下降沿后进行一次用于触发表示结束信号的中断的计数操作。
6.根据权利要求5所述的方法,其特征在于,该方法通过将可择一地提供计时或计数功能的寄存器器件配置为所述计数功能来实现所述第一计数器和所述第二计数器。
7.根据权利要求6所述的方法,其特征在于,该方法将所述第一计数器和所述第二计数器的计数范围均设置为寄存器最大值。
8.根据权利要求5所述的方法,其特征在于,所述中断管脚包括第一中断管脚和第二中断管脚;该方法设置所述第一计数器以所述第一中断管脚在所述SCL信号线感测到的电平状态为所述门限控制;该方法设置所述第二计数器以所述第二中断管脚在所述SCL信号线感测到的电平状态为所述门限控制。
全文摘要
本发明提供了一种用于MCU作为从器件识别I2C总线信号的装置及方法。本发明利用MCU内置的第一计数器捕捉第一计数管脚在SDA信号线感测到的下降沿、利用第二计数器捕捉第二计数管脚在SDA信号线的反向信号线感测到的下降沿(相当于SDA信号线的上升沿),并以中断管脚在SCL信号线感测到的电平状态将上述的捕捉限制在SCL信号线的高电平期间内,从而无需指令采样即可严格按照时序规范识别出起始信号和结束信号,因而既能够避免指令采样对MCU的“多任务”处理能力的限制,同时还能够确保识别起始信号和结束信号的可靠性。
文档编号G06F13/38GK102314403SQ201110265830
公开日2012年1月11日 申请日期2011年8月26日 优先权日2011年8月26日
发明者高平 申请人:苏州佳世达电通有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1