一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于I2C模块主从模式切换方法及设备与流程

2022-05-08 05:10:26 来源:中国专利 TAG:

基于i2c模块主从模式切换方法及设备
技术领域
1.本发明涉及集成电路控制领域,针对特定数字电路的电数字数据处理及控制模式的切换,尤其涉及一种基于i2c模块主从模式切换控制的方法及其设备。


背景技术:

2.i2c总线(inter-integrated circuit,集成电路总线)作为芯片的基础模块,在芯片的应用中起到非常重要的作用。为了便于使用者对芯片的操作,i2c总线功能点应更加健全,更方便于对芯片的应用。
3.在常规的集成电路中,i2c模块正常工作在从模式,外部主机可以通过i2c接口对芯片进行监控;在芯片上电初始化阶段,i2c模块可以工作在boot模式,加载i2c总线上eeprom中的数据,对芯片进行初始化。在现有技术中,想要修改eeprom中的个别数据时,还需借助软件驱动对eeprom重新烧录,无法通过i2c接口或者其他主口配置i2c模块寄存器,让i2c模块进入主模式,读写i2c总线上的eeprom(或其他从设备)。
4.目前i2c模块没有通过i2c接口配置实现主从模式的任意切换以及访问i2c总线上从设备的功能,这一限制大大降低了用户使用芯片的体验,使得用户对芯片的监控增加了不必要的多余操作。


技术实现要素:

