CN104346131B - 一种支持批量读写从机寄存器的主机控制方法 - Google Patents
一种支持批量读写从机寄存器的主机控制方法 Download PDFInfo
- Publication number
- CN104346131B CN104346131B CN201310338377.3A CN201310338377A CN104346131B CN 104346131 B CN104346131 B CN 104346131B CN 201310338377 A CN201310338377 A CN 201310338377A CN 104346131 B CN104346131 B CN 104346131B
- Authority
- CN
- China
- Prior art keywords
- write
- byte
- read
- fifo
- control method
- 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.)
- Active
Links
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种支持批量读写从机寄存器的主机控制方法,通过FIFO实现,FIFO包括发送部和接收部,FIFO具有第一宽度;在写入控制方法中,外部CPU向FIFO写入具有第一长度的数据,第一长度的数据通过一解码器解析成多个具有第一宽度的字节,再按先后顺序依次写入FIFO的发送部,最后发送给从机;在读取控制方法中,FIFO通过发送部将从外部CPU接收到的读取地址写入从机后,根据读取地址读取从从机返回的数据至FIFO的接收部,最后通过编码器生成具有第二长度的数据并传送给外部CPU。本发明支持单次写入从机的多个寄存器地址,从而减少CPU查询主机空闲状态的次数,CPU的使用效率提高至少一倍。
Description
技术领域
本发明涉及主从机间的通讯方法,尤其涉及一种支持批量读写从机寄存器的主机控制方法。
背景技术
SCCB(Serial Camera Control Bus)是和I2C相同的一个协议。SIO_C和SIO_D分别为SCCB总线的时钟线和数据线。目前,SCCB总线通信协议支持两种地址形式:①从设备地址(ID Address,8bit),分为读地址和写地址,高7位用于选中芯片,第0位是读/写控制位(R/W),决定是对该芯片进行读或写操作;②内部寄存器单元地址(Sub_Address,8bit),用于决定对内部的哪个寄存器单元进行操作,通常还支持地址单元连续的多字节顺序读写操作。SCCB控制总线功能的实现完全是依靠SIO_C、SIO_D两条总线上电平的状态以及两者之间的相互配合实现的。以往的SCCB主机工作时,每次只能写入一个从机的寄存器地址,只有CPU检测到SCCB主机完成读写操作并处于空闲状态后,再写入下一个寄存器地址,该种方式会大量占用CPU的运行时间。第三方的产品利用内置FIFO,但是每次发起传输时,都需通过CPU写内部寄存器的特定bit,进行读写相间的操作时,也需要写内部寄存器的特定bit以改变控制器的模式。图1a和图1b分别示出了现有技术中CPU写内部寄存器以及读内部寄存器的流程示意框图。
发明内容
针对上述存在的问题,本发明的目的是提供一种支持批量读写从机寄存器的主机控制方法,支持单次写入从机的多个寄存器地址,从而减少CPU查询SCCB主机空闲状态的次数,降低CPU占用率。
本发明的目的是通过下述技术方案实现的:
一种支持批量读写从机寄存器的主机控制方法,其中,通过FIFO实现,所述FIFO包括发送部和接收部,所述发送部用于缓存需要发送的字节,所述接收部用于缓存从从机读取回的字节,所述FIFO具有第一宽度;
所述控制方法包括写入控制方法和读取控制方法:
在所述写入控制方法中,外部CPU通过数据总线向所述FIFO写入具有第一长度的数据,所述第一长度的数据通过一解码器解析成多个具有所述第一宽度的字节,再按先后顺序依次写入所述FIFO的发送部,最后发送给从机;
在所述读取控制方法中,所述FIFO通过所述发送部将从外部CPU接收到的一读取地址写入从机后,根据所述读取地址读取从从机返回的数据至所述FIFO的接收部,最后通过一编码器生成具有第二长度的数据并传送给外部CPU;
所述第一长度和所述第二长度相等。
上述支持批量读写从机寄存器的主机控制方法,其中,在所述写入控制方法中,多个具有所述第一宽度的字节包括写入启动位字节,ID及写操作符字节,写入地址字节和至少一个写入数据字节和写入停止位字节,所述写入启动位字节、所述ID及写操作符字节、所述写入地址字节、至少一个所述写入数据字节和所述写入停止位字节按先后顺序依次写入所述FIFO的发送部。
上述支持批量读写从机寄存器的主机控制方法,其中,在所述读取控制方法中,将一读取启动位字节、一ID及读操作符字节、一读取地址字节和一读取停止位字节按先后顺序写入所述FIFO的发送部;或者,将一读取启动位字节、一长度字节、一ID及读操作符字节、一读取地址字节和一读取停止位字节按先后顺序写入所述FIFO的发送部。
上述支持批量读写从机寄存器的主机控制方法,其中,将所述写入启动位字节,所述ID及写操作符字节,所述写入地址字节、一个所述写入数据字节和所述写入停止位字节按顺序写入所述FIFO的发送部时,状态表示为单次写入;将所述写入启动位字节、所述ID及写操作符字节、所述写入地址字节、多个所述写入数据字节和所述写入停止位字节按顺序写入所述FIFO的发送部时,状态表示为批量写入;将一读取启动位字节、一ID及读操作符字节、一读取地址字节和一读取停止位字节按先后顺序写入所述FIFO的发送部时,状态表示为单次读取;将一读取启动位字节、一长度字节、一ID及读操作符字节、一读取地址字节和一读取停止位字节按先后顺序写入所述FIFO的发送部时,状态表示为批量读取;
所述控制方法支持所述单次写入、所述批量写入、所述单次读取和所述批量读取四种读写操作的混合操作。
上述支持批量读写从机寄存器的主机控制方法,其中,所述混合操作为所述单次写入与所述批量写入,或者为所述单次写入与所述单次读取,或者为所述单次读取与所述批量写入,或者为所述单次读取与所述批量读取。
上述支持批量读写从机寄存器的主机控制方法,其中,所述第一宽度为10bit,所述第一长度和所述第二长度为32bit。
上述支持批量读写从机寄存器的主机控制方法,其中,所述从机为同一个从机或者不同从机的组合。
上述支持批量读写从机寄存器的主机控制方法,其中,所述主机为SCCB主机或者I2C主机。
与已有技术相比,本发明的有益效果在于:
本发明支持单次写入从机的多个寄存器地址,从而减少CPU查询主机空闲状态的次数,CPU的使用效率提高至少一倍。
附图说明
图1a为现有技术中CPU写内部寄存器的流程示意框图;
图1b为现有技术中CPU读内部寄存器的流程示意框图;
图2为本发明支持批量读写从机寄存器的主机控制方法的FIFO、从机与外部CPU之间的逻辑关系示意图;
图3a为本发明支持批量读写从机寄存器的主机控制方法的单次写入控制方法的流程示意框图;
图3b为本发明支持批量读写从机寄存器的主机控制方法的单次读取控制方法的流程示意框图;
图4为本发明支持批量读写从机寄存器的主机控制方法的同一从机的单次写入与批量写入的混合操作模式中的数据字节示意图;
图5为本发明支持批量读写从机寄存器的主机控制方法的同一从机的单次写入与单次读取的混合操作模式中的数据字节示意图;
图6为本发明支持批量读写从机寄存器的主机控制方法的同一从机的单次读取与单次写入的混合操作模式中的数据字节示意图;
图7为本发明支持批量读写从机寄存器的主机控制方法的同一从机的单次读取与单次写入的混合操作模式中的数据字节示意图;
图8为本发明支持批量读写从机寄存器的主机控制方法的不同从机的单次写入与单次写入的混合操作模式中的数据字节示意图;
图9为本发明支持批量读写从机寄存器的主机控制方法的不同从机的单次读取与单次读取的混合操作模式中的数据字节示意图。
具体实施方式
下面结合原理图和具体操作实施例对本发明作进一步说明。
参照图2,本发明一种支持批量读写从机寄存器的主机控制方法,主要应用于SCCB主机或者I2C主机上,通过FIFO实现,FIFO包括发送部和接收部,发送部用于缓存需要发送的字节,接收部用于缓存从从机读取回的字节,FIFO具有第一宽度。
本实施例中,控制方法包括写入控制方法和读取控制方法。
在写入控制方法中,外部CPU通过数据总线向FIFO写入具有第一长度的数据,第一长度的数据通过一解码器解析成多个具有第一宽度的字节,再按先后顺序依次写入FIFO的发送部,最后发送给从机。
在读取控制方法中,FIFO通过发送部将从外部CPU接收到的一个读取地址写入从机后,根据读取地址读取从从机返回的数据至FIFO的接收部,最后通过一个编码器生成具有第二长度的数据并传送给外部CPU。
在本发明的优选实施例中,第一宽度为10bit,第一长度和第二长度相等,均为32bit,对于发送部,CPU每次通过数据总线向FIFO写入32bit的数据,数据的格式如表1所示。
表1
其中,每条32bit数据的高2bit是待发送字节的数目,范围是1~3,因此CPU单次最多可写3个待发送字节(BYTE0~BYTE2)进入FIFO;低30bit是由待发送的字节组成,每个字节的位宽是10bit。32bit的数据会经由解码器解析成1~3个10bit字节,再按先后顺序写入FIFO。10bit的待发送字节分为两部分:高2bit是字节的类型(type),低8bit是字节本身(byte),类型是依据SCCB协议划分成ID、地址(address)、数据(data)和启停指令(command),具体表示如表2所示。
表2
启停指令(command)分为开始(start)、停止(stop)和长度(length)三种,command的8bit定义如表3所示。
表3
在写入控制方法中,多个具有第一宽度的字节包括写入启动位字节,ID及写操作符字节,写入地址字节和至少一个写入数据字节和写入停止位字节,写入启动位字节、ID及写操作符字节、写入地址字节、至少一个写入数据字节和写入停止位字节按先后顺序依次写入FIFO的发送部。
在读取控制方法中,将一读取启动位字节、一个ID及读操作符字节、一个读取地址字节和一个读取停止位字节按先后顺序写入FIFO的发送部,或者将一个读取启动位字节、一个长度字节、一个ID及读操作符字节、一个读取地址字节和一个读取停止位字节按先后顺序写入FIFO的发送部。
将写入启动位字节,ID及写操作符字节,写入地址字节、一个写入数据字节和写入停止位字节按顺序写入FIFO的发送部时,状态表示为单次写入(single write),参照图3a所示。将写入启动位字节、ID及写操作符字节、写入地址字节、多个写入数据字节和写入停止位字节按顺序写入FIFO的发送部时,状态表示为批量写入(burst write)。将一个读取启动位字节、一个ID及读操作符字节、一个读取地址字节和一个读取停止位字节按先后顺序写入FIFO的发送部时,状态表示为单次读取(single read),参照图3b所示。将一个读取启动位字节、一个长度字节、一个ID及读操作符字节、一个读取地址字节和一个读取停止位字节按先后顺序写入FIFO的发送部时,状态表示为批量读取(burst read)。
SCCB总线有效的传输均是以启动位(START condition)开始,以停止位(STOPcondition)结束。以单次写入(single write)为例,启动位之后依次为目标从机的ID、address、data和停止位,格式如表4所示。
表4
S | ID+W | ADDR | DATA | P |
在本方案中,按表5中所示的顺序将10bit的待发送字节写入FIFO,即可实现一次单次写入。ID+W由从机的7bit ID和读写位0组成,表示对对应ID的从机进行写操作。
表5
11 | start command |
00 | ID+W |
01 | address |
10 | data |
11 | stop command |
单次写入(single write)扩展成批量写入(burst write),则格式如表6所示。
表6
S | ID+W | ADDR | DATA0 | ...... | DATAn | P |
在本方案中,按表7所示的顺序将10bit的待发送字节写入FIFO,即可实现一次批量写入(burst write)。
表7
11 | start command |
00 | ID+W |
01 | address |
10 | data0 |
10 | ...... |
10 | datan |
11 | stop command |
单次读取(single read)首选需要先向从机写入读取地址(address),再读取从机返回的数据(data),其格式如下表所示。
表8
S | ID+W | ADDR | Sr | ID+R | DATA | P |
在本方案中,按表9所示的顺序将10bit的待发送字节写入FIFO,即可实现一次single read。ID+R由从机的7bit ID和读写位1组成,表示对对应ID的从机进行读操作。
表9
11 | start command |
00 | ID+R |
01 | address |
11 | stop command |
单次读取(single read)也可扩展成批量读取(burst read),其格式如表10所示。
表10
S | ID+W | ADDR | Sr | ID+R | DATA0 | ...... | DATAn | P |
在本方案中,按表11所示的顺序将10bit的待发送字节写入FIFO,即可实现一次批量读取(burst read)。其中length command用于配置burst read的长度。
表11
11 | start command |
11 | length command |
00 | ID+R |
01 | address |
11 | stop command |
每次传输需由start command发起,由stop command终止。Start command的bit0一定为1,其余bit用作对传输的设置,具体参考表2;stop command 的bit0一定为0,一般为0x00。
本方案可支持SCCB总线上的一次传输由以上4种读写操作混合组成,而且目标从机可以同一个或是不同的。在此种应用中,Start command 除了用于发起传输,还可用于更新传输的设置,如一次传输的不同阶段需要不同的设置,可以在相应位置插入不同startcommand。
控制方法支持单次写入、批量写入、单次读取和批量读取四种读写操作的混合操作。混合操作为单次写入与批量写入,或者为单次写入与单次读取,或者为单次读取与批量写入,或者为单次读取与批量读取。从机可以为同一个从机或者不同从机的组合。图4至图7所示的是对同一从机进行读写操作的4种可能组合,图8和图9则示出了对不同从机进行读写操作的2种可能组合,图8中为从机a的单次写入和从机b的单次写入混合操作,图9为从机a的单次读取和从机b的单次读取的混合操作。
本发明支持单次写入从机的多个寄存器地址,从而减少CPU查询主机空闲状态的次数,CPU的使用效率提高至少一倍。
以上对本发明的具体实施例进行了详细描述,但本发明并不限制于以上描述的具体实施例,其只是作为范例。对于本领域技术人员而言,任何等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作出的均等变换和修改,都应涵盖在本发明的范围内。
Claims (7)
1.一种支持批量读写从机寄存器的主机控制方法,其特征在于,通过FIFO实现,所述FIFO包括发送部和接收部,所述发送部用于缓存需要发送的字节,所述接收部用于缓存从从机读取回的字节,所述FIFO具有第一宽度;
所述控制方法包括写入控制方法和读取控制方法:
在所述写入控制方法中,外部CPU通过数据总线向所述FIFO写入具有第一长度的数据,所述第一长度的数据通过一解码器解析成多个具有所述第一宽度的字节,再按先后顺序依次写入所述FIFO的发送部,最后发送给从机;
在所述读取控制方法中,所述FIFO通过所述发送部将从外部CPU接收到的一读取地址写入从机后,根据所述读取地址读取从从机返回的数据至所述FIFO的接收部,最后通过一编码器生成具有第二长度的数据并传送给外部CPU;
所述第一长度和所述第二长度相等;
在所述写入控制方法中,多个具有所述第一宽度的字节包括写入启动位字节,ID及写操作符字节,写入地址字节和至少一个写入数据字节和写入停止位字节,所述写入启动位字节、所述ID及写操作符字节、所述写入地址字节、至少一个所述写入数据字节和所述写入停止位字节按先后顺序依次写入所述FIFO的发送部。
2.根据权利要求1所述支持批量读写从机寄存器的主机控制方法,其特征在于,在所述读取控制方法中,将一读取启动位字节、一ID及读操作符字节、一读取地址字节和一读取停止位字节按先后顺序写入所述FIFO的发送部;或者,将一读取启动位字节、一长度字节、一ID及读操作符字节、一读取地址字节和一读取停止位字节按先后顺序写入所述FIFO的发送部。
3.根据权利要求2所述支持批量读写从机寄存器的主机控制方法,其特征在于,将所述写入启动位字节,所述ID及写操作符字节,所述写入地址字节、一个所述写入数据字节和所述写入停止位字节按顺序写入所述FIFO的发送部时,状态表示为单次写入;将所述写入启动位字节、所述ID及写操作符字节、所述写入地址字节、多个所述写入数据字节和所述写入停止位字节按顺序写入所述FIFO的发送部时,状态表示为批量写入;将一读取启动位字节、一ID及读操作符字节、一读取地址字节和一读取停止位字节按先后顺序写入所述FIFO的发送部时,状态表示为单次读取;将一读取启动位字节、一长度字节、一ID及读操作符字节、一读取地址字节和一读取停止位字节按先后顺序写入所述FIFO的发送部时,状态表示为批量读取;
所述控制方法支持所述单次写入、所述批量写入、所述单次读取和所述批量读取四种读写操作的混合操作。
4.根据权利要求3所述支持批量读写从机寄存器的主机控制方法,其特征在于,所述混合操作为所述单次写入与所述批量写入,或者为所述单次写入与所述单次读取,或者为所述单次读取与所述批量写入,或者为所述单次读取与所述批量读取。
5.根据权利要求1至4中任意一项所述支持批量读写从机寄存器的主机控制方法,其特征在于,所述第一宽度为10bit,所述第一长度和所述第二长度为32bit。
6.根据权利要求5所述支持批量读写从机寄存器的主机控制方法,其特征在于,所述从机为同一个从机或者不同从机的组合。
7.根据权利要求1所述支持批量读写从机寄存器的主机控制方法,其特征在于,所述主机为SCCB主机或者I2C主机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310338377.3A CN104346131B (zh) | 2013-08-05 | 2013-08-05 | 一种支持批量读写从机寄存器的主机控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310338377.3A CN104346131B (zh) | 2013-08-05 | 2013-08-05 | 一种支持批量读写从机寄存器的主机控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104346131A CN104346131A (zh) | 2015-02-11 |
CN104346131B true CN104346131B (zh) | 2017-07-04 |
Family
ID=52501840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310338377.3A Active CN104346131B (zh) | 2013-08-05 | 2013-08-05 | 一种支持批量读写从机寄存器的主机控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104346131B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228520B (zh) * | 2018-01-10 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种面向bmc的i2c控制器的快速传输方法 |
CN109471814A (zh) * | 2018-10-31 | 2019-03-15 | 龙迅半导体(合肥)股份有限公司 | 一种数据传输的方法、装置及主控制端 |
CN116450552B (zh) * | 2023-06-09 | 2023-08-29 | 江苏润石科技有限公司 | 基于i2c总线异步批量读写寄存器的方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101625625A (zh) * | 2008-07-11 | 2010-01-13 | 鸿富锦精密工业(深圳)有限公司 | 信号中继装置及利用该装置访问外部存储器的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001350714A (ja) * | 2000-06-08 | 2001-12-21 | Hitachi Ltd | データ処理装置 |
JP5633355B2 (ja) * | 2010-12-14 | 2014-12-03 | 富士通セミコンダクター株式会社 | データ転送装置、データ転送方法、及び半導体装置 |
-
2013
- 2013-08-05 CN CN201310338377.3A patent/CN104346131B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101625625A (zh) * | 2008-07-11 | 2010-01-13 | 鸿富锦精密工业(深圳)有限公司 | 信号中继装置及利用该装置访问外部存储器的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104346131A (zh) | 2015-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101077900B1 (ko) | 네트워크 효율성을 고려한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치 | |
CN107015927B (zh) | 一种基于SoC支持多个SPI接口标准组的装置 | |
US20200393965A1 (en) | Memory Access Technology and Computer System | |
CN100464318C (zh) | 一种实现高效dma传输的dma控制器及传输方法 | |
US20100131681A1 (en) | Bus Based Communications Between A Processor And A Peripheral Controller In A Digital Processing System | |
CN111143259B (zh) | 一种多线SPI flash控制器 | |
CN102609222A (zh) | 基于命令描述符的闪存控制方法 | |
CN105278918B (zh) | 寄存器的读取方法和采用该读取方法的寄存器 | |
CN104346131B (zh) | 一种支持批量读写从机寄存器的主机控制方法 | |
CN110188059B (zh) | 数据有效位统一配置的流控式fifo缓存装置及方法 | |
US7627700B2 (en) | Expanded memory for communications controller | |
US9471521B2 (en) | Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit | |
US10999097B2 (en) | Apparatuses and methods involving first type of transaction registers mapped to second type of transaction addresses | |
CN204423250U (zh) | 一种具有多路高速智能can的x86嵌入式cpu主板 | |
CN103605625A (zh) | 基于AXI总线的Nor Flash芯片的控制方法 | |
US7664898B2 (en) | Method and system for efficient framing on addressed buses | |
CN212486527U (zh) | 一种基于modbus协议的从站转换装置 | |
WO2024113704A1 (zh) | 一种pcie数据传输方法及相关装置 | |
CN1811480A (zh) | 一种电平信号的实时监测方法及装置 | |
CN102223732A (zh) | 无线多点ddc edid信息共享装置及方法 | |
CN103488600A (zh) | 通用从机同步串行接口电路 | |
WO2014134947A1 (zh) | 控制信息的收发装置和方法 | |
CN201976096U (zh) | 一种一主多从的通讯电路 | |
CN101094357B (zh) | 电视机数据复制的方法及其装置 | |
CN107066407A (zh) | 一种基于PCIe总线的主从交互式通信平台及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |