背景技术
在实际应用中,要求总线速度更高、要求电源电压消耗更低,为了满足这些需求,在快速模式或标准模式(即F/S模式)的基础上,I2C(Iinter-IntegratedCircuit,集成电路间互连总线)版本2.0-1998增加了高速模式(即Hs模式),它将数据传输的位速率提高到3.4Mbit/s。随后,I2C版本2.1-2000又对Hs模式做了一些改进,如在Hs模式的重复起始条件后可以延长时钟信号SCL(System Clock Line,系统时钟线),对于Hs模式中的一些时序参数要求不是特别严格。构建Hs模式的主要目的是提高数据通信速率,目前已有很多支持I2C高速传输的器件(后续称该类器件为高速模式器件,即Hs模式器件),相应的也需要设计支持Hs模式的I2C控制器来操作这些器件。
Hs模式器件对I2C总线的传输速度有具大的突破,如Hs模式器件可以在高达3.4Mbit/s的位速率下传输数据,该位速率是标准模式的位速率的34倍。I2C总线工作在Hs模式时,影响其工作的最大因素为SCL总线上电平由低到高的瞬态响应,因为标准模式和快速模式下的总线上拉电阻不能产生更快的上升时间,电平由低到高所需要的时延较大,目前为改善SCL总线上电平由低到高的瞬态响应时延较大的问题,对I2C总线规范做出以下改进:
1、Hs模式主机器件(是指Hs模式器件当前为主机状态)在SCL线上提供有源上拉,缩短了SCL信号电平由低到高的上升时间。
2、在包含多个Hs模式主机器件的系统中,不执行仲裁和时钟同步,以加速位处理能力,仲裁过程一般是器件在用F/S模式下传输主机码结束后执行。
3、Hs模式主机器件以高电平和低电平的占空比为1∶2的比率产生一个串行时钟信号,以解除建立和保持时间的时序要求。
目前,实现I2C传输所采用的技术主要是通过如图1所示的I2C控制器1来实现高速I2C传输,该I2C控制控制器1包括PVCI/APB(Peripheral VirtualComponent Interface/Advanced Peripheral Bus,外围虚拟部件接口或先进外围总线)接口11、逻辑控制器12、连续时钟产生器13、I2C总线接口14,其中:
PVCI/APB接口11,用于与PVCI/AHB(Peripheral Virtual ComponentInterface/Advanced High performance Bus,外围虚拟部件接口或先进高性能总线)接口交换信息。
逻辑控制器12,用于根据I2C协议处理比特级逻辑。
连续时钟产生器13,用于在该I2C控制器1为主机状态时,产生SCL时钟信号,在该I2C控制装置为从机状态时,自动关断。
I2C总线接口14,用于直接在I2C总线级处理比特操作。如在I2C控制器1为从机状态时,I2C总线接口14检测起始停止条件、确认位和操作方向;当I2C控制器1为主机状态时,I2C总线接口14根据PVCI/APB接口11控制SCL信号和SDA(System Design Analysis,系统设计分析)信号的状态。
采用上述I2C控制器,具有以下技术特点:(1)符合飞利浦I2C总线规范V2.1;(2)兼容PVCI(Peripheral Virtual Component Interface,外围虚拟部件接口)标准;(3)数据传输速率既支持F/S模式又Hs模式;(4)支持主机/从机模式发送模式;(5)支持混合速率总线;(6)支持多主机模式。
上述I2C控制器虽然实现了I2C的高速模式,但是采用该I2C控制器来进行I2C数据传输需要收费,并且该I2C控制装置内部的具体实现未知,因此,如何实现高速I2C传输的Hs模式则成为目前亟待解决的问题。
具体实施方式
为实现高速I2C传输,本发明实施例提供一种I2C传输方法及其装置,该方法包括:在实现高速I2C传输的装置(即I2C控制器)中设置有与CPU相连接的CPU接口单元、与CPU接口单元相连接且用于实现主机操作的I2C主机单元、与CPU接口单元相连接且用于从机操作的I2C从机单元;CPU将为该I2C控制器配置的工作状态配置参数和工作模式配置参数发送给CPU接口单元;I2C主机单元根据CPU接口单元存储的工作状态配置参数确定为主机状态时,将工作模式切换至与所述工作模式配置参数对应的工作模式,并实现主机操作;I2C从机单元根据CPU接口单元存储的工作状态配置参数确定为从机状态时,将工作模式切换至与所述工作模式配置参数对应的工作模式,并实现从机操作。采用本发明实施例提供的I2C控制器,不仅实现了I2C高速传输,而且还适用于I2C总线的高速传输模式,从而提高了数据传输速率;并且,I2C控制器既支持Hs模式又支持F/S模式,既可以实现主机状态下的I2C高速传输,也可以实现从机状态的I2C高速传输,因此,采用本发明技术方案具有使用方便、灵活,适用性强等特点。
下面结合说明书附图对本发明技术方案进行详细的描述。
参见图2A,为本发明实施例中I2C传输装置的结构示意图之一,该装置(后续称该装置为I2C控制器2)包括:
CPU接口单元21,用于连接CPU(Central Processing Unit.,中央处理器),接收并存储该CPU发送的工作状态配置参数和工作模式配置参数;以及,接收并输出发送数据与接收数据,该发送数据为CPU通过I2C总线发送出去的数据,该接收数据为外界设备通过I2C总线发送给该CPU的数据。
一般情况下,CPU接口单元21将接收到的工作状态配置参数和工作模式配置参数存储在自身的寄存器中(该寄存器在说明书附图中未标注)。
存储单元22,与CPU接口单元21相连接,用于存储CPU接口单元21输出的发送数据和接收数据。
I2C主机单元23,与CPU接口单元21相连接,用于根据CPU接口单元21寄存器中存储的工作状态配置参数确定为主机状态时,将工作模式切换至与该工作模式配置参数对应的工作模式(包括F/S模式、Hs模式),并实现主机操作;
I2C从机单元24,与CPU接口单元21相连接,用于根据CPU接口单元21寄存器中存储的工作状态配置参数确定为从机状态时,将工作模式切换至与所述工作模式配置参数对应的工作模式,并实现从机操作。
本发明实施例中的I2C主机单元23与I2C从机单元24既可以集成在同一硬件设备上,也可以集成在不同的硬件设备上。
较佳地,存储单元22为FIFO(First In First Out,先进先出)存储器。
较佳地,上述I2C控制器2还包括时钟预分频单元25,如图2B所示:
时钟预分频单元25,与I2C主机单元23相连接,用于在I2C主机单元23确定为主机状态时,根据存储单元22中的工作模式配置参数调整时钟预分频系数,并生成与该工作模式对应的预分频串行时钟信号。
较佳地,为提高信号质量、降低噪声干扰,上述图2A与图2B的I2C控制器2还包括滤波单元26,如图2C、2D所示:
滤波单元26,分别与I2C主机单元23和I2C从机单元24相连接,用于对I2C总线信号进行毛刺滤除操作,并将滤除毛刺之后的信号发送给所述I2C主机单元23或I2C从机单元24。
在实际的应用中,本发明实施例中的各单元的功能如下:
CPU接口单元21,还进一步用于在有总线访问I2C控制器2的存储单元22或CPU接口单元21自身需要时钟时,向外部时钟管理模块(该时钟管理模块可通过现有的装置实现)发送时钟请求。
CPU接口单元21还进一步用于,在I2C控制器2为主机状态时,接收并输出CPU发送的为该I2C控制器2配置的工作参数,工作参数包括主机码、从设备地址和时钟预分频系数;以及,在I2C控制器2为从机状态时,接收并输出CPU发送的为该I2C控制器2配置的工作参数,该工作参数包括从设备地址;以及,在需要进行I2C数据传输时,启动I2C传输。
本发明实施例中的主机码用于表征Hs模式传输的开始,物理上为8bit数据,如00001XXX;从设备地址为7bit位。
I2C主机单元23具体应用为:用状态机控制I2C控制器2产生的I2C总线操作周期,产生SCL和SDA信号,如图2A、2B、2C、2D中的SCL_out、SDA_out。
当CPU发送的工作模式配置参数对应的工作模式为高速Hs模式时:
I2C主机单元23将工作模式切换至与工作模式配置参数对应的工作模式,具体应用为:通过I2C总线将主机码和起始条件发送给与其通信的第二I2C控制器;在接收到第二I2C控制器返回的不响应位(不响应位,用于表征不响应,物理上表现为SDA信号为低电平)时,将工作模式切换至Hs模式;
I2C从机单元24将工作模式切换至与工作模式配置参数对应的工作模式,具体应用为:通过I2C总线接收第二I2C控制器发送的起始条件和主机码,并向第二I2C控制器发送不响应位,将工作模式切换至Hs模式。
较佳地,I2C主机单元23进一步用于,在接收到第二I2C控制器发送的不响应位时,生成Hs模式启动信号,以指示滤波单元26根据Hs模式对应的毛刺抑制要求对毛刺滤除周期进行调整(如一般情况下设置为0~10ns)以及,指示时钟预分频单元25调整SCL信号的高低电平占空比和SCL预分频频率。I2C从机单元24进一步用于,在向第二I2C控制器发送不响应位时,生成Hs模式启动信号,以指示滤波单元26根据所述Hs模式对应的毛刺抑制要求对毛刺滤除周期进行调整(如一般情况下设置为0~10ns);以及,指示时钟预分频单元25调整SCL信号的高低电平占空比和SCL预分频频率。
本发明实施例中,F/S模式对应的毛刺抑制要求对应的毛刺滤除周期为0~50ns,Hs模式对应的毛刺抑制要求对应的毛刺滤除周期为0~10ns。
较佳地,I2C主机单元23在切换至Hs模式之后,向第二I2C控制器发送重复起始条件、从设备地址和R/W位;接收到第二I2C控制器返回的响应位时,与第二I2C控制器进行通信;I2C从机单元24在切换至Hs模式之后,接收第二I2C控制器发送的重复起始条件、从设备地址和R/W位,对接收到的从设备地址验证成功后,向第二I2C控制器返回响应位,并与第二I2C控制器进行通信。
I2C主机单元23与第二I2C控制器进行通信,具体为:从存储单元22中获取发送数据,并将获取的发送数据通过I2C总线发送至第二I2C控制器;以及,将第二I2C控制器发送的发送数据存储至存储单元22中,以供CPU读取。I2C从机单元24与第二I2C控制器进行通信,具体为:从存储单元22中获取发送数据,并将获取的发送数据通过I2C总线发送至第二I2C控制器;以及,将第二I2C控制器发送的发送数据存储至所述存储单元22中,以供CPU读取。
较佳地,为提高总线访问效率,上述存储单元22一次可存储32字节。
较佳地,为保证I2C控制器2能够在较长的一段时间内工作在Hs模式下,I2C主机单元23在与第二I2C控制器完成一次数据传输之后,向第二实现高速I2C传输装置发送重复起始条件(重复起始条件,用于表征I2C控制器在进入Hs模式之后,保持该I2C的工作模式为Hs模式,物理上表现为SCL信号为高电平,SDA信号为从高电平向低电平切换),以继续工作在Hs模式下,当需要将该I2C控制器2返回F/S模式时,只需要发送停止条件(停止条件,用于表征停止I2C总线传输,物理上表现为SCL信号为高电平,SDA信号为从低电平向高电平切换)即可。I2C从机单元24在与第二I2C控制器完成一次数据传输之后,向第二实现高速I2C传输装置发送重复起始条件,以继续工作在Hs模式下,当需要将该I2C控制器2返回F/S模式时,只需要发送停止条件即可。与现有技术为保证I2C控制器工作在Hs模式需要重复发送主机码相比,本发明技术方案采用发送重复起始条件的方式减少了主机码的额外开销。
I2C从机单元24具体应用为:用状态机控制I2C控制器2产生的I2C总线操作周期,根据接收到的SCL信号接收SDA信号;以及,在I2C控制器2的工作模式为Hs模式时,检测并接收第二I2C控制器发送的起始条件和主机码,并向该第二I2C控制器发送不响应位。
时钟预分频单元25具体应用为:当I2C控制器2工作在F/S模式下时,将时钟预分频系数调整为与F/S模式对应的时钟预分频系数;当I2C控制器2工作在Hs模式下时,将时钟预分频系数调整为与Hs模式对应的时钟预分频系数。
本发明实施例中的时钟预分频单元25,包括两位可编程的预装载时钟分频子单元和八位可编程的SCL串行时钟分频子单元(预装载时钟分频子单元、SCL串行时钟分频子单元在附图中未标注),以支持输入时钟的宽频范围。
时钟预分频单元25实现时钟的频分,具体为:采用减法计数器计数分频,减法计数器的初值为预分频系数,当减法计数器计数为零时,输出高电平预分频时钟脉冲。可通过调整预分频系数来调整减法计数器的长度,从而改变预分频时钟的频率。时钟预分频单元25的跳转计数采用加法计数器计数,通过调整加法计数器的终值来调整加法计数器的长度,从而调整产生SCL信号的频率(一般情况下,当I2C控制器2工作在Hs模式下时,将该频率调整为3.4Mhz左右,当I2C控制器2工作在F/S模式下时,将该频率调整为100Khz/400Khz左右),当加法计数器的计数值在设定的预置范围时,输出高电平的SCL信号。通过调整该设定的阈值范围来调整SCL信号为高电平的长度,从而调整SCL信号的占空比,本发明实施例中,一般情况下,当I2C控制器2工作在F/S模式下时,将该SCL信号的占空比调整为1∶1;当I2C控制器2工作在Hs模式下时,将该SCL信号的占空比调整为1∶2。
较佳地,为支持时钟自动关断,从而在上电状态下最大限度的节省功耗,在CPU访问I2C控制器2时,或I2C控制器2进行I2C数据传输时,该I2C控制器2向外部时钟管理模块发送时钟请求,由该外部时钟管理模块在接收到时钟请求时开启时钟预分频单元25,以提供SCL时钟信号,在其他情况下,关断时钟预分频单元25,以节省功耗。
滤波单元26具体应用为:同步I2C总线信号(包括SCL信号、SDA信号),如图2A~2D中的SCL_in、SDA_in,并滤除接收到的I2C总线信号的毛刺,将滤除毛刺之后的I2C总线信号发送给I2C主机单元23或I2C从机单元24。
需要说明的是,本发明实施例中的I2C控制器2在某一工作时间内,只能设置为主机状态或从机状态,与外围的其他通信设备进行数据传输时,不能同时设置为主机状态与从机状态。
为更清楚详细的描述本发明技术方案,下面结合流程图来对本发明实施例中实现高速I2C传输的方法进行详细的描述,该方法为采用上述I2C控制器来实现I2C高速传输。
参见图3,为本发明实施例中在I2C控制器2为主机状态时,进行I2C传输的流程图,该流程包括步骤:
步骤301、在I2C控制器2处于空闲状态时,CPU通过CPU接口单元21将该I2C控制器2的工作模式配置为Hs模式,并配置I2C控制器2的I2C主机单元23的主机码、从设备地址以及时钟预分频系数。
步骤302、I2C控制器2的I2C主机单元23在F/S模式下,通过I2C总线向其他I2C控制器(用第二I2C控制器)发送起始条件和主机码。
步骤303、I2C主机单元23在检测并接收到第二I2C控制器发送的不响应位时,产生Hs模式启动信号并发送至时钟预分频单元25,以指示时钟预分频单元25调整时钟预分频系数和调整SCL信号的预分频频率。
步骤304、I2C主机单元23切换至Hs模式,并向该第二I2C控制器发送重复起始条件、从设备地址和R/W位。R/W为1bit位,用于决定数据的传输方向。
步骤305、I2C主机单元23在接收到第二I2C控制器发送的响应位后,进行数据读、写操作。
该步骤中,I2C主机单元23进行数据读、写操作,具体为:从存储单元22中读取发送数据,并将该发送数据通过I2C总线发送至第二I2C控制器;I2C主机单元23从I2C总线上接收第二I2C控制器发送的发送数据,并将接收到的发送数据写入到存储单元22中,以供CPU读取该数据。
步骤306、I2C主机单元23在完成一次数据访问之后,若需要继续工作在Hs模式下时向第二I2C控制器发送重复起始条件,以使I2C主机单元23继续工作在Hs模式下;若需要切换回F/S模式时,I2C主机单元23向第二I2C控制器发送停止条件。
较佳地,上述步骤303还包括步骤:I2C主机单元23向滤波单元26发送Hs模式启动信号,以指示滤波单元26根据Hs模式对应的毛刺抑制要求来调整滤除毛刺的周期;以及,I2C主机单元23将生成的Hs模式启动信号发送至时钟预分频单元25,以指示时钟预分频单元25根据Hs模式调整时钟预分频系数。
本发明技术方案中,如何切换I2C控制器的工作模式,并不仅限于如步骤306所述的方式,还可以是其他替换方式,如:当I2C控制器一旦处于Hs模式时,则一直保留在Hs模式,直到接收到用于表征退出Hs模式的指令之后,自动从Hs模式切换至F/S模式。
参见图4,为本发明实施例中在I2C控制器2为从机状态时,进行I2C传输的流程图,该流程包括以下步骤:
步骤401、在I2C控制器2处于空闲状态时,CPU接口单元21将该I2C控制器2的工作模式配置为Hs模式,配置从设备地址,并启动I2C传输。
步骤402、I2C从机单元24在F/S模式下,检测并接收第二I2C控制器发送的起始条件和主机码。
步骤403、I2C从机单元24向该第二I2C控制器发送不响应位。
步骤404、I2C从机单元24切换至Hs模式下,检测并接收第二I2C控制器发送的重复起始条件、从设备地址和R/W位。
步骤405、I2C从机单元24对接收到的从设备地址进行验证,并在验证成功后向第二I2C控制器发送响应位,进行数据访问。
该步骤中,I2C从机单元24进行数据访问,具体为:从存储单元22中读取发送数据,并将该发送数据通过I2C总线发送至第二I2C控制器;I2C从机单元24从I2C总线上接收第二I2C控制器发送的发送数据,并将接收到的发送数据写入到存储单元22中,以供CPU读取该数据。
步骤406、I2C从机单元24在完成一次数据访问之后,检测并接收第二I2C控制器发送的重复起始条件,继续工作在Hs模式下。
该步骤中,若I2C从机单元24检测到第二I2C控制器发送的停止条件时,将工作模式切换至F/S模式。
较佳地,上述步骤403还包括步骤:I2C从机单元24产生Hs模式启动信号并发送至滤波单元26,以指示滤波单元26根据Hs模式对应的毛刺抑制要求来调整滤除毛刺的周期。
相应地,本发明实施例中,如何切换I2C从机单元的工作模式,并不仅限于步骤406所述的方式,还可以是在I2C从机单元24启动并在Hs模式下工作时,一直工作在Hs模式下,当接收到第二I2C控制器发送的用于表征切换至F/S模式的指令时,将I2C从机单元24的工作模式切换至F/S模式。
采用本发明技术方案,一方面,采用较为简单的硬件设备实现了I2C高速传输,并适用于I2C总线的高速传输模式,提高数据通信速率;另一方面,本发明技术方案既支持Hs模式又支持F/S模式,既可以实现I2C主机状态的I2C高速传输也可以实现I2C从机状态的I2C高速传输,因此,采用本发明技术方案具有使用方便、灵活,适用性强等特点;再一方面,本发明技术方案实现了CPU总线与高速I2C总线的对接,支持Hs模式的主机与从机状态,实现了与其它I2C控制器的相互通信。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。