5.有鉴于此,本发明提供了一种基于i2c模块主从模式切换方法及装置,通过本方案能够实现在只使用i2c接口的情况下,可以使芯片上i2c模块进入主模式,对i2c总线上的从设备(例如温度传感器、eeprom等)进行访问。
6.具体而言,本发明公开了以下技术方案:一方面,本发明提供了一种基于i2c模块主从模式切换的方法,该方法应用于芯片,所述芯片至少包括idle状态、boot模式、master模式、arb_wait状态、从模式;所述idle状态,代表芯片处于从模式,且未确定要进入的下一步模式;所述方法包括:在上电或重启之后,芯片进入idle状态,并确定要进入的下一步模式,所述下一步模式包括master模式、boot模式;确定要进入的下一步模式的方式为:通过管脚设置选择进入boot模式,通过寄存器数据配置方式由idle状态后的从模式进入master模式或boot模式;此时,芯片启动后进入可选择两种模式的状态;当配置芯片i2c模块寄存器切换i2c模块的主、从模式时,可以通过例如jtag、pcie等方式进行配置,或者通过芯片外部管脚选择为boot模式,而不进行类似配置时,本领域技术人员知晓,将在idle状态后,进入从模式;当进入boot模式时,若在发送从设备地址阶段,则将发送的从设备地址数据和i2c总线上的数据做对比,数据相同则仲裁成功,继续进行boot操作,反之仲裁失败,则进入arb_wait状态,进行仲裁等待;若在发送从设备地址阶段之后,则将发送要访问的从设备外围地址和/或数据与i2c总线上的数据做对比,数据相同则仲裁成功,继续进行boot操作,反
之仲裁失败,则中止boot加载事务,进入idle状态;若没有发生仲裁,则在boot加载完成后,进入idle状态;当进入master模式时,若在发送从设备地址阶段,则将发送的从设备地址数据和i2c总线上的数据做对比,数据相同则仲裁成功,继续进行master操作,反之仲裁失败,则进入arb_wait状态;若在发送从设备地址阶段之后,则将发送要访问的从设备外围地址和/或数据与i2c总线上的数据做对比,数据相同则仲裁成功,继续进行master操作,反之仲裁失败,则中止事务,进入idle状态;若没有发生仲裁,则事务完成后进入idle状态;当进入arb_wait状态时,若由boot模式进入,则检测到stop信号后再次进入boot模式进行重传;若由master模式进入,则检测到stop信号后再次进入master模式进行重传;若arb_wait状态超时,则中止事务并进入idle状态;当系统或者设备运行时,i2c总线上会因为其他挂接在总线上的多种设备的正常工作或运转而产生stop信号的发送,因此,在arb_wait状态时,我们通过检测i2c总线上的stop信号可以进行等待状态的进一步控制,以保证重传数据的有效发送。
7.所述stop信号为i2c总线上的stop信号,即停止信号;所述arb_wait状态为仲裁等待状态;所述master模式对应主模式。
8.优选的,上述的idle状态,芯片处于从模式状态下,可以进行下一步的选择从而进入master模式或者boot模式,或者不进行下一步的选择,使芯片处于从模式下进行后续的操作。
9.从模式,是外部主设备通过i2c模块对芯片内部寄存器进行操作,方便监控芯片状态。
10.优选的,所述master模式和boot模式基于芯片上i2c模块实现,以通过i2c总线访问从设备;所述从设备偏移地址为0字节或1字节或2字节;所述master模式、boot模式写入的数据以及读取的数据均为可控制。对于写入的数据和读取的数据的字节长度,可以进行预先设置,例如可以为0、1、2等字节数。
11.优选的,所述master模式中写操作的从设备地址、从设备偏移地址、控制信号、写入的数据均预先存放在芯片内部寄存器中,然后再配置芯片内部寄存器启动写事务;所述master模式和boot模式中读操作的从设备地址、从设备偏移地址、控制信号,均预先存放在芯片内部寄存器中,然后再配置芯片内部寄存器启动读事务。
12.优选的,在master模式或boot模式下,为进一步方便本发明的方案的执行,实现主、从设备之间的数据的交互,i2c模块与i2c总线间的驱动通过主模式驱动控制器实现;所述主模式驱动控制器包括start、restart、send、ack、rec、stop状态;当有主模式事务时,由idle状态进入start状态;在start状态中,若满足start状态的建立和保持时间条件时,则进入send状态,否则进入stop状态;在send状态中,将发送要访问的从设备外围地址和/或数据,与i2c总线上的数据做对比,数据相同则仲裁成功,继续进行原模式操作,反之仲裁失败,则进入stop状态;若发送预定量数据之后,则进入ack状态;在ack状态中,若数据发送完成或ff校验失败或接收到nack信息或超时错误,则进
入stop状态;基于关联状态条件控制,进入restart、rec或send状态;当进入restart状态后,直接进入send状态;在rec状态中,接收预定量数据后,进入ack状态;当检测到stop信号后,进入stop状态,之后直接进入idle状态。
13.优选的,上述的关联状态条件控制,具体过程为:master模式读时序发送从设备外围地址后进入ack状态,会有start信号,然后进入restart状态;发送设备地址和读写标志位,然后进入ack状态,根据读写标志位会选择进入rec或send状态;在发送或接收状态,发送或接收预设量数据后进入ack状态,数据没有发送或接收完,则根据发送或接收状态指示信号继续进入rec或send状态。
14.优选的,在master模式下,写操作时序为:进入对应模式后,在start状态下,开启时序;其后发送从设备地址及写标志位,与从设备握手,若匹配成功,则从设备返回应答ack,否则进入stop状态并结束时序;匹配成功后,发送要访问的从设备外围地址;然后发送写入的数据;数据发送完成后进入stop状态,并结束本次时序;本次时序中,每发送预设量数据后,则对应设备返回一应答ack,该对应设备为主设备或从设备。
15.优选的,在master模式或boot模式下,读操作时序为:进入对应模式后,在start状态下,开启时序;其后发送从设备地址及写标志位,与从设备握手,若匹配成功,则从设备返回应答ack,否则进入stop状态并结束时序;匹配成功后,发送要访问的从设备外围地址;接着向从设备发送从设备地址及读标志位,若匹配成功,则从设备返回应答ack,否则进入stop状态并结束时序;匹配成功并接收到从设备返回的应答ack后,接收从设备返回的数据;数据接收完成后,从设备发送应答nack,接收到应答nack后进入stop状态,并结束本次时序;本次时序中,每发送预设量数据后,则对应设备返回一应答ack,该对应设备为主设备或从设备。
16.优选的,在从模式下,为进一步方便本发明的方案的执行,实现主、从设备之间的数据的交互,i2c模块与i2c总线间的驱动通过从模式驱动控制器实现;所述从模式驱动控制器包括rec_device、send_device_ack、send_data、rec_ack、rec_data、send_ack状态;进入从模式后,当检测到start信号,则进入rec_device状态;在rec_device状态中,接收从设备地址及读/写控制位之后,则进入send_device_ack状态;在send_device_ack状态中,若从设备地址正确,则回复应答ack;如果读使能有效,则进入send_data状态,如果写使能有效,则进入rec_data状态;在send_data状态中,发送预定量数据之后,进入rec_ack状态;在rec_ack状态中,收到应答nack或发送数据完成,则进入idle状态;如果继续发
送数据,则再次进入send_data状态;在rec_data状态中,接收预定量数据之后进入send_ack状态;在send_ack状态中,若回复应答ack,则再次进入rec_data状态。
17.优选的,在从模式下,写操作时序为:开启时序后,i2c模块接收从设备地址和写标志位,与主设备握手,若匹配成功,则从设备发送应答ack,否则,发送应答nack;匹配成功且从设备发送应答ack后,接收主设备要访问的芯片内部存储地址;此后,从设备接收主设备要写入的数据,至接收到主设备的stop信号后结束时序;本次时序中,从设备每接收预定量的数据,则向主设备返回一应答ack。
18.优选的,在从模式下,读操作时序为:开启时序后,从设备接收从设备地址和写标志位,与主设备握手,若匹配成功,则从设备发送应答ack,否则,发送应答nack;若匹配成功且从设备发送应答ack后,接收主设备要访问的芯片内部存储地址;接着再次接收主设备发送的从设备地址及读标志位,若匹配成功,则从设备发送应答ack,并发送从设备的内部存储数据给主设备,若匹配失败,则报错;发送数据至接收到主设备的stop信号,结束本次时序;本次时序中,从设备每接收预定量的数据,则向主设备返回一应答ack。
19.又一方面,本发明还提供了一种基于i2c模块主从模式切换的设备,所述设备包括集成于芯片上的i2c模块、主模式驱动控制器、从模式驱动控制器、芯片内部寄存器;芯片通过i2c模块,与i2c总线上的从设备连接;所述芯片至少包括idle状态、arb_wait状态、从模式、boot模式、master模式;基于i2c接口,令i2c模块进入从模式或master模式或boot模式的状态下,访问所述从设备,实现与从设备的信息交互。
20.优选的,master模式写操作的从设备地址、从设备偏移地址、控制信号、写入的数据,均预存在芯片内部寄存器,之后再配置芯片内部寄存器启动master模式下的写事务;master模式或boot模式读操作的从设备地址、从设备偏移地址、控制信号,均预存在芯片内部寄存器,之后再配置芯片内部寄存器启动master模式或boot模式下的读事务;读取的数据存放在芯片内部寄存器。
21.优选的,所述idle状态、boot模式、master模式、arb_wait状态的跳转方式为:在上电或重启之后,芯片进入idle状态,并确定要进入的下一步模式,所述下一步模式包括master模式、boot模式;此时,芯片启动后进入可选择两种模式的状态;确定要进入的下一步模式的方式为:通过管脚设置选择进入boot模式,通过寄存器数据配置方式由idle状态后的从模式进入master模式或boot模式;此时,当配置芯片i2c模块寄存器切换i2c模块的主、从模式时,可以通过例如jtag、pcie等方式进行配置,或者通过芯片外部管脚选择为boot模式;当进入boot模式时,若在发送从设备地址阶段,则将发送的从设备地址数据和i2c总线上的数据做对比,数据相同则仲裁成功,继续进行boot操作,反之仲裁失败,则进入arb_wait状态,进行仲裁等待;若在发送从设备地址阶段之后,则将发送要访问的从设备外围地址和/或数据与i2c总线上的数据做对比,数据相同则仲裁成功,继续进行boot操作,反
之仲裁失败,则中止boot加载事务,进入idle状态;若没有发生仲裁,则在boot加载完成后,进入idle状态;当进入master模式时,若在发送从设备地址阶段,则将发送的从设备地址数据和i2c总线上的数据做对比,数据相同则仲裁成功,继续进行master操作,反之仲裁失败,则进入arb_wait状态;若在发送从设备地址阶段之后,则将发送要访问的从设备外围地址和/或数据与i2c总线上的数据做对比,数据相同则仲裁成功,继续进行master操作,反之仲裁失败,则中止事务,进入idle状态;若没有发生仲裁,则事务完成后进入idle状态;当进入arb_wait状态时,若由boot模式进入,则检测到stop信号后再次进入boot模式进行重传;若由master模式进入,则检测到stop信号后再次进入master模式进行重传;若arb_wait状态超时,则中止事务并进入idle状态;所述stop信号为停止信号;所述arb_wait状态为仲裁等待状态;所述master模式对应主模式。
22.与现有技术相比,本发明技术方案能够实现i2c模块任意切换主从模式,并且研发团队已经在fpga上工程实现,本方案具备良好的性能和简洁的结构,流片试用情况良好;本方案通过i2c接口配置寄存器任意切换主从模式的方法,提高了用户体验,使得用户能够更加方便简单地监控芯片状态,而不需要再借助其他软件驱动及主口设备,大大降低了日常操作的成本,提高了芯片状态监控的便利性。
附图说明
23.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
24.图1为本发明实施例的主要状态机示意图;图2为本发明实施例的主模式底层驱动控制器示意图;图3为本发明实施例的主模式写操作工作时序图;图4为本发明实施例的主模式读操作工作时序图;图5为本发明实施例的主模式读外围地址为0字节的从设备工作时序图;图6为本发明实施例的从模式底层驱动控制器;图7为本发明实施例的从模式写操作工作时序;图8为本发明实施例的从模式读操作工作时序。
具体实施方式
25.下面结合附图对本发明实施例进行详细描述。应当明确,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
26.本领域技术人员应当知晓,下述具体实施例或具体实施方式,是本发明为进一步解释具体的发明内容而列举的一系列优化的设置方式,而该些设置方式之间均是可以相互结合或者相互关联使用的,除非在本发明明确提出了其中某些或某一具体实施例或实施方
式无法与其他的实施例或实施方式进行关联设置或共同使用。同时,下述的具体实施例或实施方式仅作为最优化的设置方式,而不作为限定本发明的保护范围的理解。
27.在一个具体的实施例中,芯片上i2c模块的主模式和boot模式的控制器状态机如图1所示,由于boot模式也是主模式的一种模式,主模式(master)是需要芯片上电后通过人为配置启动主模式的读写操作时序,boot模式则是上电自启动,自行加载外部存储数据,不需要人为配置,只需要上电前把管脚选好即可,只有读操作时序。本发明在方案设计时将两个模式放在一起实现,以实现逻辑的基本复用。从模式(slave),是外部主设备通过i2c模块对芯片内部寄存器进行操作,方便监控芯片状态。
28.结合图1,在该实施例中,状态机跳转条件如下:idle:在芯片上电/重启之后进入idle状态,此时,进一步确定所选择进入的不同模式:如果通过芯片外部管脚选择为boot模式,则进入boot模式;如果通过i2c接口配置芯片寄存器要进入主模式,则进入主模式(即master模式);总之,确定要进入的下一步模式的方式可以通过以下方法:通过管脚设置选择进入boot模式,通过寄存器数据配置方式由idle状态后的从模式进入master模式或boot模式;该idle状态,可以理解为没有进入到主模式和boot模式,处在从模式状态的初始状态,本发明在此状态时,将状态截断并保持,此时,也可以通过外部设备,通过i2c模块对芯片内部寄存器进行操作,以监控芯片状态,从而通过外部设备的控制进入到从模式状态进行后续的操作,此处不再赘述。
29.boot:当进入boot模式时,若在发送从设备地址阶段,则将发送的从设备地址数据和i2c总线上的数据做对比,数据相同则仲裁成功,继续进行boot操作,反之仲裁失败,则进入仲裁等待状态(即arb_wait状态),进行仲裁等待;若在发送从设备地址阶段之后,则将发送要访问的从设备外围地址和/或数据与i2c总线上的数据做对比,数据相同则仲裁成功,继续进行boot操作,反之仲裁失败,则中止boot加载事务,进入idle状态;若没有发生仲裁,则在boot加载完成后,进入idle状态;master:当进入master模式时,若在发送从设备地址阶段,则将发送的从设备地址数据和i2c总线上的数据做对比,数据相同则仲裁成功,继续进行master操作,反之仲裁失败,则进入仲裁等待状态(即arb_wait状态);若在发送从设备地址阶段之后,则将发送要访问的从设备外围地址和/或数据与i2c总线上的数据做对比,数据相同则仲裁成功,继续进行master操作,反之仲裁失败,则中止事务,进入idle状态;若没有发生仲裁,则事务完成后进入idle状态;arb_wait:在arb_wait状态中,如果是由boot状态进入的,检测到stop信号之后再次进入boot状态进行重传;如果是master状态进入的,检测到stop信号之后再次进入master状态进行重传;若仲裁等待状态(即arb_wait状态)超时,则中止事务并进入idle状态。
30.对于stop信号,本发明中上述arb_wait状态中,检测的是i2c总线上的stop信号,即停止信号,当系统或者设备运行时,i2c总线上会因为其他挂接在总线上的多种设备的正常工作或运转而产生stop信号的发送,因此,在arb_wait状态时,我们通过检测i2c总线上的stop信号可以进行等待状态的进一步控制,以保证重传数据的有效发送。
31.以上,对本发明提出的主要的状态机跳转的基本条件和方式进行了阐述,在一个
更为优选的实施方式中,本发明中的主模式(即master模式)以及boot模式的设计是基于芯片上的i2c模块实现,可以通过以下优选的方式进行设计:芯片上i2c模块工作在主模式(即master模式)时,具备对i2c总线上从设备进行访问的功能,更为具体的,我们的设计中,从设备的偏移地址可以是0、1或2字节,主模式写入的数据为0-4字节可控制,读取的数据为1-4字节可控制。
32.主模式(即master模式)写操作的从设备地址、从设备偏移地址、控制信号和写入的数据,均可以预先存放在芯片内部寄存器中,然后再配置芯片内部寄存器启动主模式写事务;主模式读操作的从设备地址、从设备偏移地址和控制信号,同样可以预先存放在芯片内部寄存器中,然后再配置芯片内部寄存器启动主模式读事务,读出的数据同样存放在芯片内部寄存器中。
33.i2c模块逻辑中处理的数据为并行数据,而i2c总线处理的数据是串行数据,因此,两者进行交互需要数据的转换,与i2c总线上数据的交互需要底层驱动控制器来完成,如图2所示。
34.结合图2所示的优选的驱动控制器,对应的状态机跳转条件可以进行如下设置:idle:当有主模式事务时,进入start状态;在该情景下,idle状态可以视为主模式的初始状态;start:满足start的建立和保持时间,则进入send状态,若仲裁失败将不满足建立和保持时间,则进入stop状态;restart:当进入restert状态后,则直接进入send状态;send:在该状态中,将发送要访问的从设备外围地址和/或数据,与i2c总线上的数据做对比,数据相同则仲裁成功,继续进行原模式操作,反之仲裁失则直接进入stop状态;如果发送8bit数据之后,则进入ack状态;此处的仲裁,针对数据总线的状态进行仲裁,若要输出数据和i2c数据总线不一致,说明当前传输的不是本设备,视为仲裁失败;ack:数据发送完成、ff校验失败、接收到nack或超时错误,则进入stop状态;在ack状态中,受其他关联状态的条件的控制,可以对应进入restart、rec或send状态;此处,受其他关联状态条件的控制,具体为:主模式读时序发送从设备外围地址后进入ack状态,会有start信号,然后进入restart状态;发送设备地址和读写标志位,然后进入ack状态,根据读写标志位会选择进入rec或send状态;在发送或接收状态发送或接收预设量数据后进入ack状态,数据没有发送或接收完,则根据发送或接收状态指示信号继续进入rec或send状态。
35.rec:在该状态下,接收8bit数据之后,则进入ack状态;stop:当检测出stop信号之后,则进入idle状态。
36.在上述的状态机设计方式下,主模式的工作时序结合图3-5所示,具体可以设置如下:对于主模式(即master模式)的写操作时序,结合图3所示,以每发送8bit数据单位返回1bit应答为例说明,在主模式中,在start状态下,开启时序,接着是发送7bit从设备地址和1bit写标志位与从设备进行握手,如果匹配成功,则从设备会返回应答ack;然后发送要访问的从设备外围地址,该外围地址可以是0、1或2字节,每8bit对方都会返回1bit应答ack;最后发送要写入从设备的数据,数据可设置为0-4字节可控制,数据发送时,也以每发
送8bit数据,从设备返回1bit应答ack方式,数据发送完成后在stop状态下结束该时序。
37.对于主模式(即master模式)或者boot模式的读操作时序相同,结合图4所示,同样以每发送8bit数据单位返回1bit应答为例说明,在主模式中,在start状态下,启动读操作,接着是发送7bit设备地址和1bit写标志位与从设备进行握手,如果匹配成功,则从设备会给出应答ack, 然后发送要访问的从设备外围地址,该外围地址可以是1或2字节;紧接着会再次发送7bit设备地址和1bit读标志位给从设备,如果匹配成功,则从设备会返回应答ack,最后接收从设备返回的数据,数据可以为1-4字节可控制,每8bit发给主设备则主设备发送1bit应答ack给从设备;当数据接收完成后,从设备发送应答nack后在stop状态下结束时序。在boot模式中,读操作的时序与主模式相同,但是,在boot模式中,接收从设备返回的数据,其字节数可以是超过4字节的,即读取字节数可以多于主模式中的字节数。
38.在一特殊的情景中,结合图5所示,在主模式下读外围地址为0字节的从设备时,其工作时序在start状态下启动读操作,然后直接发送7bit从设备地址和1bit读标志位与从设备进行握手,如果匹配成功,则从设备会给出应答ack,最后接收从设备返回的数据,数据可以为1-4字节可控制,每8bit发给从设备,则从设备发送1bit应答ack,接收完成后从设备发送应答nack后在stop状态下结束时序。
39.以上需要说明的是,上述示例以每发送8bit数据单位,则对方返回1bit的ack应答的方式,本领域技术人员可以在这一设计的基础上,对发送的数据单位长度和/或返回的ack应答长度进行其他方式或数据长度的设置,该些常规的调整,均应当视为落入本发明的保护范围之内。
40.在一个更为优选的实施方式中,对应的从模式设计参考图6所示。芯片上i2c模块工作在从模式下,外部主机设备可通过i2c模块访问芯片内部寄存器,完成对芯片的监测、配置和调试。i2c模块进入从模式的方式,可通过芯片外部管脚的选择,上电或重启之后直接进入从模式,从模式,是外部主设备通过i2c模块对芯片内部寄存器进行操作,方便监控芯片状态。
41.i2c模块作为从模式时支持7bit的设备地址,i2c总线上可挂载更多的芯片,通过不同的设备地址访问不同的芯片。同样,i2c模块从模式逻辑中处理的数据为并行数据,与i2c总线上数据的交互需要底层驱动控制器来完成。
42.在图6所示的实施方式中,对应的状态机跳转条件可以设置如下:idle:检测到stop信号进入idle状态;检测到start信号进入rec_device状态;rec_device:接收7bit设备地址和1bit读写控制位之后,进入send_device_ack状态;send_device_ack:设备地址正确,则回复ack;如果读使能有效,则进入send_data状态,如果写使能有效,则进入rec_data状态;send_data:发送8bit数据之后,进入rec_ack状态;rec_ack:收到nack或发送数据完成,则进入idle状态;如果继续发送数据,则再次进入send_data状态;rec_data:接收8bit数据之后进入send_ack状态;send_ack:若回复ack,则再次进入rec_data状态。
43.对应的从模式的工作时序,结合图7-8所示,具体过程如下:
对于从模式下的写操作时序,结合图7所示,其过程为:接收主设备发来的start信号,开启时序,接着从设备接收7bit从设备地址和1bit写标志位与主设备进行握手,如果匹配成功,则从设备给主设备发送应答ack,然后接收主设备要访问的芯片内部存储地址,该内部存储地址的字节数由主设备决定,每8bit后从设备都会发送1bit应答ack,最后接收主设备要写入的数据,写入的数据的字节数由主设备决定,此后从设备接收要写入的数据,直到主设备的stop信号结束时序。
44.对于从模式下的读操作时序,结合图8所示,其过程为:从设备接收主设备发来的start信号,开启时序,接着从设备接收主设备发送的7bit设备地址和1bit写标志位,与主设备进行握手,如果匹配成功,则从设备给主设备发送应答ack,然后接收主设备要访问的芯片内部存储地址,该内部存储地址的字节数由主设备决定,从设备每接收8bit数据,都会发送1bit应答ack给主设备,紧接着再次接收主设备发来的7bit设备地址和1bit读标志位,如果匹配,则从设备给主设备发送应答ack,最后从设备发送内部存储的数据,该些数据的字节数由主设备决定,从设备发送每8bit数据,都会接收来自主设备的1bit应答ack,发送数据直到主设备的stop信号结束时序。
45.以上需要说明的是,上述示例以每发送8bit数据单位,则对方返回1bitack应答的方式,本领域技术人员可以在这一设计的基础上,对发送的数据单位长度和/或返回的ack应答长度进行其他方式或数据长度的设置,该些常规的调整,均应当视为落入本发明的保护范围之内。
46.此外,需要进一步说明的是,本发明上述实施例中所提供的基于芯片上i2c模块主从模式切换的方法,不仅仅现定于芯片或常规集成电路中,本发明所指的芯片涵盖了常规的集成电路、片上系统或者集成电路的集合设备,或者能够实现本发明具体方法的电路设备,因此,该些在其他类型中的电路设备中对本方法的使用,均应当视为落入本发明的保护范围之内。
47.本方案在又一种实施例中,可以通过设备的方式来实现,即基于i2c模块主从模式切换的设备,所述设备包括集成于芯片上的i2c模块、主模式驱动控制器、从模式驱动控制器、芯片内部寄存器;芯片通过i2c模块,与i2c总线上的从设备连接;所述芯片至少包括idle状态、arb_wait状态、从模式、boot模式、master模式;基于i2c接口,令i2c模块进入从模式或master模式或boot模式的状态下,访问所述从设备,实现与从设备的信息交互。
48.为更为便利地实现本发明的设备功能,在进一步优化的实施方式中,master模式写操作的从设备地址、从设备偏移地址、控制信号、写入的数据,均预存在芯片内部寄存器,之后再配置芯片内部寄存器启动master模式下的写事务;master模式、boot模式读操作的从设备地址、从设备偏移地址、控制信号,均预存在芯片内部寄存器,之后再配置芯片内部寄存器启动master模式、boot模式下的读事务;读取的数据存放在芯片内部寄存器。boot模式的读操作是由管脚控制,上电自启动。
49.优选的,所述idle状态、boot模式、master模式、arb_wait状态的跳转方式为:在上电或重启之后,芯片进入idle状态,并确定要进入的下一步模式,所述下一步模式包括master模式、boot模式;此时,芯片启动后进入可选择两种模式的状态;当配置芯
片i2c模块寄存器切换i2c模块的主、从模式时,可以通过例如jtag、pcie等方式进行配置,或者通过芯片外部管脚选择为boot模式;当进入boot模式时,若在发送从设备地址阶段,仲裁失败,则进入arb_wait状态,进行仲裁等待;若在发送从设备地址阶段之后,仲裁失败,则中止boot加载事务,进入idle状态;若没有仲裁,则在boot加载完成后,进入idle状态;当进入master模式时,若在发送从设备地址阶段,仲裁失败,则进入arb_wait状态;若在发送从设备地址阶段之后,仲裁失败,则中止事务,进入idle状态;若没有仲裁,则事务完成后进入idle状态;当进入arb_wait状态时,若由boot模式进入,则检测到stop信号后再次进入boot模式进行重传;若由master模式进入,则检测到stop信号后再次进入master模式进行重传;若仲裁超时,则中止事务并进入idle状态;所述stop信号为停止信号;所述arb_wait状态为仲裁等待状态;所述master模式对应主模式。
50.在各模式的不同状态中,在具体实现主设备与从设备之间的读、写等数据交互操作中,上述的设备可以执行如本说明书中所给出的基于i2c模块主从模式切换的方法,此处不再赘述。
51.此外,在更为优选的实施方式中,该设备可以包括执行上述基于芯片上i2c模块主从模式切换的方法各个或几个步骤的相应模块。因此,可以由相应模块执行上述各个实施方式的每个步骤或几个步骤,并且该设备可以包括这些模块中的一个或多个模块。模块可以是专门被配置为执行相应步骤的一个或多个硬件模块、或者由被配置为执行相应步骤的处理器来实现、或者存储在计算机可读介质内用于由处理器来实现、或者通过某种组合来实现。
52.该设备利用i2c总线架构来实现与从设备之间的数据交互。总线架构可以包括任何数量的互连总线和桥接器,这取决于硬件的特定应用和总体设计约束。总线将包括一个或多个处理器、存储器和/或硬件模块的各种电路连接到一起。总线还可以将诸如外围设备、电压调节器、功率管理电路、外部天线等的各种其它电路连接。
53.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本方案的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本方案的实施方式所属技术领域的技术人员所理解。处理器执行上文所描述的各个方法和处理。例如,本方案中的方法实施方式可以被实现为软件程序,其被有形地包含于机器可读介质,例如存储器。在一些实施方式中,软件程序的部分或者全部可以经由存储器和/或通信接口而被载入和/或安装。当软件程序加载到存储器并由处理器执行时,可以执行上文描述的方法中的一个或多个步骤。备选地,在其他实施方式中,处理器可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述方法之一。
54.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,可以具体实现在任何可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指
令执行系统、装置或设备而使用。
55.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献