CN111078606A - 一种模拟i2c从机及其实现方法、终端设备和存储介质 - Google Patents
一种模拟i2c从机及其实现方法、终端设备和存储介质 Download PDFInfo
- Publication number
- CN111078606A CN111078606A CN201911127894.XA CN201911127894A CN111078606A CN 111078606 A CN111078606 A CN 111078606A CN 201911127894 A CN201911127894 A CN 201911127894A CN 111078606 A CN111078606 A CN 111078606A
- Authority
- CN
- China
- Prior art keywords
- data
- dma controller
- host
- transmission
- 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.)
- Granted
Links
Images
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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供了一种模拟I2C从机及其实现方法、终端设备和存储介质,其方法包括:上电后对硬件外设进行初始化设置;每当I2C主机发送数据时,通过计时器的输入捕获来触发DMA控制器传输I2C主机发送的数据;每当完成一个字节的数据传输后进入接收中断流程,并对每次传输过来的数据进行解析;根据解析结果进行数据有效性判断,并根据判断结果向I2C主机反馈对应的响应信息。本发明实现模拟I2C从机的同时,降低芯片的CPU资源占用,提升了数据传输的实时性,进而大大提高了通信速度。
Description
技术领域
本发明涉及通信技术领域,尤指一种模拟I2C从机及其实现方法、终端设备和存储介质。
背景技术
I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控I2C之间、I2C与I2C之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址。I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。
对于缺少硬件I2C或者硬件I2C已被使用的应用,使用IO模拟I2C主机比较简单,但对于使用IO模拟I2C从机则较为复杂。由于I2C主机发送数据在时间和长度上的不确定性,模拟I2C从机需要一直占用CPU资源去循环判断START信号和SCL线(时钟线)上的CLOCK。因此,如何提供一种不需要占用CPU资源,并且实时性较高、通信速度较快的模拟I2C从机是本领域技术人员亟需解决的问题。
发明内容
本发明的目的是提供一种模拟I2C从机及其实现方法、终端设备和存储介质,实现实现模拟I2C从机的同时,降低芯片的CPU资源占用,提升了数据传输的实时性,进而大大提高了通信速度。
本发明提供的技术方案如下:
本发明提供一种模拟I2C从机的实现方法,包括步骤:
上电后对硬件外设进行初始化设置;
每当I2C主机发送数据时,通过计时器的输入捕获来触发DMA控制器传输I2C主机发送的数据;
每当完成一个字节的数据传输后进入接收中断流程,并对每次传输过来的数据进行解析;
根据解析结果进行数据有效性判断,并根据判断结果向所述I2C主机反馈对应的响应信息。
进一步的,所述上电后对硬件外设进行初始化设置包括步骤:
配置控制线以及数据线对应的GPIO管脚为上拉输入模式;
配置所述控制线复用为具有输入捕获功能的计时器的传输通道,并设置所述计时器的输入捕获功能为上升沿触发;
配置所述计时器所触发使能的DMA控制器的工作参数;
其中,所述工作参数包括传输模式、传输方向、寄存器地址、传输数据位大小、传输方向。
进一步的,所述根据解析结果进行数据有效性判断,并根据判断结果向所述I2C主机反馈对应的响应信息:
当解析出通过所述DMA控制器传输过来的当前数据为地址数据时,判断所述地址数据是否与自身的预设地址相符,并当解析出所述数据为非地址数据时,判断自身内存空间是否满足储存所述数据;
若所述地址数据与自身的预设地址相符,或者自身内存空间满足储存所述数据,则确定通过所述DMA控制器传输过来的当前数据有效;
若所述地址数据与自身的预设地址不相符,或者自身内存空间不满足储存所述数据,则确定通过所述DMA控制器传输过来的当前数据无效;
若所述当前数据有效则向所述I2C主机反馈应答响应信息,并返回执行等待接收I2C主机通过DMA控制器传输过来的数据,直至所述I2C结束数据传输为止;
若所述当前数据无效向所述I2C主机反馈拒绝响应信息,结束数据传输。
进一步的,还包括步骤:
在所述I2C主机通过所述DMA控制器进行下一数据传输时,确定对所述DMA控制器传输过来的当前数据解析未完成时,将所述控制线对应的GPIO管脚从所述上拉输入模式切换为推挽输出模式,以拉低所述控制线使得所述I2C主机处于等待状态,直至所述当前数据解析完成为止。
本发明还提供一种模拟I2C从机,包括:
初始化模块,用于上电后对硬件外设进行初始化设置;
接收模块,用于每当I2C主机发送数据时,通过计时器的输入捕获来触发DMA控制器传输I2C主机发送的数据;
处理模块,用于每当完成一个字节的数据传输后进入接收中断流程,并对每次传输过来的数据进行解析;
控制模块,用于根据解析结果进行数据有效性判断,并根据判断结果向所述I2C主机反馈对应的响应信息。
进一步的,所述初始化模块包括:
GPIO管脚初始化单元,用于配置控制线以及数据线对应的GPIO管脚为上拉输入模式;
计时器初始化单元,用于配置所述控制线复用为具有输入捕获功能的计时器的传输通道,并设置所述计时器的输入捕获功能为上升沿触发;
DMA初始化单元,用于配置所述计时器所触发使能的DMA控制器的工作参数;
其中,所述工作参数包括传输模式、传输方向、寄存器地址、传输数据位大小、传输次数。
进一步的,所述控制模块包括:
数据有效性判断单元,用于当解析出通过所述DMA控制器传输过来的当前数据为地址数据时,判断所述地址数据是否与自身的预设地址相符,并当解析出所述数据为非地址数据时,判断自身内存空间是否满足储存所述数据;
结果输出单元,用于若所述地址数据与自身的预设地址相符,或者自身内存空间满足储存所述数据,则确定通过所述DMA控制器传输过来的当前数据有效;若所述地址数据与自身的预设地址不相符,或者自身内存空间不满足储存所述数据,则确定通过所述DMA控制器传输过来的当前数据无效;
响应执行单元,用于若所述当前数据有效则向所述I2C主机反馈应答响应信息,并返回执行等待接收I2C主机通过DMA控制器传输过来的数据,直至所述I2C结束数据传输为止;若所述当前数据无效向所述I2C主机反馈拒绝响应信息,结束数据传输。
进一步的,所述控制模块,还用于在所述I2C主机通过所述DMA控制器进行下一数据传输时,确定对所述DMA控制器传输过来的当前数据解析未完成时,将所述控制线对应的GPIO管脚从所述上拉输入模式切换为推挽输出模式,以拉低所述控制线使得所述I2C主机处于等待状态,直至所述当前数据解析完成为止。
本发明还提供一种终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器,用于执行所述存储器上所存放的计算机程序,实现如模拟I2C从机的实现方法所执行的操作。
本发明还提供一种存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如模拟I2C从机的实现方法所执行的操作。
通过本发明提供的一种模拟I2C从机及其实现方法、终端设备和存储介质,能够采用DMA技术、DMA产生的中断、以及TIM的输入捕获事件触发DMA传输数据,使芯片在I2C数据传输过程中由硬件DMA控制器实现数据传输,明显实现模拟I2C从机的同时,降低芯片的CPU资源占用,提升了数据传输的实时性,进而大大提高了通信速度。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种模拟I2C从机及其实现方法、终端设备和存储介质的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明一种模拟I2C从机的实现方法的一个实施例的流程图;
图2是本发明一种模拟I2C从机的实现方法的另一个实施例的流程图;
图3是本发明模拟I2C从机的通信波形示意图;
图4是本发明一种模拟I2C从机的另一个实施例的结构示意图;
图5是本发明一种计算机设备的一个实施例的结构示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
本发明的一个实施例,如图1所示,一种模拟I2C从机的实现方法,包括:
S100上电后对硬件外设进行初始化设置;
S200每当I2C主机发送数据时,通过计时器的输入捕获来触发DMA控制器传输I2C主机发送的数据;
S300每当完成一个字节的数据传输后进入接收中断流程,并对每次传输过来的数据进行解析;
S400根据解析结果进行数据有效性判断,并根据判断结果向I2C主机反馈对应的响应信息。
具体的,硬件I2C对应芯片(单片机)上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,硬件I2C是直接调用内部寄存器进行配置。软件(模拟)I2C一般是用GPIO管脚,用软件控制GPIO管脚的状态以模拟I2C的通信波形。硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。但是,由于主机发送数据在时间和长度上的不确定性,提供软件控制GPIO管脚的状态模拟I2C主机比较简单,现有技术中通过使用软件控制GPIO管脚的状态来实现模拟I2C从机的方式,需要一直占用CPU资源去循环判断START信号和时钟线上的CLOCK,导致需要占用较高的CPU资源,且实时性差,导致I2C通信效率低下,使用体验大大降低。
本实施例中在芯片(单片机)上电后,通过对芯片(单片机)的硬件外设进行初始化设置,然后芯片(单片机)等待I2C主机发送数据,芯片(单片机)通过TIM的输入捕获来触发DMA控制器传输I2C主机向该芯片(单片机)发送的数据,芯片(单片机)的CPU资源未被占用,芯片(单片机)在每次接收到I2C主机通过DMA控制器发送过来的一个字节的数据后,芯片(单片机)均会进入接收中断流程。具体的,由DMA传输的IDR寄存器数据一次只包含I2C数据的1bit信息,而一个字节(Byte)等于8位(bit),因此芯片(单片机)判断DMA传输完成8次后芯片(单片机)会进入接收中断流程。芯片(单片机)每次进入接收中断流程后,均会对每次传输过来的一个字节的数据进行解析,根据解析结果进行数据有效性判断,从而根据判断结果向I2C主机反馈对应的响应信息,响应信息包括ACK应答和NACK应答,总之,芯片(单片机)会根据判断结果向I2C主机反馈ACK应答或者NACK应答。通过本实施例,通过触发芯片(单片机)的DMA外设实现DMA传输,结合芯片(单片机)硬件和软件实现模拟I2C从机,不仅仅在芯片(单片机)所模拟的模拟I2C从机等待I2C主机传输的过程中,不占用芯片(单片机)的CPU的资源,而且,由于CPU资源占用率低,使得芯片(单片机)所模拟的模拟I2C从机与I2C主机通信的实时性高,大大提升了通信效率。
本发明的一个实施例,如图2所示,一种模拟I2C从机的实现方法,包括:
S110配置控制线以及数据线对应的GPIO管脚为上拉输入模式;
具体的,芯片(单片机)包括若干个GPIO管脚,其中一个GPIO管脚A(此处只是示例)与I2C总线的控制线(SCL)连接,一个GPIO管脚B(此处只是示例)与I2C总线的数据线(SDA)连接,那么芯片会将分别与I2C总线的控制线(SCL)以及数据线(SDA)连接的GPIO管脚A和GPIO管脚B配置为上拉输入模式。
S120配置控制线(SCL)复用为具有输入捕获功能的计时器的传输通道,并设置计时器的输入捕获功能为上升沿触发;
具体的,芯片(单片机)包括计时器,计时器的类型有很多,功能也各种各样,但是,需要配置与GPIO管脚A连接的控制线(SCL)复用为具有输入捕获功能的计时器的传输通道,并且设置该计时器的输入捕获功能为上升沿触发。示例性的,MM32系列的芯片的TIM2的channel1为具有输入捕获功能的通道,配置TIM2的channel1为输入捕获,并设置channel1的输入捕获功能开启条件为上升沿触发,一旦channel1的输入捕获功能被触发开启后,就会触发DMA控制器开始数据传输。
S130配置计时器所触发使能的DMA控制器的工作参数;
具体的,S110-S130之间没有先后顺序,可以同时执行,也可以先后执行。工作参数包括传输模式、传输方向、寄存器地址、传输数据位大小、传输次数。此处,优选的,将计时器所触发使能的DMA控制器的工作参数配置为:将DMA控制器的传输模式配置为半字节传输模式(halfword传输模式),将DMA控制器的传输方向配置为从寄存器到内存,将DMA控制器的寄存器地址配置为GPIO的IDR(Input Data Register)寄存器,将DMA控制器的传输次数大小配置为8次。
S200每当I2C主机发送数据时,通过计时器的输入捕获来触发DMA控制器传输I2C主机发送的数据;
S300每当完成一个字节的数据传输后进入接收中断流程,并对每次传输过来的数据进行解析;
S410当解析出通过DMA控制器传输过来的当前数据为地址数据时,判断地址数据是否与自身的预设地址相符,并当解析出数据为非地址数据时,判断自身内存空间是否满足储存数据;
S420若地址数据与自身的预设地址相符,或者自身内存空间满足储存数据,则确定通过DMA控制器传输过来的当前数据有效;
S430若地址数据与自身的预设地址不相符,或者自身内存空间不满足储存数据,则确定通过DMA控制器传输过来的当前数据无效;
S440若当前数据有效则向I2C主机反馈应答响应信息,并返回执行等待接收I2C主机通过DMA控制器传输过来的数据,直至I2C结束数据传输为止;
S450若当前数据无效向I2C主机反馈拒绝响应信息,结束数据传输。
优选的,还包括步骤:
在I2C主机准备进行下一数据传输前,确定对DMA控制器传输过来的当前数据解析未完成时,将控制线对应的GPIO管脚从上拉输入模式切换为推挽输出模式,以拉低控制线使得I2C主机处于等待状态,直至当前数据解析完成为止;
其中,当前数据为I2C主机当前提供DMA控制器传输的数据,下一数据为I2C主机传输完成当前数据后的下一个相邻的待传输数据。
具体的,GPIO管脚A一直与I2C总线的控制线(SCL)连接,GPIO管脚B一直与I2C总线的数据线(SDA),GPIO管脚A检测到控制线(SCL)出现上升沿时,即模拟I2C从机的GPIO管脚A检测到控制线(SCL)发生翻转时,就触发该GPIO对应输入捕获功能的计时器开启输入捕获功能,输入捕获功能被触发后再触发DMA控制器传输数据线(SDA)上的数据,这样能够把寄存器中的数据通过DMA控制器直接传到内存里面,从而方便对数据进行解析。如图3所示,I2C主机控制控制线(SCL)上的高低翻转,并控制数据发送,即数据线(SDA)上的电平高低决定发送数据的状态(0或1),当控制线(SCL)翻转八次,而且数据线(SDA)在控制线(SCL)每次翻转后相应进行数据传输达到八次后,完成一个字节的数据传输。
芯片(单片机)所模拟的模拟I2C从机对数据解析完成后,判断数据是否有效,其中,判断数据是否有效包括判断数据类型是地址数据还是非地址数据。当通过DMA控制器传输过来的当前数据为地址数据时,进一步判断地址数据与芯片(单片机)所模拟的模拟I2C从机自身所对应的预设地址是否相符,如果相符说明数据有效,反之无效。当通过DMA控制器传输过来的当前数据为非地址数据时,进一步判断自身的内存空间是否能够满足当前数据的储存所需空间,如果满足则说明数据有效,反之无效。一旦芯片(单片机)所模拟的模拟I2C从机确定数据有效时,就会向主机I2C发送应答响应信息即ACK应答,并且等待下一次接收数据。芯片(单片机)所模拟的模拟I2C从机确定数据无效时,就会向主机I2C发送拒绝响应信息即NACK应答。如图3所示,本实施例中的芯片(单片机)所模拟的模拟I2C从机的通信波形图如下图所示,在控制线(SCL)的每个上升沿,DMA控制器传输数据,在控制线(SCL)出现第8个上升沿后进入中断。
优选的,DMA控制器完成一个字节的数据传输后,芯片(单片机)所模拟的模拟I2C从机对DMA控制器传输过来的数据进行解析,判断是否解析完成,如果没解析完则拉低控制线(SCL)即将控制线对应的GPIO管脚从上拉输入模式切换为推挽输出模式,而拉低控制线(SCL)能够告知或者通知主机I2C等待,直至解析完成后芯片(单片机)所模拟的模拟I2C判断通过DMA控制器传输过来的数据无效时就释放控制线(SCL),进而结束DMA控制器进行数据传输。当然,如果拉低控制线(SCL)芯片(单片机)所模拟的模拟I2C判断通过DMA控制器传输过来的数据有效时,释放控制线(SCL)并且向主机I2C发送应答响应信息即ACK应答。如果解析完成则不拉低控制线(SCL),直接进行数据有效性判断的流程。
本实施例中,在控制线(SCL)的每个上升沿均会触发TIM计时器产生输入捕获事件即触发输入捕获功能开启,输入捕获事件触发DMA控制器开始数据传输,DMA控制器将GPIO管脚的IDR寄存器的值传输到内存中。在DMA控制器传输8次后产生DMA传输完成中断,芯片(单片机)所模拟的模拟I2C从机在中断服务函数中处理解析DMA控制器传输到内存中的数据,若要继续接收数据则回复ACK应答,否则回复NACK应答。由于数据传输过程中,由硬件DMA控制器完成,无需占用软件资源和CPU资源,直到一次数据传输完成后再由软件来进行数据的处理,这种软硬结合的方式所模拟的I2C从机能够极大的降低CPU占用,大大地节省软件资源,避免模拟I2C从机在接收数据阶段一直占有CPU,从而实现降低CPU资源占用率,使得芯片(单片机)所模拟的模拟I2C从机与I2C主机通信的实时性大大提高,并且提升了I2C的通信效率。
本发明采用DMA技术、DMA产生的中断、以及TIM的输入捕获事件触发DMA传输数据,使芯片在数据传输过程中由硬件DMA控制器实现数据传输,明显实现模拟I2C从机的同时,降低芯片的CPU资源占用,提升了数据传输的实时性,进而大大提高了通信速度。
本发明的一个实施例,如图4所示,一种模拟I2C从机,包括:
初始化模块10,用于上电后对硬件外设进行初始化设置;
接收模块20,用于每当I2C主机发送数据时,通过计时器的输入捕获来触发DMA控制器传输I2C主机发送的数据;
处理模块30,用于每当完成一个字节的数据传输后进入接收中断流程,并对每次传输过来的数据进行解析;
控制模块40,用于根据解析结果进行数据有效性判断,并根据判断结果向I2C主机反馈对应的响应信息。
基于前述实施例,初始化模块10包括:
GPIO管脚初始化单元,用于配置控制线以及数据线对应的GPIO管脚为上拉输入模式;
计时器初始化单元,用于配置控制线复用为具有输入捕获功能的计时器的传输通道,并设置计时器的输入捕获功能为上升沿触发;
DMA初始化单元,用于配置计时器所触发使能的DMA控制器的工作参数;
其中,工作参数包括传输模式、传输方向、寄存器地址、传输数据位大小、传输次数。
基于前述实施例,控制模块40包括:
数据有效性判断单元,用于当解析出通过DMA控制器传输过来的当前数据为地址数据时,判断地址数据是否与自身的预设地址相符,并当解析出数据为非地址数据时,判断自身内存空间是否满足储存数据;
结果输出单元,用于若地址数据与自身的预设地址相符,或者自身内存空间满足储存数据,则确定通过DMA控制器传输过来的当前数据有效;若地址数据与自身的预设地址不相符,或者自身内存空间不满足储存数据,则确定通过DMA控制器传输过来的当前数据无效;
响应执行单元,用于若当前数据有效则向I2C主机反馈应答响应信息,并返回执行等待接收I2C主机通过DMA控制器传输过来的数据,直至I2C结束数据传输为止;若当前数据无效向I2C主机反馈拒绝响应信息,结束数据传输。
基于前述实施例,控制模块40,还用于在I2C主机通过DMA控制器进行下一数据传输时,确定对DMA控制器传输过来的当前数据解析未完成时,将控制线对应的GPIO管脚从上拉输入模式切换为推挽输出模式,以拉低控制线使得I2C主机处于等待状态,直至当前数据解析完成为止。
具体的,本实施例具体的,本实施例是上述方法实施例对应的装置实施例,具体效果参见上述方法实施例,在此不再一一赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序单元或模块,以完成以上描述的全部或者部分功能。实施例中的各程序模块可以集成在一个处理单元中,也可是各个单元单独物理存在,也可以两个或两个以上单元集成在一个处理单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序单元的形式实现。另外,各程序模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
本发明的一个实施例,如图5所示,一种终端设备100,包括处理器110、存储器120,其中,存储器120,用于存放计算机程序121;处理器110,用于执行存储器120上所存放的计算机程序121,实现上述图1或2所对应方法实施例中的模拟I2C从机的实现方法。
终端设备100可以为桌上型计算机、笔记本、掌上电脑、平板型计算机、手机、人机交互屏等设备。终端设备100可包括,但不仅限于处理器110、存储器120。本领域技术人员可以理解,图5仅仅是终端设备100的示例,并不构成对终端设备100的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如:终端设备100还可以包括输入/输出接口、显示设备、网络接入设备、通信总线、通信接口等。通信接口和通信总线,还可以包括输入/输出接口,其中,处理器110、存储器120、输入/输出接口和通信接口通过通信总线完成相互间的通信。该存储器120存储有计算机程序121,该处理器110用于执行存储器120上所存放的计算机程序121,实现上述图1或2所对应方法实施例中的模拟I2C从机的实现方法。
处理器110可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplI2Cation SpecifI2C Integrated Circuit,ASI2C)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器120可以是终端设备100的内部存储单元,例如:终端设备的硬盘或内存。存储器也可以是终端设备的外部存储设备,例如:终端设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器120还可以既包括终端设备100的内部存储单元也包括外部存储设备。存储器120用于存储计算机程序121以及终端设备100所需要的其他程序和数据。存储器还可以用于暂时地存储已经输出或者将要输出的数据。
通信总线是连接所描述的元素的电路并且在这些元素之间实现传输。例如,处理器110通过通信总线从其它元素接收到命令,解密接收到的命令,根据解密的命令执行计算或数据处理。存储器120可以包括程序模块,例如内核(kernel),中间件(middleware),应用程序编程接口(ApplI2Cation Programming Interface,API)和应用。该程序模块可以是有软件、固件或硬件、或其中的至少两种组成。输入/输出接口转发用户通过输入/输出接口(例如感应器、键盘、触摸屏)输入的命令或数据。通信接口将该终端设备100与其它网络设备、用户设备、网络进行连接。例如,通信接口可以通过有线或无线连接到网络以连接到外部其它的网络设备或用户设备。无线通信可以包括以下至少一种:无线保真(WiFi),蓝牙(BT),近距离无线通信技术(NFC),全球卫星定位系统(GPS)和蜂窝通信等等。有线通信可以包括以下至少一种:通用串行总线(USB),高清晰度多媒体接口(HDMI),异步传输标准接口(RS-232)等等。网络可以是电信网络和通信网络。通信网络可以为计算机网络、因特网、物联网、电话网络。终端设备100可以通过通信接口连接网络,终端设备100和其它网络设备通信所用的协议可以被应用、应用程序编程接口(API)、中间件、内核和通信接口至少一个支持。
本发明的一个实施例,一种存储介质,存储介质中存储有至少一条指令,指令由处理器加载并执行以实现上述模拟I2C从机的实现方法对应实施例所执行的操作。例如,存储介质可以是只读内存(ROM)、随机存取存储器(RAM)、只读光盘(CD-ROM)、磁带、软盘和光数据存储设备等。
它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述或记载的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其他的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性、机械或其他的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可能集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序121发送指令给相关的硬件完成,所述的计算机程序121可存储于一存储介质中,该计算机程序121在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序121包括:计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如:在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种模拟I2C从机的实现方法,其特征在于,包括步骤:
上电后对硬件外设进行初始化设置;
每当I2C主机发送数据时,通过计时器的输入捕获来触发DMA控制器传输I2C主机发送的数据;
每当完成一个字节的数据传输后进入接收中断流程,并对每次传输过来的数据进行解析;
根据解析结果进行数据有效性判断,并根据判断结果向所述I2C主机反馈对应的响应信息。
2.根据权利要求1所述的模拟I2C从机的实现方法,其特征在于,所述上电后对硬件外设进行初始化设置包括步骤:
配置控制线以及数据线对应的GPIO管脚为上拉输入模式;
配置所述控制线复用为具有输入捕获功能的计时器的传输通道,并设置所述计时器的输入捕获功能为上升沿触发;
配置所述计时器所触发使能的DMA控制器的工作参数;
其中,所述工作参数包括传输模式、传输方向、寄存器地址、传输数据位大小、传输次数。
3.根据权利要求1所述的模拟I2C从机的实现方法,其特征在于,所述根据解析结果进行数据有效性判断,并根据判断结果向所述I2C主机反馈对应的响应信息:
当解析出通过所述DMA控制器传输过来的当前数据为地址数据时,判断所述地址数据是否与自身的预设地址相符,并当解析出所述数据为非地址数据时,判断自身内存空间是否满足储存所述数据;
若所述地址数据与自身的预设地址相符,或者自身内存空间满足储存所述数据,则确定通过所述DMA控制器传输过来的当前数据有效;
若所述地址数据与自身的预设地址不相符,或者自身内存空间不满足储存所述数据,则确定通过所述DMA控制器传输过来的当前数据无效;
若所述当前数据有效则向所述I2C主机反馈应答响应信息,并返回执行等待I2C主机发送数据,通过TIM的输入捕获来触发DMA控制器传输I2C主机发送的数据,直至所述I2C结束数据传输为止;
若所述当前数据无效向所述I2C主机反馈拒绝响应信息,结束数据传输。
4.根据权利要求1-3任一项所述的模拟I2C从机的实现方法,其特征在于,还包括步骤:
在所述I2C主机通过所述DMA控制器进行下一数据传输时,确定对所述DMA控制器传输过来的当前数据解析未完成时,将所述控制线对应的GPIO管脚从所述上拉输入模式切换为推挽输出模式,以拉低所述控制线使得所述I2C主机处于等待状态,直至所述当前数据解析完成为止。
5.一种模拟I2C从机,其特征在于,包括:
初始化模块,用于上电后对硬件外设进行初始化设置;
接收模块,用于每当I2C主机发送数据时,通过计时器的输入捕获来触发DMA控制器传输I2C主机发送的数据;
处理模块,用于每当完成一个字节的数据传输后进入接收中断流程,并对每次传输过来的数据进行解析;
控制模块,用于根据解析结果进行数据有效性判断,并根据判断结果向所述I2C主机反馈对应的响应信息。
6.根据权利要求5所述的模拟I2C从机,其特征在于,所述初始化模块包括:
GPIO管脚初始化单元,用于配置控制线以及数据线对应的GPIO管脚为上拉输入模式;
计时器初始化单元,用于配置所述控制线复用为具有输入捕获功能的计时器的传输通道,并设置所述计时器的输入捕获功能为上升沿触发;
DMA初始化单元,用于配置所述计时器所触发使能的DMA控制器的工作参数;
其中,所述工作参数包括传输模式、传输方向、寄存器地址、传输数据位大小、传输次数。
7.根据权利要求5所述的模拟I2C从机,其特征在于,所述控制模块包括:
数据有效性判断单元,用于当解析出通过所述DMA控制器传输过来的当前数据为地址数据时,判断所述地址数据是否与自身的预设地址相符,当解析出所述数据为非地址数据时,判断自身内存空间是否满足储存所述数据;
结果输出单元,用于若所述地址数据与自身的预设地址相符,或者自身内存空间满足储存所述数据,则确定通过所述DMA控制器传输过来的当前数据有效;若所述地址数据与自身的预设地址不相符,或者自身内存空间不满足储存所述数据,则确定通过所述DMA控制器传输过来的当前数据无效;
响应执行单元,用于若所述当前数据有效则向所述I2C主机反馈应答响应信息,并返回执行等待接收I2C主机通过DMA控制器传输过来的数据,直至所述I2C结束数据传输为止;若所述当前数据无效向所述I2C主机反馈拒绝响应信息,结束数据传输。
8.根据权利要求5-7任一项所述的模拟I2C从机,其特征在于:
所述控制模块,还用于在所述I2C主机通过所述DMA控制器进行下一数据传输时,确定对所述DMA控制器传输过来的当前数据解析未完成时,将所述控制线对应的GPIO管脚从所述上拉输入模式切换为推挽输出模式,以拉低所述控制线使得所述I2C主机处于等待状态,直至所述当前数据解析完成为止。
9.一种终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器,用于执行所述存储器上所存放的计算机程序,实现如权利要求1至权利要求4任一项所述的模拟I2C从机的实现方法所执行的操作。
10.一种存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求4任一项所述的模拟I2C从机的实现方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911127894.XA CN111078606B (zh) | 2019-11-18 | 2019-11-18 | 一种模拟i2c从机及其实现方法、终端设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911127894.XA CN111078606B (zh) | 2019-11-18 | 2019-11-18 | 一种模拟i2c从机及其实现方法、终端设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111078606A true CN111078606A (zh) | 2020-04-28 |
CN111078606B CN111078606B (zh) | 2021-05-11 |
Family
ID=70311244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911127894.XA Active CN111078606B (zh) | 2019-11-18 | 2019-11-18 | 一种模拟i2c从机及其实现方法、终端设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078606B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752884A (zh) * | 2020-06-30 | 2020-10-09 | 无锡物联网创新中心有限公司 | 一种m2芯片与i2c设备之间的通讯方法 |
CN112131157A (zh) * | 2020-09-04 | 2020-12-25 | 苏州浪潮智能科技有限公司 | 一种使用usb接口实现ipmi功能的方法、usb接口和服务器 |
CN112165419A (zh) * | 2020-09-29 | 2021-01-01 | 深圳市新龙鹏科技有限公司 | 家庭网关的i2c模拟通信方法、装置、设备及存储介质 |
CN112422850A (zh) * | 2020-11-16 | 2021-02-26 | 飞昂创新科技南通有限公司 | 一种针对hdmi协议低速信号进行线速转发的电路 |
CN112698614A (zh) * | 2021-03-25 | 2021-04-23 | 之江实验室 | 一种任意字节读写用户侧逻辑控制器 |
CN113094305A (zh) * | 2021-04-02 | 2021-07-09 | 北京黑蚁兄弟科技有限公司 | 一种异步通信处理方法、装置和存储介质 |
CN113218050A (zh) * | 2021-05-12 | 2021-08-06 | 海信(山东)空调有限公司 | 一种空调器和控制方法 |
CN114490469A (zh) * | 2020-10-28 | 2022-05-13 | 南京中兴软件有限责任公司 | 数据接收方法、数据接收设备及存储介质 |
CN114676088A (zh) * | 2022-02-18 | 2022-06-28 | 珠海全志科技股份有限公司 | 一种通讯方法、装置及存储介质 |
CN115033520A (zh) * | 2022-07-11 | 2022-09-09 | 深圳市金科泰通信设备有限公司 | Iic数据传输方法、装置、单片机设备及存储介质 |
CN117421257A (zh) * | 2023-10-24 | 2024-01-19 | 上海合芯数字科技有限公司 | 一种内存条的初始化方法、装置、设备及存储介质 |
CN118550856A (zh) * | 2024-07-25 | 2024-08-27 | 惠州市新明海科技有限公司 | 模拟iic通讯的方法、单片机产品及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510185A (zh) * | 2009-04-01 | 2009-08-19 | 北京中星微电子有限公司 | 一种高速总线向低速总线写入、读取数据的方法和装置 |
CN102929828A (zh) * | 2012-10-18 | 2013-02-13 | 广东欧珀移动通信有限公司 | 同时支持标准和非标准i2c接口的数据传输方法及装置 |
CN105677598A (zh) * | 2016-01-04 | 2016-06-15 | 中国科学院嘉兴微电子与系统工程中心 | 基于i2c接口快速读取多个mems传感器数据的模块和方法 |
CN106874228A (zh) * | 2017-01-23 | 2017-06-20 | 中航光电科技股份有限公司 | 基于i2c总线的控制器及通信方法、多控制器间的通信方法 |
CN108681517A (zh) * | 2018-05-09 | 2018-10-19 | 广州计量检测技术研究院 | 变换i2c器件地址的方法及系统 |
US20190035452A1 (en) * | 2017-04-17 | 2019-01-31 | Intel Corporation | System, Apparatus And Method For Segmenting A Memory Array |
CN109344098A (zh) * | 2018-09-04 | 2019-02-15 | 广州视源电子科技股份有限公司 | 主从设备间的数据操作方法和装置 |
-
2019
- 2019-11-18 CN CN201911127894.XA patent/CN111078606B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510185A (zh) * | 2009-04-01 | 2009-08-19 | 北京中星微电子有限公司 | 一种高速总线向低速总线写入、读取数据的方法和装置 |
CN102929828A (zh) * | 2012-10-18 | 2013-02-13 | 广东欧珀移动通信有限公司 | 同时支持标准和非标准i2c接口的数据传输方法及装置 |
CN105677598A (zh) * | 2016-01-04 | 2016-06-15 | 中国科学院嘉兴微电子与系统工程中心 | 基于i2c接口快速读取多个mems传感器数据的模块和方法 |
CN106874228A (zh) * | 2017-01-23 | 2017-06-20 | 中航光电科技股份有限公司 | 基于i2c总线的控制器及通信方法、多控制器间的通信方法 |
US20190035452A1 (en) * | 2017-04-17 | 2019-01-31 | Intel Corporation | System, Apparatus And Method For Segmenting A Memory Array |
CN108681517A (zh) * | 2018-05-09 | 2018-10-19 | 广州计量检测技术研究院 | 变换i2c器件地址的方法及系统 |
CN109344098A (zh) * | 2018-09-04 | 2019-02-15 | 广州视源电子科技股份有限公司 | 主从设备间的数据操作方法和装置 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752884A (zh) * | 2020-06-30 | 2020-10-09 | 无锡物联网创新中心有限公司 | 一种m2芯片与i2c设备之间的通讯方法 |
CN112131157A (zh) * | 2020-09-04 | 2020-12-25 | 苏州浪潮智能科技有限公司 | 一种使用usb接口实现ipmi功能的方法、usb接口和服务器 |
CN112131157B (zh) * | 2020-09-04 | 2022-07-12 | 苏州浪潮智能科技有限公司 | 一种使用usb接口实现ipmi功能的方法、usb接口和服务器 |
CN112165419A (zh) * | 2020-09-29 | 2021-01-01 | 深圳市新龙鹏科技有限公司 | 家庭网关的i2c模拟通信方法、装置、设备及存储介质 |
CN114490469A (zh) * | 2020-10-28 | 2022-05-13 | 南京中兴软件有限责任公司 | 数据接收方法、数据接收设备及存储介质 |
CN112422850A (zh) * | 2020-11-16 | 2021-02-26 | 飞昂创新科技南通有限公司 | 一种针对hdmi协议低速信号进行线速转发的电路 |
CN112698614A (zh) * | 2021-03-25 | 2021-04-23 | 之江实验室 | 一种任意字节读写用户侧逻辑控制器 |
CN113094305A (zh) * | 2021-04-02 | 2021-07-09 | 北京黑蚁兄弟科技有限公司 | 一种异步通信处理方法、装置和存储介质 |
CN113094305B (zh) * | 2021-04-02 | 2024-03-26 | 北京黑蚁兄弟科技有限公司 | 一种异步通信处理方法、装置和存储介质 |
CN113218050B (zh) * | 2021-05-12 | 2023-03-24 | 海信空调有限公司 | 一种空调器和控制方法 |
CN113218050A (zh) * | 2021-05-12 | 2021-08-06 | 海信(山东)空调有限公司 | 一种空调器和控制方法 |
CN114676088A (zh) * | 2022-02-18 | 2022-06-28 | 珠海全志科技股份有限公司 | 一种通讯方法、装置及存储介质 |
CN114676088B (zh) * | 2022-02-18 | 2024-06-04 | 珠海全志科技股份有限公司 | 一种通讯方法、装置及存储介质 |
CN115033520B (zh) * | 2022-07-11 | 2023-08-08 | 深圳市金科泰通信设备有限公司 | Iic数据传输方法、装置、单片机设备及存储介质 |
CN115033520A (zh) * | 2022-07-11 | 2022-09-09 | 深圳市金科泰通信设备有限公司 | Iic数据传输方法、装置、单片机设备及存储介质 |
CN117421257A (zh) * | 2023-10-24 | 2024-01-19 | 上海合芯数字科技有限公司 | 一种内存条的初始化方法、装置、设备及存储介质 |
CN118550856A (zh) * | 2024-07-25 | 2024-08-27 | 惠州市新明海科技有限公司 | 模拟iic通讯的方法、单片机产品及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111078606B (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078606B (zh) | 一种模拟i2c从机及其实现方法、终端设备和存储介质 | |
CN112639756B (zh) | 混合模式射频前端接口 | |
US7047331B2 (en) | Interfacing devices | |
US10241955B2 (en) | Dynamically adjustable multi-line bus shared by multi-protocol devices | |
US8477082B2 (en) | System and method for implementing a remote display using a virtualization technique | |
US20150370735A1 (en) | Dynamically adjustable multi-line bus shared by multi-protocol devices | |
JP2019508915A (ja) | メッセージングおよび入出力転送インターフェースのための最適レイテンシパケタイザ有限ステートマシン | |
CN102749985B (zh) | 动态调整总线时钟的方法及其装置 | |
US20070240011A1 (en) | FIFO memory data pipelining system and method for increasing I²C bus speed | |
JP2015528243A (ja) | データトンネルを用いるインタフェースを介した複数のプロトコルデータ要素の送信 | |
US10496562B1 (en) | Low latency virtual general purpose input/output over I3C | |
US10733121B2 (en) | Latency optimized I3C virtual GPIO with configurable operating mode and device skip | |
US10579581B2 (en) | Multilane heterogeneous serial bus | |
CN116075815A (zh) | 跨接口的批操作 | |
US20190356412A1 (en) | Fast termination of multilane double data rate transactions | |
CN109344098A (zh) | 主从设备间的数据操作方法和装置 | |
US20190220436A1 (en) | Data lane validation procedure for multilane protocols | |
WO2019050773A1 (en) | ULTRA SHORT DATAGRAMS FOR LATENCY-SENSITIVE RADIO FREQUENCY FRONT DEVICE | |
CN110049362A (zh) | 显示器、无线投屏的系统和方法 | |
TW201908984A (zh) | 由第三方啟動之加速改良式內部積體電路停止 | |
WO2017049556A1 (zh) | 数据传输方法和移动终端 | |
EP3475836A1 (en) | Accelerated i3c master stop | |
CN102004716A (zh) | 实现设备共享的系统及其方法 | |
CN101998691B (zh) | 一种数据传输的方法、系统和装置 | |
CN112003928B (zh) | 多功能屏幕同步控制方法、装置及设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |