CN116775537A - 一种10bit寻址模式下的I2C总线传输方法 - Google Patents
一种10bit寻址模式下的I2C总线传输方法 Download PDFInfo
- Publication number
- CN116775537A CN116775537A CN202310644277.7A CN202310644277A CN116775537A CN 116775537 A CN116775537 A CN 116775537A CN 202310644277 A CN202310644277 A CN 202310644277A CN 116775537 A CN116775537 A CN 116775537A
- Authority
- CN
- China
- Prior art keywords
- slave
- signal
- address
- bus
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 47
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000004044 response Effects 0.000 claims abstract description 37
- 230000006854 communication Effects 0.000 claims abstract description 16
- 238000004891 communication Methods 0.000 claims abstract description 13
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000012795 verification Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000007704 transition Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000005574 cross-species transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 241000976924 Inca Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明涉及一种I2C总线传输方法,具体涉及一种10bit寻址模式下的I2C总线传输方法。解决了现有I2C的10bit寻址模式存在寄存器配置难度加大、主从机状态数量增加以及主从机状态跳转复杂的技术问题。本发明方法包括以下步骤:1)主机选择10bit寻址模式;2)主机发送SCL时钟并控制从机SCL时钟总线,从机监测起始信号和停止信号;3)主机产生起始信号并发送第一个地址信号;从机接收第一个地址信号,将接收的地址和自身10bit地址的前两位进行匹配,若匹配成功,则返回应答信号;4)主机接收应答信号,将第二个地址信号发送到总线上;从机接收第二个地址信号并与自身地址的后8位进行匹配;若匹配成功,则返回应答信号,建立主机和从机的通讯;5)进行通讯。
Description
技术领域
本发明涉及一种I2C总线传输方法,具体涉及一种10bit寻址模式下的I2C总线传输方法。
背景技术
I2C(Inter-Integrated Circuit,集成电路)是由Philips公司开发的一种双向二线制同步串行总线,由控制时钟的SCL(Serial Clock Line)时钟总线和传输数据的SDA(Serial Data Line)数据总线组成。
目前I2C传输分为7bit寻址模式和10bit寻址模式,都遵循I2C标准协议。在通用MCU中,由APB总线协议控制的I2C的10bit寻址模式中,其数据输入和输出有着很大的不同,这也导致寄存器配置难度加大和主从状态机状态数量增加以及更加复杂的状态机跳转情况的发生。
发明内容
本发明的目的是解决现有I2C的10bit寻址模式,其数据输入和输出存在很大不同,导致寄存器配置难度加大、主机和从机的状态数量增加以及主机和从机的状态跳转复杂的技术问题,而提供一种10bit寻址模式下的I2C总线传输方法。
本发明的技术解决方案是:
一种10bit寻址模式下的I2C总线传输方法,其特殊之处在于,包括以下步骤:
1)主机选择10bit寻址模式;
2)主机发送满足时序要求的SCL时钟;
从机释放SCL总线的控制权并由主机控制其SCL时钟总线,从机实时监测I2C总线上的起始信号和停止信号;
3)主机接收到开始传输的信号后,在I2C总线上产生起始信号,发送第一个地址信号到DR寄存器;所述第一个地址信号依次包括五位帧头、两位地址和一位读写控制;其中,地址为从机地址的前两位xx,读写控制为R/W;
从机监测到起始信号后,接收第一个地址信号,若第一个地址信号为帧头+xxx,从机进入到10bit寻址模式;从机再将第一个地址信号中的地址和自身10bit地址的前两位做比较,若匹配成功,则返回应答信号,并将第一个地址信号中的读写控制保存;若匹配失败,从机进入到初始状态,等待下一次总线上的起始信号的发出,直至匹配地址成功;
4)主机接收到应答信号后,将应答信号中的读写控制保存,将第二个地址信号发送到总线上;所述第二个地址信号包括从机的后8位地址;
从机从I2C总线上接收到第二个地址信号,与自身地址寄存器的后8位地址进行匹配;若匹配成功,则将应答信号通过I2C总线发送回主机,执行步骤5),若匹配失败,从机进入到初始状态,等待下一次总线上的起始信号的发出,重复步骤3)-步骤4)直至匹配成功;
5)主机和从机根据第一个地址信号中的读写控制选择发送模式或者接收模式,进行通讯。
进一步地,步骤3)中,所述帧头为11110。
进一步地,所述R/W为1时表示为主机接收模式,R/W为0时表示为主机发送模式。
进一步地,步骤5)中,所述主机和从机的通讯具体为:从机选发送模式,从机等待DR寄存器的数据写入,当写入完成后将数据通过移位寄存器发送到SDA总线上;主机通过SDA总线接收数据并在接收到数据后发出应答信号;若主机控制SDA总线不再发送应答信号,则主机会产生非应答信号,从机不再发送数据,接着由主机发送停止信号,完成本次传输,从机等待下一次起始信号的发送。
进一步地,步骤5)中,进行通讯过程中,若从机地址未匹配成功,将其总线繁忙标志位置1,等待监测到总线上产生停止信号后,将其置0。
本发明的有益效果是:
1、本发明一种10bit寻址模式下的I2C总线传输方法,属于要素省略发明,在10bit传输寻址过程中,删除了一个由输入引入的起始信号,删除了一个地址位的传输,简化传输步骤,提高了I2C协议寻址效率,且更加高效的确认了10bit的从机地址和读写请求的控制。不仅减少了不必要的传输,还在设计的模块内部减少了主从机状态机的代码量,优化状态机底层逻辑代码,减少验证时输入信号对模块的配置,方便后期验证,降低了设计人员对I2C模块的主从状态机模块的开发设计难度,也让I2C模块的通讯协议变得更加简单和便利。
2、本发明一种10bit寻址模式下的I2C总线传输方法,在主机和从机成功建立通讯过程中,若从机地址未匹配成功,便将其总线繁忙标志位置1,等待监测到总线上产生停止信号后,将其置0,以防其他I2C外设在总线上生成错误的开始和停止信号,占用总线和干扰传输。
3、本发明在I2C的10bit传输过程中,通过减少一个字节的传输和再开始信号,在通讯过程方面,将整体寻址过程进行简化,提高寻址效率,简化I2C协议,便于协议的理解;在底层代码方面,减少了主状态机和从状态机的状态数量,同时也减少了状态间的跳转条件,降低了设计难度;在验证方面,减少不必要的对I2C模块底层寄存器的配置和时序的调整,减少了验证的部分测试用例的编写,缩短了验证周期,排除了协议帧头首地址的第一次发送和第二次发送不同时导致故障的可能。
附图说明
图1为本发明一种10bit寻址模式下的I2C总线传输方法实施例中主机作为接收器模式下的SCL和SDA线信号输出图;
图2为本发明一种10bit寻址模式下的I2C总线传输方法实施例中从机作为发送器模式下的SCL和SDA线信号输出图;
图3为本发明一种10bit寻址模式下的I2C总线传输方法实施例中主机作为接收器时状态机的状态转移图;
图4是本发明一种10bit寻址模式下的I2C总线传输方法实施例中从机作为发送器时状态机的状态转移图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下通过附图和实施例对本发明进一步详细说明。
本发明一种10bit寻址模式下的I2C总线传输方法,包括以下步骤:
1)主机配置有I2C的寻址模式选择,工作时,主机选择10bit寻址模式。
2)主机发送满足时序要求的SCL时钟。
从机释放SCL总线的控制权并由主机控制其SCL时钟总线,从机实时监测I2C总线上的起始信号和停止信号。
3)主机接收到开始传输的信号后,在I2C总线上产生起始信号,发送第一个地址信号到DR寄存器;第一个地址信号依次包括五位帧头、两位地址和一位读写控制;其中,地址为从机地址的前两位xx,读写控制为R/W。R/W为1时表示为主机接收模式,R/W为0时表示为主机发送模式。本实施例中,第一个地址信号中第一个字节数据的第[0]位设置成1,配置为主机接收数据模式;帧头为11110;主机发送完起始信号后继续发送10bit寻址模式下的第一个数据(11110xx1)。
从机监测到起始信号后,从机接收到第一个地址信号,包括帧头和10bit地址的前两位地址以及读写控制。若第一个地址信号为帧头+xxx,从机进入到10bit寻址模式;从机再将第一个地址信号中的地址和自身10bit地址的前两位做比较,若匹配成功,则返回应答信号到SDA总线上,并将第一个地址信号中的读写控制进行保存,待地址匹配后进行通讯时执行发送数据的功能;若匹配不成功,则不应答,从机进入到初始状态,等待下一次总线上的起始信号的发出,直至匹配地址成功。
4)主机从I2C总线上接收到应答信号后,将本次传输应答信号中的读写控制保存下来,接着将第二个地址信号发送到SDA总线上;第二个地址信号包括从机的后8位地址。
从机从SDA总线上的数据采样下来,将接收到的第二个地址信号与自身地址寄存器的后8位地址进行匹配;若匹配成功,则将应答信号通过I2C总线发送回主机,执行步骤5),若匹配失败,从机则不发送应答信号,进入到初始状态,等待下一次总线上的起始信号的发出,重复步骤3)-步骤4)直至匹配成功。
5)主机和从机根据第一个地址信号中的读写控制选择发送模式或者接收模式,进行通讯,执行数据的发送。
主机和从机的通讯具体为:从机选发送模式,从机等待DR寄存器的数据写入,当写入完成后将数据通过移位寄存器发送到SDA总线上;主机通过SDA总线接收数据并在接收到数据后发出应答信号;若主机控制SDA总线不再发送应答信号,则主机会产生非应答信号,从机不再发送数据,接着由主机发送停止信号,完成本次传输,从机等待下一次起始信号的发送。在进行通讯过程中,若从机地址未匹配成功,便将其总线繁忙标志位置1,等待监测到总线上产生停止信号后,将其置0,才可再次被寻址或当作主机进行通讯。
下面分别从I2C总线上的数据变化和主从机状态机状态跳转两个方面进行讲述。从图1的I2C通讯总线上可以看出,主机发送起始信号并发送满足时序要求的SCL时钟。主机通过I2C总线协议发送两次地址来完成对从机的寻址工作,建立起通讯后,接收来自从机的数据,当不需要接收数据时,不应答从机,并发出停止信号。在图2中,从机释放SCL总线的控制权由主机控制SCL时钟,并实时监测I2C总线上的起始信号和停止信号。起始信号发出后,从机监测到I2C总线上的起始信号,开始接收SDA总线上的地址数据,当匹配了主机发出的地址后,发送数据,等待主机应答,当主机非应答时,停止数据的传输。
当从机接收到主机发送的首地址是11110xx+(R/W)时,默认进入到10bit地址寻址模式,本次实例中说明的是10bit主机接收模式,故首地址发送第[0]位为1,表示主机需要通过I2C总线接收被寻址从机的数据。
主机将起始信号发送到总线上,发送完成后,主机将首地址发送到I2C总线上,从机接收到地址和自身地址做匹配,将10位地址的前两位做比较,若前两位地址匹配成功,则控制SDA总线,将发出回应主机的应答信号到I2C总线上,之后将数据的[0]位读写控制位进行存储,用以后续的状态机的跳转。
主机接收到应答信号后,将第二个地址信号(后8位地址)发送到总线上。从机从I2C总线上接收到第二个地址信号,与自身地址寄存器的后8位地址进行匹配。若匹配失败则不应答,从机将SDA总线拉高,并跳转到等待起始信号的状态;若匹配成功,则将应答信号通过I2C总线发送回主机,至此建立起主机和从机的通讯。
寻址环节结束后,从机会根据第一次发送数据的第[0]位的读写控制位去自动跳转到发送或者接收模式,此处从机应为发送模式。从机跳转到发送模式后,等待DR寄存器的数据写入,当写入完成后将数据通过移位寄存器发送到SDA总线上;主机选择应答或者不应答数据,应答将继续接收数据,不应答则由主机控制SDA总线发送停止信号,至此一个通讯结束。
图3和图4分别为主机状态转移图和从机状态转移图。主机状态转移图中,输入将START信号发送给主机,主机跳转到GEN_START,在此状态下,主机控制I2C总线产生起始信号;起始信号产生后输入第一个地址数据到DR寄存器,DR寄存器将数据发送给移位寄存器,由移位寄存器将数据发送到I2C总线上,主机状态跳转至ADDR10_1ST将地址数据发送到总线上,并将第[0]位读写控制位进行存储;地址发送完成,等待从机的ACK应答信号,在接收到应答信号之后,主机状态机跳转到ADDR10_2ST状态将地址数据发送到总线上,等待输入第二个地址数据;输入第二个地址数据后,再由DR寄存器发送给移位寄存器,通过移位寄存器将数据发送到I2C总线上,等待从机地址匹配的应答信号;接收到应答信号后,根据第一个字节发送的读写控制位将状态机跳转到接收或者发送状态,在本实施例中,状态机跳转到RX_DATA状态等待从机通过I2C总线发送数据;数据传输完成后,输入关闭主机的应答使能,导致最后一个数据不应答,主机跳转到GEN_STOP状态并发送停止信号,结束本次传输;停止信号产生后,主机状态进入到IDLE初始状态,等待下一次的传输。
在本实施例中,如图4中所示,从机使能打开时一直监测总线上的起始信号。当监测到起始信号后,状态机跳转到接收第一地址状态RX_1ST,接收第一个地址信号,接收完成后与自身地址做比较,若监测到数据为11110xxx时,则从机会自动进入到10bit寻址模式,将数据中的数据位和自身10bit地址的前两位做比较;若匹配失败,则返回IDLE初始状态;若匹配成功,则返回应答信号,状态机跳转到RX10_2ST_ADDR,并将数据的读请求保存下来;接下来从机会接收第二个字节地址数据,将从I2C总线接收的地址和自身地址进行对比,若匹配失败则返回IDLE状态;若匹配成功,则回应应答信号,在此实施例中,从机跳转TX_DATA状态,开始发送数据;数据传输完成后,从机未收到主机的应答信号,从机跳转到IDLE状态,等待下一次起始信号的发送。
据上述所述,本发明提供的一种10bit通讯寻址模式,在主机接收的情况下,本发明通过对主从机之间寻址过程中减少一个字节的发送和减少一个起始信号的产生,将寻址协议变得更加简单和高效。通过本发明,让设计人员减少了I2C的模块在主机从机的状态机的状态数量和跳转条件;在验证方面减少了再起始信号的配置,方便了验证。
Claims (5)
1.一种10bit寻址模式下的I2C总线传输方法,其特征在于,包括以下步骤:
1)主机选择10bit寻址模式;
2)主机发送满足时序要求的SCL时钟;
从机释放SCL总线的控制权并由主机控制其SCL时钟总线,从机实时监测I2C总线上的起始信号和停止信号;
3)主机接收到开始传输的信号后,在I2C总线上产生起始信号,发送第一个地址信号到DR寄存器;所述第一个地址信号依次包括五位帧头、两位地址和一位读写控制;其中,地址为从机地址的前两位xx,读写控制为R/W;
从机监测到起始信号后,接收第一个地址信号,若第一个地址信号为帧头+xxx,从机进入到10bit寻址模式;从机再将第一个地址信号中的地址和自身10bit地址的前两位进行匹配,若匹配成功,则返回应答信号,并将第一个地址信号中的读写控制保存;若匹配失败,从机进入到初始状态,等待下一次总线上的起始信号的发出,直至匹配地址成功;
4)主机接收到应答信号后,将应答信号中的读写控制保存,将第二个地址信号发送到总线上;所述第二个地址信号包括从机的后8位地址;
从机从I2C总线上接收到第二个地址信号,与自身地址寄存器的后8位地址进行匹配;若匹配成功,则将应答信号通过I2C总线发送回主机,执行步骤5),若匹配失败,从机进入到初始状态,等待下一次总线上的起始信号的发出,重复步骤3)-步骤4)直至匹配成功;
5)主机和从机根据第一个地址信号中的读写控制选择发送模式或者接收模式,进行通讯。
2.根据权利要求1所述的一种10bit寻址模式下的I2C总线传输方法,其特征在于:
步骤5)中,进行通讯过程中,若从机地址未匹配成功,将其总线繁忙标志位置1,等待监测到总线上产生停止信号后,将其总线繁忙标志位置0。
3.根据权利要求1或2所述的一种10bit寻址模式下的I2C总线传输方法,其特征在于:
步骤5)中,所述主机和从机的通讯具体为:从机选发送模式,从机等待DR寄存器的数据写入,当写入完成后将数据通过移位寄存器发送到SDA总线上;主机通过SDA总线接收数据并在接收到数据后发出应答信号;若主机控制SDA总线不再发送应答信号,则主机产生非应答信号,从机不再发送数据,接着由主机发送停止信号,完成本次传输,从机等待下一次起始信号的发送。
4.根据权利要求3所述的一种10bit寻址模式下的I2C总线传输方法,其特征在于:
步骤3)中,所述帧头为11110。
5.根据权利要求4所述的一种10bit寻址模式下的I2C总线传输方法,其特征在于:
所述R/W为1时表示为主机接收模式,R/W为0时表示为主机发送模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310644277.7A CN116775537A (zh) | 2023-06-01 | 2023-06-01 | 一种10bit寻址模式下的I2C总线传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310644277.7A CN116775537A (zh) | 2023-06-01 | 2023-06-01 | 一种10bit寻址模式下的I2C总线传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775537A true CN116775537A (zh) | 2023-09-19 |
Family
ID=88012539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310644277.7A Pending CN116775537A (zh) | 2023-06-01 | 2023-06-01 | 一种10bit寻址模式下的I2C总线传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775537A (zh) |
-
2023
- 2023-06-01 CN CN202310644277.7A patent/CN116775537A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0319740B2 (zh) | ||
US20060277339A1 (en) | Communication apparatus, switching method, and switching program | |
US6763413B2 (en) | Method for the serial transfer of data between two electronic bus stations and bus station for use in said method | |
CN115033515A (zh) | 一种主从spi通信方法 | |
CN113259205B (zh) | 一种多板卡系统内部互联接口测试方法及系统 | |
CN116775537A (zh) | 一种10bit寻址模式下的I2C总线传输方法 | |
JP4737049B2 (ja) | 通信システム及び電子制御装置 | |
CN112925684B (zh) | 建链逻辑的测试方法及相关设备 | |
US6349389B1 (en) | Communication control system and apparatus | |
JP3459075B2 (ja) | 同期式シリアルバス方式 | |
JP2009130684A (ja) | 制御信号通信方法、光トランシーバ装置 | |
CN114598566A (zh) | 一种基于spi总线的通信系统及方法 | |
KR100295683B1 (ko) | 인터아이씨의 제너럴콜 어크날리지장치및 방법 | |
US11360916B2 (en) | Group slave identifier time-multiplexed acknowledgment for system power management interface | |
CN112506839B (zh) | 一种一对多spi总线切换方法及装置 | |
EP1128272B1 (en) | Method for the serial transfer of data between two electronic bus stations and bus station for use in said method | |
CN117201222A (zh) | I2c接口系统、数据写入方法以及数据读取方法 | |
CN117290274A (zh) | 一种基于i2c从设备的i2c接口系统及数据读写方法 | |
CN117632833A (zh) | 一种接口系统及远端i2c从设备数据写入方法 | |
Yuxin | I2C data transfer program design and communication protocol improvement | |
JP2022091456A (ja) | 非同期型通信システム、マスタ制御装置及びスレーブ制御装置 | |
CN117033292A (zh) | 基于apb总线控制的i2c中断方法 | |
CN115766332A (zh) | 串行通信装置、串行通信系统及串行通信方法 | |
CN114500153A (zh) | 一种lin控制器设计及其运行方法 | |
CN116467243A (zh) | 基于i2c协议的通信方法、设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |