10位寻址模式I2C控制器访问大容量存储器的方法技术

技术编号:2840738 阅读:288 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种采用10位寻址模式的I2C控制器访问大容量存储器的方法,其中上述I2C控制器从大容量存储器中随机读取数据的操作至少包括以下步骤:I2C控制器发送一个开始信号;发送写操作命令,等待回传ACK;发送上述数据的地址的高8位,等待回传ACK;发送上述数据的地址的低8位,等待回传ACK;发送一个开始信号;发送读操作命令,等待回传ACK;读取上述数据的一个字节,等待回传ACK;如果读取的数据大小为一个字节,则直接转到下一步;如果读取的数据大于一个字节,重复该步骤,直到指定长度的数据全部读取完毕;发送停止命令。采用本发明专利技术的方法可以简单高效的实现标准I2C控制器访问更大空间的I2C存储介质。

【技术实现步骤摘要】

本专利技术涉及电讯设备、电子设备和计算机设备的通讯领域,尤其涉及利用I2C控制器访问大容量存储器的方法。
技术介绍
目前,在数控消费电器、电讯设备、电子设备和计算机设备等领域中,广泛地利用I2C总线及其他设备来实现设备之间的相互通讯。 I2C(Inter-Integrated Circuit)总线是一种双线串行总线,由双向数据线SDA和时钟线SCL构成,通过这两条线,系统元器件之间可以相互通讯。I2C总线从传输速率上划分,有标准模式(100Kbit/s),快速模式(400Kbit/s),高速模式(3.4Mbit/s);从寻址范围上划分有7位地址模式和10位地址模式。I2C总线连接I2C主控制器(bus master)和I2C辅助设备(bus slave),一般来说,I2C主控制器通常是微处理器,I2C辅助设备包括许多连接在I2C总线上的设备,比如存储器、传感器等待。通常,I2C主控制器能与I2C辅助设备直接通讯并提供时钟信号;I2C辅助设备能从I2C主控制器接收数据或者为主控制器提供数据。在任何时候都只能有一个I2C主控制器存在,但可以有多个I2C辅助设备同时存在。 数据只能以字节方式在I2C总线上传输,数据传输单位便是字节。传输通常是以最重要的位(most significant bit,以下简称MSB)作为第一位,后边紧跟8位数据,每个字节传输结束以后,都会从对方传出一个响应位(Acknowledge bit,以下简称ACK)。图1表示I2C总线上数据传输的格式。 I2C主控制器向I2C辅助设备发出一个命令时,软件需要作以下设置设置辅助设备地址(Slave Address)、操作属性是读或是写、命令字(Command Code)、数据(Data),然后将控制寄存器开启(start)。如果所有的参数都正确,则在写操作完成数据的传送时,或者读操作完成数据的接收时,I2C主控制器就会产生一个SMI#信号或者产生中断。 I2C总线支持7种操作方式快速命令(Quick Command)、发送字节、接收字节、写字节、读字节、过程调用和数据块的读/写。下边列出了其中最常用的几种操作方式1)从当前地址读一个字节(Byte)/字(Word)属于I2C辅助设备的存储器内部有一个地址指针计数器用于记录当前的访问地址的指针,每一次存储器读/写操作之后,该指针就会自动移动并保存下来。接收字节就能实现简单地获取当前指针所指地址位存放的数据。该操作在双向数据线SDA上的数据流如图2所示。存储器从当前地址读取一个数据块操作,也就是读取一个字的操作相对于读取一个字节操作而言,其不同之处在于传输一个字节的数据后不发送STOP命令,而是继续读取下一个字节的数据,直到读取完所有的数据,再发送STOP命令,操作数据流如图6所示。 2)向当前地址写一个字节写一个字节与读一个字节的协议很相似,唯一的不同就是数据的传送方向读一个字节的数据是从I2C辅助设备传向I2C主控制器;而写一个字节的数据是从I2C主控制器传向I2C辅助设备。该操作在双向数据线SDA上的数据流与图2相似,只是将图2的第一个字节的第8位改为“0”。 3)向存储器的指定地址写一个字节/字该命令格式要求首先传送一个I2C辅助设备的地址,并在命令字的最后一位标明是一个写操作,等待I2C辅助设备响应,然后传送长度为一个字节的数据地址(Word Address)和要写入的那一个字节的值,后面再发送一个STOP命令。该操作在双向数据线SDA上的数据流如图3所示。写入一个字(buffer写)的操作相对于写一个字节(字节写)操作而言,其不同之处在于传输一个字节的数据后不发送STOP命令,而是继续写入下一个字节的数据,直到写完所有的数据,再发送STOP命令,操作数据流如图4所示。 4)从存储器的指定地址读一个字节/字读操作与写操作不太一样,要读取一个指定地址,必须先用写命令告诉存储器要读取的地址,然后再执行读操作,接收到字节后再发送STOP命令,操作的数据流如图5所示。如果想从指定地址读取一个字的数据,STOP命令之前的操作都不变,只是在接收到第一个字节后,并不发送STOP命令,而是再读取一个字节,直到接收所有的数据,才发送STOP命令。 目前,采用10位寻址模式的I2C总线为辅助设备提供了10位地址线,最多只能访问1K字节的物理空间。随着I2C总线应用的增加,对存储器的空间也提出了更大的要求,目前市面上已经有很多存储空间大于1K字节的存储器,而由于其数据的地址位已经超过了10位,因此用正常的I2C总线操作流程已经不能正常完成数据的随机访问。
技术实现思路
鉴于上述,本专利技术要解决采用10位寻址模式的I2C控制器因寻址空间不足而无法寻址存储空间大于1K字节的存储设备的技术问题,以提高系统的存储空间,为系统提供更强大的功能。 为了解决上述技术问题,本专利技术提出一种采用10位寻址模式的I2C控制器访问大容量存储器的方法,其中上述I2C控制器从大容量存储器中随机读取数据的操作至少包括以下步骤步骤1,I2C控制器发送一个开始(start)信号;步骤2,I2C控制器向大容量存储器发送写操作命令,并等待其回传ACK;步骤3,收到ACK后,I2C控制器向大容量存储器发送上述数据的地址的高8位,并等待其回传ACK;步骤4,收到ACK后,I2C控制器向大容量存储器发送上述数据的地址的低8位,并等待其回传ACK; 步骤5,收到ACK后,I2C控制器再发送一个start信号;步骤6,I2C控制器向大容量存储器发送读操作命令,并等待其回传ACK;步骤7,收到ACK后,I2C控制器从大容量存储器中读取上述数据的一个字节,并等待其回传ACK;步骤7′,如果读取的数据大小为一个字节,则直接转到步骤8;如果读取的数据大于一个字节,重复步骤7,直到指定长度的数据全部读取完毕,转到步骤8;步骤8,收到ACK后,发送停止(stop)命令。 其中,步骤2中的写操作命令为一个字节,其第1-7位用于决定这次操作所选择的从控制器,也就是上述大容量存储器的地址,其第8位为0,表示用于决定这次操作是写操作;步骤6中的读操作命令为一个字节,其第1-7位用于决定这次操作所选择的从控制器,也就是上述大容量存储器的地址,其第8位为1,表示用于决定这次操作是读操作。 采用10位寻址模式的I2C控制器向大容量存储器写入随机读取数据的操作至少包括以下步骤步骤1,I2C控制器发送一个start信号;步骤2,I2C控制器向大容量存储器发送写操作命令,并等待其回传ACK;步骤3,收到ACK后,I2C控制器向大容量存储器发送将要写入上述数据的地址的高8位,并等待其回传ACK;步骤4,收到ACK后,I2C控制器向大容量存储器发送将要写入上述数据的地址的低8位,并等待其回传ACK;步骤5,收到ACK后,I2C控制器向大容量存储器发送需要写入的数据的一个字节,并等待其回传ACK;步骤5′,如果需要写入的数据的大小为一个字节,则直接转到步骤6;如果需要写入的数据大于一个字节,重复步骤5,直到指定长度的数据全部写入,转到步骤6;步骤6,收到ACK后,发送stop命令。 其中,步骤2中的写操作命令为一个字节,其第1-7位用于决定这次操作所选择本文档来自技高网
...

【技术保护点】
一种采用10位寻址模式的I2C控制器访问大容量存储器的方法,其特征是上述I2C控制器从大容量存储器中随机读取数据的操作至少包括以下步骤:步骤1,I2C控制器发送一个开始信号;步骤2,I2C控制器向大容量存储器发送写操作命令, 并等待其回传响应位; 步骤3,收到响应位后,I2C控制器向大容量存储器发送上述数据的地址的高8位,并等待其回传响应位;步骤4,收到响应位后,I2C控制器向大容量存储器发送上述数据的地址的低8位,并等待其回传响应位;步 骤5,收到响应位后,I2C控制器再发送一个开始信号;步骤6,I2C控制器向大容量存储器发送读操作命令,并等待其回传响应位;步骤7,收到响应位后,I2C控制器从大容量存储器中读取上述数据的一个字节,并等待其回传响应位; 步骤7′,如果读取的数据大小为一个字节,则直接转到步骤8;如果读取的数据大于一个字节,重复步骤7,直到指定长度的数据全部读取完毕,转到步骤8;步骤8,收到响应位后,发送停止命令。

【技术特征摘要】
的保护范围。权利要求1.一种采用10位寻址模式的I2C控制器访问大容量存储器的方法,其特征是上述I2C控制器从大容量存储器中随机读取数据的操作至少包括以下步骤步骤1,I2C控制器发送一个开始信号;步骤2,I2C控制器向大容量存储器发送写操作命令,并等待其回传响应位;步骤3,收到响应位后,I2C控制器向大容量存储器发送上述数据的地址的高8位,并等待其回传响应位;步骤4,收到响应位后,I2C控制器向大容量存储器发送上述数据的地址的低8位,并等待其回传响应位;步骤5,收到响应位后,I2C控制器再发送一个开始信号;步骤6,I2C控制器向大容量存储器发送读操作命令,并等待其回传响应位;步骤7,收到响应位后,I2C控制器从大容量存储器中读取上述数据的一个字节,并等待其回传响应位;步骤7′,如果读取的数据大小为一个字节,则直接转到步骤8;如果读取的数据大于一个字节,重复步骤7,直到指定长度的数据全部读取完毕,转到步骤8;步骤8,收到响应位后,发送停止命令。2.根据权利要求1所述的方法,其特征是步骤2中的写操作命令为一个字节,其第1-7位用于决定这次操作所选择的从控制器,也就是上述大容量存储器的地址,其第8位为0,表示用于决定这次操作是写操作。3.根据权利要求1所述的方法,其特征是步骤6中的读操作命令为一个字节...

【专利技术属性】
技术研发人员:郑其杉马彧杨波
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利