CN105786753A - 一种i2c总线上的主从设备间的传输数据的方法及设备 - Google Patents

一种i2c总线上的主从设备间的传输数据的方法及设备 Download PDF

Info

Publication number
CN105786753A
CN105786753A CN201610096123.9A CN201610096123A CN105786753A CN 105786753 A CN105786753 A CN 105786753A CN 201610096123 A CN201610096123 A CN 201610096123A CN 105786753 A CN105786753 A CN 105786753A
Authority
CN
China
Prior art keywords
equipment
data
transmitted
submodule
address
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
Application number
CN201610096123.9A
Other languages
English (en)
Inventor
吴夕周
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Feixun Data Communication Technology Co Ltd
Original Assignee
Shanghai Feixun Data Communication Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201610096123.9A priority Critical patent/CN105786753A/zh
Publication of CN105786753A publication Critical patent/CN105786753A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0016Inter-integrated circuit (I2C)

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总线上的主从设备间的传输数据的方法及设备,包括:主设备向I2C总线发送标识开始传输数据的起始位;主设备向I2C总线发送待传输数据的从设备地址及地址校验码;主设备向I2C总线发送待传输数据的读/或写命令;从设备由I2C总线接收起始位、从设备地址及地址校验码、以及读/或写命令;从设备根据地址校验码验证接收到的从设备地址是否正确;当接收到的从设备地址验证正确时,从设备判断接收到的从设备地址是否与该设备的地址相符;当该从设备的地址与接收到的从设备地址相符时,从设备向主设备发送“准备就绪”响应命令;主从设备间通过I2C总线传输待传输数据;主设备向从设备发送标识结束传输数据的停止位;传输结束。

Description

一种I2C总线上的主从设备间的传输数据的方法及设备
技术领域
本发明涉及通信领域,特别是涉及一种I2C总线上的主从设备间的传输数据的方法及设备。
背景技术
I2C通信接口,由于其物理接口和协议具有简洁,灵活,可扩展的特性,所以在各种设备中大量使用,用来传输数据或者命令控制。
I2C的外部物理接口采用两根逻辑信号线,一根传输数据(SDA),一根传输时钟(SCL),通过协议实现多个设备间的通信。在发起通讯时,两个设备一个为I2C主设备,另一个为I2C从设备,I2C主设备发起通信,此时时钟(SCL)由主设备发出,数据(SDA)为双向控制信号,其根据协议由主设备和从设备分时控制。现有技术在I2C协议传输上无校验位,故一旦传输中数据或者从设备地址发送出错,就会导致出现错误的通讯,而系统无法得知数据传输出错,这将给系统的可靠性带来严重的隐患。
为此在数据通讯过程中,需要提供一种方法来解决以上的问题。
发明内容
本发明的目的在于在I2C通讯底层加入校验位,从而提高系统的可靠性;本发明提供的技术方案如下:
一种I2C总线上的主从设备间的传输数据的方法,包括:
步骤S100主设备向I2C总线发送标识开始传输数据的起始位;
步骤S200主设备向I2C总线发送待传输数据的从设备地址及地址校验码,其中地址校验码由从设备地址计算得到,所述地址校验码占用所述从设备地址的最高位;
步骤S300主设备向I2C总线发送所述待传输数据的读/或写命令;
步骤S400从设备由I2C总线接收所述起始位、从设备地址及地址校验码、以及读/或写命令;
步骤S500从设备根据所述地址校验码验证接收到的从设备地址是否正确;
步骤S610当接收到的从设备地址验证正确时,从设备判断所述接收到的从设备地址是否与该设备的地址相符;
步骤S700当该从设备的地址与所述接收到的从设备地址相符时,从设备发送、主设备接收“准备就绪”响应命令;
步骤S800主从设备间通过I2C总线传输所述待传输数据;
步骤S900主设备发送、从设备接收标识结束传输数据的停止位;此次传输结束。
进一步,在步骤S900之前,还包括步骤:步骤S850当出现错误时,主设备上报错误。
进一步,还包括步骤:步骤S620当接收到的从设备地址验证错误时,从设备发送、主设备接收“准备失败”响应命令;而后主设备执行步骤S850。
进一步,所述步骤S800还包括:步骤S843当待传输数据传输失败时,接收设备发送、发送设备接收“传输失败”响应命令;而后主设备执行步骤S850。
进一步,所述步骤S800还包括:
步骤S810发送设备向I2C总线发送待传输数据及数据校验码,其中数据校验码由待传输数据计算得到,所述数据校验码占用所述待传输数据的最高位;
步骤S820接收设备由I2C总线接收所述待传输数据及数据校验码;
步骤S830接收设备根据所述数据校验码验证接收到的待传输数据是否正确;
步骤S841当接收到的待传输数据验证正确时,接收设备发送、发送设备接收“传输完成”响应命令。
进一步,还包括:步骤S842当接收到的待传输数据验证错误时,接收设备发送、发送设备接收“传输错误”响应命令;而后主设备执行步骤S850。
进一步,当所述步骤S300中,主设备发送读命令时,所述步骤S810~S843中,所述“发送设备”为所述从设备,所述“接收设备”为所述主设备;
当所述步骤S300中,主设备发送写命令时,所述步骤S810~S843中,所述“发送设备”为所述主设备,所述“接收设备”为所述从设备。
本发明还提供了一种I2C总线上的数据传输设备,包括:
发送模块,用于主设备向I2C总线发送标识开始传输数据的起始位、待传输数据的从设备地址及地址校验码、待传输数据的读/或写命令;还用于从设备发送“准备就绪”响应命令;还用于主从设备间通过I2C总线发送所述待传输数据;还用于主设备发送标识结束传输数据的停止位;
接收模块,用于从设备由I2C总线接收所述起始位、从设备地址及地址校验码、以及读/或写命令;还用于主设备接收“准备就绪”响应命令;还用于主从设备间通过I2C总线接收所述待传输数据;还用于从设备接收标识结束传输数据的停止位;
校验模块,用于从设备根据所述地址校验码验证接收到的从设备地址是否正确;其中地址校验码由从设备地址计算得到,所述地址校验码占用所述从设备地址的最高位;
控制模块,与所述发送模块、与所述接收模块、与所述校验模块电连接,用于控制所述主设备的发送子模块向I2C总线发送标识开始传输数据的起始位,通知I2C总线上的所有从设备的接收子模块;控制所述从设备的接收子模块接收所述主设备发送子模块发送的待传输数据的从设备地址及地址校验码;所述控制模块决定主设备发送子模块利用I2C总线向从设备接收子模块发送所述待传输数据的读/或写命令;控制主设备进行寻址,所述验证模块用于根据所述从设备接收子模块接收到的所述地址校验码验证接收到的所述从设备地址是否正确,当正确时,所述控制模块再次判断所述接收到的从设备地址与所述从设备的地址相符时,控制所述响应模块由所述从设备向所述主设备发送“准备就绪”命令,控制所述发送子模块与所述接收子模块之间通过I2C总线传输所述待传输数据,当数据传输结束后所述控制模块控制所述响应模块向所述从设备接收子模块发送传输数据的停止位。
进一步,所述校验模块,还用于所述接收子模块根据所述地址校验码验证接收到的所述待传输数据是否正确;其中数据校验码由待传输数据计算得到,所述数据校验码占用所述待传输数据的最高位;
进一步还包括,当主设备写数据时,所述控制模块控制所述主设备发送子模块向所述从设备接收子模块发送待传输数据及数据校验码,所述校验模块根据所述从设备接收子模块接收到的所述数据校验码验证所述从设备接收子模块收到的所述待传输数据正确时,所述控制模块控制所述响应模块向所述主设备接收子模块发送“传输完成”响应命令;
和/或,
当主设备读数据时,所述控制模块控制所述从设备发送子模块向所述主设备接收子模块发送待传输数据及数据校验码,所述校验模块根据所述主设备接收子模块接收到的所述数据校验码验证所述主设备接收子模块收到的所述待传输数据正确时,所述控制模块控制所述响应模块向所述从设备接收子模块发送“传输完成”响应命令;
进一步包括,当所述发送模块发送的数据发生错误、和/或数据传输失败、和/或所述接收子模块接收到的从设备地址验证错误时,所述控制模块控制所述主设备发送子模块发送模块“上报错误”。
通过本发明一种I2C总线上的主从设备间的传输数据的方法及传输设备能够带来以下至少一种有益效果:
1.增加了误码检测功能,接收和发送方都能知悉通信过程中是否出现误码,提高了系统可靠性;
2.发送数据方在发送完一个字节后即能获悉数据传输是否出现误码,实时性高;
3.一旦数据传输出错,使得通讯双方能知道通讯出现误码,由上层软件的安全机制校正此错误,增加数据的传输速率,使数据传输更加准确,可靠性。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种I2C总线上的主从设备间的传输数据的方法及设备的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明一种I2C总线上的主从设备间的传输数据的方法步骤图;
图2是本发明一种I2C总线上的主从设备间的传输数据的方法流程图;
图3是本发明一种I2C总线上的数据传输设备的组成结构示意图;
图4是本发明本发明I2C主设备写操作逻辑流程图;
图5是本发明本发明I2C主设备读操作逻辑流程图;
图6是本发明I2C从设备操作逻辑流程图。
附图标号说明:
1.控制模块,2.发送模块,3.接收模块,4.校验模块。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
参考图1,一种I2C总线上的主从设备间的传输数据的方法,包括:
步骤S100主设备向I2C总线发送标识开始传输数据的起始位;
步骤S200主设备向I2C总线发送待传输数据的从设备地址及地址校验码,其中地址校验码由从设备地址计算得到,地址校验码占用从设备地址的最高位;
步骤S300主设备向I2C总线发送待传输数据的读/或写命令;
步骤S400从设备由I2C总线接收起始位、从设备地址及地址校验码、以及读/或写命令;
步骤S500从设备根据地址校验码验证接收到的从设备地址是否正确;
步骤S610当接收到的从设备地址验证正确时,从设备判断接收到的从设备地址是否与该设备的地址相符;
步骤S700当该从设备的地址与接收到的从设备地址相符时,从设备发送、主设备接收“准备就绪”响应命令;
步骤S800主从设备间通过I2C总线传输待传输数据;
步骤S900主设备发送、从设备接收标识结束传输数据的停止位;此次传输结束。
具体的,本发明是基于I2C协议的通信,它包括主设备和从设备,读操作和写操作组成,每次通信都由I2C主设备发起和结束,故共有3种逻辑状态机:主设备的写操作,主设备的读操作,从设备的读写操作。起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号
在本实施例中,本发明不改变原协议架构,将每次传输的8bit有效数据变为7bit,另1bit用于奇偶校验,在数据发送端添加校验码填充模块,在数据发送端校验码检测模块,达到检测误码的目的。从以上实例可以知道,本发明最多可支持64个设备,最大可支持128条指令集。”
发送设备每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。如果接收器是主设备,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P,表示此次传输结束。在发送的地址与数据中都有验证码,验证地址与数据的正确性,同时还包括接收读写的命令,一般写命令为“0”,读命令为“1”。
参考图2,本发明还提供一种I2C总线上的主从设备间的传输数据的方法;
优选的,在步骤S900之前,还包括步骤:步骤S850当出现错误时,主设备上报错误。
优选的,还包括步骤:步骤S620当接收到的从设备地址验证错误时,从设备发送、主设备接收“准备失败”响应命令;而后主设备执行步骤S850。
优选的,步骤S800还包括:步骤S843当待传输数据传输失败时,接收设备发送、发送设备接收“传输失败”响应命令;而后主设备执行步骤S850。
具体的,本发明在I2C总线数据传输过程中,当数据传输发生异常时,发送方会以预先设定的协议进行“错误上报”。方便工作人员对程序的排查,以及相应的硬件系统的检测。
参考图2,本发明还提供一种I2C总线上的主从设备间的传输数据的方法,包括
步骤S100主设备向I2C总线发送标识开始传输数据的起始位;
步骤S200主设备向I2C总线发送待传输数据的从设备地址及地址校验码,其中地址校验码由从设备地址计算得到,地址校验码占用从设备地址的最高位;
步骤S300主设备向I2C总线发送待传输数据的读/或写命令;
步骤S400从设备由I2C总线接收起始位、从设备地址及地址校验码、以及读/或写命令;
步骤S500从设备根据地址校验码验证接收到的从设备地址是否正确;
步骤S610当接收到的从设备地址验证正确时,从设备判断接收到的从设备地址是否与该设备的地址相符;
步骤S620当接收到的从设备地址验证错误时,从设备发送、主设备接收“准备失败”响应命令;而后主设备执行步骤S850;
步骤S700当该从设备的地址与接收到的从设备地址相符时,从设备发送、主设备接收“准备就绪”响应命令;
步骤S800主从设备间通过I2C总线传输待传输数据;
步骤S810发送设备向I2C总线发送待传输数据及数据校验码,其中数据校验码由待传输数据计算得到,数据校验码占用待传输数据的最高位;
步骤S820接收设备由I2C总线接收待传输数据及数据校验码;
步骤S830接收设备根据数据校验码验证接收到的待传输数据是否正确;
步骤S841当接收到的待传输数据验证正确时,接收设备发送、发送设备接收“传输完成”响应命令;
步骤S842当接收到的待传输数据验证错误时,接收设备发送、发送设备接收“传输错误”响应命令;而后主设备执行步骤S850。
步骤S843当待传输数据传输失败时,接收设备发送、发送设备接收“传输失败”响应命令;而后主设备执行步骤S850;
步骤S850当出现错误时,主设备上报错误;
步骤S900主设备发送、从设备接收标识结束传输数据的停止位;此次传输结束。
具体的,在本实施例中,I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。数据传输是串行8位双向传输;在本发明中,8位的最高位用来生成验证码,检验此次传输数据的有有效性,而后7位为待传输的数据。接收设备收到数据首先根据验证码验证数据的有效性,当正确时,才发送“传输完成”响应指令。通过增加校验位加强了数据传输的正确性。
具体的,当主设备需要读取从设备中的数据时,参考图2,
步骤S810从设备向I2C总线发送待传输数据及数据校验码,其中数据校验码由待传输数据计算得到,数据校验码占用待传输数据的最高位;
步骤S820主设备由I2C总线接收待传输数据及数据校验码;
步骤S830主设备根据数据校验码验证接收到的待传输数据是否正确;
步骤S841当接收到的待传输数据验证正确时,主设备发送、从设备接收“传输完成”响应命令;
步骤S842当接收到的待传输数据验证错误时,主设备发送、从设备接收“传输错误”响应命令;而后主设备执行步骤S850。
步骤S843当待传输数据传输失败时,主设备发送、从设备接收“传输失败”响应命令;而后主设备执行步骤S850;
当主设备需要向从设备写数据时,参考图2,
步骤S810主设备向I2C总线发送待传输数据及数据校验码,其中数据校验码由待传输数据计算得到,数据校验码占用待传输数据的最高位;
步骤S820从设备由I2C总线接收待传输数据及数据校验码;
步骤S830从设备根据数据校验码验证接收到的待传输数据是否正确;
步骤S841当接收到的待传输数据验证正确时,从设备发送、主设备接收“传输完成”响应命令;
步骤S842当接收到的待传输数据验证错误时,从设备发送、主设备接收“传输错误”响应命令;而后主设备执行步骤S850。
步骤S843当待传输数据传输失败时,从设备发送、主设备接收“传输失败”响应命令;而后主设备执行步骤S850;
从以上具体实例中可以看出,当步骤S300中,主设备发送读命令时,步骤S810~S843中,“发送设备”为从设备,“接收设备”为主设备;
当步骤S300中,主设备发送写命令时,步骤S810~S843中,“发送设备”为主设备,“接收设备”为从设备。
具体的,本发明中在I2C总线上数据传输过程中,主从设备可以相互配置,根据具体的实时情况,主从设备不是固定不变的,主设备上可以挂接多个从设备,但再一次数据传输过程中只有一个主设备。
参考图3,本发明还提供了一种I2C总线上的数据传输设备,包括:
发送模块2,用于主设备向I2C总线发送标识开始传输数据的起始位、待传输数据的从设备地址及地址校验码、待传输数据的读/或写命令;还用于从设备发送“准备就绪”响应命令;还用于主从设备间通过I2C总线发送待传输数据;还用于主设备发送标识结束传输数据的停止位;
接收模块3,用于从设备由I2C总线接收起始位、从设备地址及地址校验码、以及读/或写命令;还用于主设备接收“准备就绪”响应命令;还用于主从设备间通过I2C总线接收待传输数据;还用于从设备接收标识结束传输数据的停止位;
校验模块4,用于从设备根据地址校验码验证接收到的从设备地址是否正确;其中地址校验码由从设备地址计算得到,地址校验码占用从设备地址的最高位;
控制模块1,与发送模块2、与接收模块3、与校验模块4电连接,用于控制主设备的发送子模块向I2C总线发送标识开始传输数据的起始位,通知I2C总线上的所有从设备的接收子模块;控制从设备的接收子模块接收主设备发送子模块2发送的待传输数据的从设备地址及地址校验码;控制模块1决定主设备发送子模块利用I2C总线向从设备接收子模块发送待传输数据的读/或写命令;控制主设备进行寻址,验证模块用于根据从设备接收子模块3接收到的地址校验码验证接收到的从设备地址是否正确,当正确时,控制模块1再次判断接收到的从设备地址与从设备的地址相符时,控制响应模块由从设备向主设备发送“准备就绪”命令,控制发送子模块与接收子模块之间通过I2C总线传输待传输数据,当数据传输结束后控制模块控制响应模块向从设备接收子模块发送传输数据的停止位。
优选的,校验模块4,还用于接收子模块根据地址校验码验证接收到的待传输数据是否正确;其中数据校验码由待传输数据计算得到,数据校验码占用待传输数据的最高位;
优选的,还包括,当主设备写数据时,控制模块1控制主设备发送子模块向从设备接收子模块发送待传输数据及数据校验码,校验模块4根据从设备接收子模块接收到的数据校验码验证从设备接收子模块收到的待传输数据正确时,控制模块1控制响应模块向主设备接收子模块发送“传输完成”响应命令;
和/或,
当主设备读数据时,控制模块1控制从设备发送子模块向主设备接收子模块发送待传输数据及数据校验码,校验模块4根据主设备接收子模块接收到的数据校验码验证主设备接收子模块收到的待传输数据正确时,控制模块控制响应模块向从设备接收子模块发送“传输完成”响应命令;
优选的,还包括,当发送子模块发送的数据发生错误、和/或数据传输失败、和/或接收子模块接收到的从设备地址验证错误时,控制模块控制主设备发送子模块发送模块“上报错误”。
具体的,在本发明数据传输设备的实施例中,总线上的所有通信都是由主设备引发的。在一次通信中,主设备与从设备总是在扮演着两种不同的角色。
1.主设备向从设备发送数据:
主设备发送起始位,这会通知总线上的所有设备传输开始了,接下来主机发送设备地址,与这一地址匹配的从设备将继续这一传输过程,而其它从设备将会忽略接下来的传输并等待下一次传输的开始。主设备寻址到从设备后,发送它所要读取或写入的从设备的内部寄存器地址;之后,发送数据。数据发送完毕后,发送停止位:
写入过程如下:
发送起始位;
发送从设备的地址和读/写选择位,包括从设备地址以及地址效验码,用于验证主设备发送的验证码是否有效;
释放总线,等到EEPROM拉低总线进行应答;
如果EEPROM接收成功,则进行应答;若没有握手成功或者发送的数据错误时EEPROM不产生应答,此时要求重发或者终止。
发送想要写入的内部寄存器地址;EEPROM对其发出应答;
发送数据;发送的数据固定是8位,其中最高位则为待传输数据的效验码,其余的七位才是待传输的数据。
发送停止位。
EEPROM收到停止信号后,进入到一个内部的写入周期,大概需要10ms,此间任何操作都不会被EEPROM响应;
需要说明的是:主设备通过发送地址码与对应的从设备建立了通信关系,而挂接在总线上的其它从设备虽然同时也收到了地址码,但因为与其自身的地址不相符合,因此提前退出与主设备的通信。
2.主设备读取数据的过程:
读的过程比较复杂,在从设备读出数据前,你必须先要告诉它哪个内部寄存器是你想要读取的,因此必须先对其进行写入:
发送起始位;
发送从设备地址+地址效验码;
发送内部寄存器地址;
重新发送起始位;
重新发送从设备地址+地址效验码;
读取数据;
主机接收器在接收到最后一个字节后,也不会发出ACK信号。于是,从机发送器释放SDA线,以允许主机发出P信号结束传输;
发送停止位。
I2C总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
在本发明中,与现有技术相比,不改变原协议架构,将每次传输的8bit有效数据变为7bit,另1bit用于奇偶校验,在数据发送端添加校验码填充模块,在数据发送端校验码检测模块,7bit地址位,另1bit用于校验地址的正确性,达到检测误码的,数据传输过程中传送目的错误,用双重的保障增加数据传输的可靠性。在地址字节以及数据字节上增加的了检验环节,I2C协议的特点是协议传输采用固定的8bit传输为基本单元,每传输8bit即由接收方回复一个响应信息;此时发送方在数据信号(SDA)上检测到响应信号为逻辑‘0’表示接收方接收完毕,如为逻辑‘1’则表示接收方未接收。
本发明利用此特性,将8bit基本单元的第一位用作校验位,校验法采用奇偶校验法用于校验后七位数据的发送正确与否;接收方接收到此8bit后先校验其是否正确,如果发现错误,则回复响应信号‘1’告知发送方,发送方检测到逻辑‘1’则知道此次发送失败。
本发明是基于I2C协议的通信,它包括主设备和从设备,读操作和写操作组成,每次通信都由I2C主设备发起和结束,故共有3种逻辑状态机:主设备的写操作,主设备的读操作,从设备的读写操作,下面使用逻辑流程图来描述此3种逻辑流程。参考图4I2C主设备写操作逻辑流程图、图5I2C主设备读操作逻辑流程图、图6I2C从设备操作逻辑流程图。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种I2C总线上的主从设备间的传输数据的方法,其特征在于,包括:
步骤S100:主设备向I2C总线发送标识开始传输数据的起始位;
步骤S200:主设备向I2C总线发送待传输数据的从设备地址及地址校验码,其中地址校验码由从设备地址计算得到,所述地址校验码占用所述从设备地址的最高位;
步骤S300:主设备向I2C总线发送所述待传输数据的读/或写命令;
步骤S400:从设备由I2C总线接收所述起始位、从设备地址及地址校验码、以及读/或写命令;
步骤S500:从设备根据所述地址校验码验证接收到的从设备地址是否正确;
步骤S610:当接收到的从设备地址验证正确时,从设备判断所述接收到的从设备地址是否与该设备的地址相符;
步骤S700:当该从设备的地址与所述接收到的从设备地址相符时,从设备发送、主设备接收“准备就绪”响应命令;
步骤S800:主从设备间通过I2C总线传输所述待传输数据;
步骤S900:主设备发送、从设备接收标识结束传输数据的停止位;此次传输结束。
2.如权利要求1所述传输数据的方法,其特征在于,在所述步骤S900之前,还包括步骤:步骤S850:当出现错误时,主设备上报错误。
3.如权利要求2所述传输数据的方法,其特征在于,还包括步骤:步骤S620:当接收到的从设备地址验证错误时,从设备发送、主设备接收“准备失败”响应命令;而后主设备执行步骤S850。
4.如权利要求3所述传输数据的方法,其特征在于,所述步骤S800还包括:步骤S843:当待传输数据传输失败时,接收设备发送、发送设备接收“传输失败”响应命令;而后主设备执行步骤S850。
5.如权利要求3所述传输数据的方法,其特征在于,所述步骤S800还包括:
步骤S810:发送设备向I2C总线发送待传输数据及数据校验码,其中数据校验码由待传输数据计算得到,所述数据校验码占用所述待传输数据的最高位;
步骤S820:接收设备由I2C总线接收所述待传输数据及数据校验码;
步骤S830:接收设备根据所述数据校验码验证接收到的待传输数据是否正确;
步骤S841:当接收到的待传输数据验证正确时,接收设备发送、发送设备接收“传输完成”响应命令。
6.如权利要求5所述传输数据的方法,其特征在于,还包括:步骤S842:当接收到的待传输数据验证错误时,接收设备发送、发送设备接收“传输错误”响应命令;而后主设备执行步骤S850。
7.如权利要求4-6任一所述传输数据的方法,其特征在于:
当所述步骤S300中,主设备发送读命令时,所述步骤S810~S843中,所述“发送设备”为所述从设备,所述“接收设备”为所述主设备;
当所述步骤S300中,主设备发送写命令时,所述步骤S810~S843中,所述“发送设备”为所述主设备,所述“接收设备”为所述从设备。
8.一种I2C总线上的数据传输设备,其特征在于,包括:
发送模块,用于主设备向I2C总线发送标识开始传输数据的起始位、待传输数据的从设备地址及地址校验码、待传输数据的读/或写命令;还用于从设备发送“准备就绪”响应命令;还用于主从设备间通过I2C总线发送所述待传输数据;还用于主设备发送标识结束传输数据的停止位;
接收模块,用于从设备由I2C总线接收所述起始位、从设备地址及地址校验码、以及读/或写命令;还用于主设备接收“准备就绪”响应命令;还用于主从设备间通过I2C总线接收所述待传输数据;还用于从设备接收标识结束传输数据的停止位;
校验模块,用于从设备根据所述地址校验码验证接收到的从设备地址是否正确;其中地址校验码由从设备地址计算得到,所述地址校验码占用所述从设备地址的最高位;
控制模块,与所述发送模块、与所述接收模块、与所述校验模块电连接,用于控制所述主设备的发送子模块向I2C总线发送标识开始传输数据的起始位,通知I2C总线上的所有从设备的接收模块;控制所述从设备的接收子模块接收所述主设备发送子模块发送的待传输数据的从设备地址及地址校验码;所述控制模块决定主设备发送子模块利用I2C总线向从设备接收子模块发送所述待传输数据的读/或写命令;控制主设备进行寻址,所述验证模块用于根据所述从设备接收子模块接收到的所述地址校验码验证接收到的所述从设备地址是否正确,当正确时,所述控制模块再次判断所述接收到的从设备地址与所述从设备的地址相符时,控制所述响应模块由所述从设备向所述主设备发送“准备就绪”命令;
控制发送子模块与接收子模块之间通过I2C总线传输所述待传输数据,当数据传输结束后所述控制模块控制所述响应模块向所述从设备接收子模块发送传输数据的停止位;
其中,所述发送子模块包括主设备发送子模块及从设备发送子模块,所述接收子模块包括主设备接收子模块及从设备接收子模块。
9.如权利要求8所述数据传输设备,其特征在于:
所述校验模块,还用于所述接收模块根据所述地址校验码验证接收到的所述待传输数据是否正确;其中数据校验码由待传输数据计算得到,所述数据校验码占用所述待传输数据的最高位;
进一步还包括,当主设备写数据时,所述控制模块控制所述主设备发送子模块向所述从设备接收子模块发送待传输数据及数据校验码,所述校验模块根据所述从设备接收子模块接收到的所述数据校验码验证所述从设备接收子模块收到的所述待传输数据正确时,所述控制模块控制所述响应模块向所述主设备接收子模块发送“传输完成”响应命令;
和/或,
当主设备读数据时,所述控制模块控制所述从设备发送子模块向所述主设备接收子模块发送待传输数据及数据校验码,所述校验模块根据所述主设备接收子模块接收到的所述数据校验码验证所述主设备接收子模块收到的所述待传输数据正确时,所述控制模块控制所述响应模块向所述从设备接收子模块发送“传输完成”响应命令。
10.如权利要求8-9任一所述数据传输设备,其特征在于:
进一步包括,当所述发送子模块发送的数据发生错误、和/或数据传输失败、和/或所述接收子模块接收到的从设备地址验证错误时,所述控制模块控制所述主设备发送子模块发送模块“上报错误”。
CN201610096123.9A 2016-02-22 2016-02-22 一种i2c总线上的主从设备间的传输数据的方法及设备 Pending CN105786753A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610096123.9A CN105786753A (zh) 2016-02-22 2016-02-22 一种i2c总线上的主从设备间的传输数据的方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610096123.9A CN105786753A (zh) 2016-02-22 2016-02-22 一种i2c总线上的主从设备间的传输数据的方法及设备

Publications (1)

Publication Number Publication Date
CN105786753A true CN105786753A (zh) 2016-07-20

Family

ID=56403459

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610096123.9A Pending CN105786753A (zh) 2016-02-22 2016-02-22 一种i2c总线上的主从设备间的传输数据的方法及设备

Country Status (1)

Country Link
CN (1) CN105786753A (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106681953A (zh) * 2016-12-09 2017-05-17 杰发科技(合肥)有限公司 使用i2c总线与主机连接的从机及其通信方法
CN109039329A (zh) * 2017-06-12 2018-12-18 株式会社村田制作所 转发装置以及控制系统
CN109471814A (zh) * 2018-10-31 2019-03-15 龙迅半导体(合肥)股份有限公司 一种数据传输的方法、装置及主控制端
CN110209622A (zh) * 2019-05-14 2019-09-06 大连理工大学 一种通过串口传输多组信息的通讯方法与系统
CN110704878A (zh) * 2019-09-26 2020-01-17 北京计算机技术及应用研究所 一种安全计算机防拆系统
CN111083447A (zh) * 2019-12-30 2020-04-28 中国电子科技集团公司第十一研究所 一种网络通信方法、装置和存储介质
CN112416841A (zh) * 2020-11-10 2021-02-26 光华临港工程应用技术研发(上海)有限公司 基于i2c总线的多机通信的实现方法及多机通信系统
CN112463662A (zh) * 2020-12-16 2021-03-09 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN112749384A (zh) * 2019-10-30 2021-05-04 盈甲医疗科技(北京)有限公司 一种设备接入方法及其加密接口电路
CN113010463A (zh) * 2019-12-20 2021-06-22 林德(中国)叉车有限公司 一种用于锂电池管理的iic通信方法及系统
CN113204763A (zh) * 2021-04-22 2021-08-03 山东英信计算机技术有限公司 一种cpld接收数据的方法、系统、存储介质及设备
CN113312286A (zh) * 2020-02-26 2021-08-27 北京君正集成电路股份有限公司 一种通过GPIO模拟i2c协议实现打印头温度检测的方法
CN113645322A (zh) * 2021-07-15 2021-11-12 大力电工襄阳股份有限公司 一种基于光纤串行通信的地址码识别方法、装置及其应用
CN115242351A (zh) * 2022-07-13 2022-10-25 厦门九华通信设备厂 一种串行数据通信速率自适应方法
CN116578521A (zh) * 2023-07-14 2023-08-11 深圳中安辰鸿技术有限公司 一种单总线通信方法、装置、系统及设备
CN117032579A (zh) * 2023-08-21 2023-11-10 上海合芯数字科技有限公司 一种从机启动方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101212582A (zh) * 2006-12-31 2008-07-02 深圳市同洲电子股份有限公司 数字卫星设备控制中的控制信号生成方法
CN101763333A (zh) * 2008-12-08 2010-06-30 北京谊安医疗系统股份有限公司 总线控制器及实现多主机通信的方法
US20110199207A1 (en) * 2010-02-17 2011-08-18 Sony Corporation Receiving apparatus, information processing method and program
CN102262572A (zh) * 2011-07-19 2011-11-30 浙江大学 一种带crc校验功能的iic总线接口控制器
CN102567132A (zh) * 2011-12-30 2012-07-11 记忆科技(深圳)有限公司 端对端芯片数据通路保护装置及其方法
CN203191972U (zh) * 2013-03-28 2013-09-11 深圳市有方科技有限公司 智能电子设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101212582A (zh) * 2006-12-31 2008-07-02 深圳市同洲电子股份有限公司 数字卫星设备控制中的控制信号生成方法
CN101763333A (zh) * 2008-12-08 2010-06-30 北京谊安医疗系统股份有限公司 总线控制器及实现多主机通信的方法
US20110199207A1 (en) * 2010-02-17 2011-08-18 Sony Corporation Receiving apparatus, information processing method and program
CN102262572A (zh) * 2011-07-19 2011-11-30 浙江大学 一种带crc校验功能的iic总线接口控制器
CN102567132A (zh) * 2011-12-30 2012-07-11 记忆科技(深圳)有限公司 端对端芯片数据通路保护装置及其方法
CN203191972U (zh) * 2013-03-28 2013-09-11 深圳市有方科技有限公司 智能电子设备

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10482047B2 (en) 2016-12-09 2019-11-19 Autochips Inc. Slave device connected to master device via I2C bus and communication method thereof
CN106681953B (zh) * 2016-12-09 2020-04-10 合肥杰发科技有限公司 使用i2c总线与主机连接的从机及其通信方法
CN106681953A (zh) * 2016-12-09 2017-05-17 杰发科技(合肥)有限公司 使用i2c总线与主机连接的从机及其通信方法
CN109039329A (zh) * 2017-06-12 2018-12-18 株式会社村田制作所 转发装置以及控制系统
CN109471814A (zh) * 2018-10-31 2019-03-15 龙迅半导体(合肥)股份有限公司 一种数据传输的方法、装置及主控制端
CN110209622A (zh) * 2019-05-14 2019-09-06 大连理工大学 一种通过串口传输多组信息的通讯方法与系统
CN110209622B (zh) * 2019-05-14 2022-09-06 大连理工大学 一种通过串口传输多组信息的通讯方法与系统
CN110704878A (zh) * 2019-09-26 2020-01-17 北京计算机技术及应用研究所 一种安全计算机防拆系统
CN110704878B (zh) * 2019-09-26 2021-03-02 北京计算机技术及应用研究所 一种安全计算机防拆系统
CN112749384A (zh) * 2019-10-30 2021-05-04 盈甲医疗科技(北京)有限公司 一种设备接入方法及其加密接口电路
CN113010463A (zh) * 2019-12-20 2021-06-22 林德(中国)叉车有限公司 一种用于锂电池管理的iic通信方法及系统
CN113010463B (zh) * 2019-12-20 2024-05-14 林德(中国)叉车有限公司 一种用于锂电池管理的iic通信方法及系统
CN111083447A (zh) * 2019-12-30 2020-04-28 中国电子科技集团公司第十一研究所 一种网络通信方法、装置和存储介质
CN111083447B (zh) * 2019-12-30 2024-04-19 中国电子科技集团公司第十一研究所 一种网络通信方法、装置和存储介质
CN113312286A (zh) * 2020-02-26 2021-08-27 北京君正集成电路股份有限公司 一种通过GPIO模拟i2c协议实现打印头温度检测的方法
CN112416841A (zh) * 2020-11-10 2021-02-26 光华临港工程应用技术研发(上海)有限公司 基于i2c总线的多机通信的实现方法及多机通信系统
CN112463662B (zh) * 2020-12-16 2024-04-05 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN112463662A (zh) * 2020-12-16 2021-03-09 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN113204763A (zh) * 2021-04-22 2021-08-03 山东英信计算机技术有限公司 一种cpld接收数据的方法、系统、存储介质及设备
CN113645322A (zh) * 2021-07-15 2021-11-12 大力电工襄阳股份有限公司 一种基于光纤串行通信的地址码识别方法、装置及其应用
CN113645322B (zh) * 2021-07-15 2023-06-20 大力电工襄阳股份有限公司 一种基于光纤串行通信的地址码识别方法、装置及其应用
CN115242351A (zh) * 2022-07-13 2022-10-25 厦门九华通信设备厂 一种串行数据通信速率自适应方法
CN115242351B (zh) * 2022-07-13 2024-02-13 厦门九华通信设备厂 一种串行数据通信速率自适应方法
CN116578521A (zh) * 2023-07-14 2023-08-11 深圳中安辰鸿技术有限公司 一种单总线通信方法、装置、系统及设备
CN117032579A (zh) * 2023-08-21 2023-11-10 上海合芯数字科技有限公司 一种从机启动方法、装置及存储介质
CN117032579B (zh) * 2023-08-21 2024-09-03 上海合芯数字科技有限公司 一种从机启动方法、装置及存储介质

Similar Documents

Publication Publication Date Title
CN105786753A (zh) 一种i2c总线上的主从设备间的传输数据的方法及设备
CN100366029C (zh) 通信控制器、主机端控制器、通信设备、通信系统和方法
US7650388B2 (en) Wireless identification protocol with confirmation of successful transmission
CN101876963B (zh) PCI.Express通信系统及其通信方法
US20070088874A1 (en) Offload engine as processor peripheral
CN107832250A (zh) 一种基于spi的主从通讯时序方法及可靠传输方法
KR20140045324A (ko) 직렬 인터페이스
CN105786639A (zh) 一种i2c总线数据的传输方法及系统
CN110990312A (zh) 一种用于随钻探测中的芯片级数据通信方法
CN108563595B (zh) 一种远距离传输usb数据的系统及方法
US20070226385A1 (en) Substitute SATA host for communicating with a SATA device
CN101150386A (zh) 用于改进通信错误的通信方法和使用所述方法的电子设备
CN112600787B (zh) 一种通信系统及通信方法
WO2017049557A1 (zh) 为适配器升级的方法、移动终端和适配器
CN107852275B (zh) 数据传输装置和数据传输方法、接收装置和接收方法
CN104298630B (zh) 基于串行外设接口的通信方法、装置和设备
CN108241586A (zh) 控制器电路与估计延迟补偿方法
CN115878534A (zh) 串行外设接口spi通信方法
CN114416622A (zh) 单总线通讯系统及方法
CN112579490A (zh) 一种可编程电子积木连接总线
US20210157764A1 (en) Data conversion device and data conversion system
CN104468031A (zh) 信号系统与车辆管理系统接口调试方法、信号系统
KR20140074685A (ko) 전자 태그 장치 및 그의 통신 방법
CN112987690B (zh) 一种espi控制器验证系统及方法
CN101290600A (zh) 串行通信方法及串行通信系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20160720