[发明专利]基于I2C接口快速读取多个MEMS传感器数据的模块和方法有效
申请号: | 201610003029.4 | 申请日: | 2016-01-04 |
公开(公告)号: | CN105677598B | 公开(公告)日: | 2018-03-23 |
发明(设计)人: | 黄璐;何文涛;冯华星;蔺晓龙;翟昆朋;王浩;殷明 | 申请(专利权)人: | 中国科学院嘉兴微电子与系统工程中心 |
主分类号: | G06F13/34 | 分类号: | G06F13/34;G06F13/42 |
代理公司: | 上海旭诚知识产权代理有限公司31220 | 代理人: | 郑立 |
地址: | 314006 浙江省嘉兴*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 i2c 接口 快速 读取 mems 传感器 数据 模块 方法 | ||
技术领域
本发明涉及数据通信技术领域,尤其涉及一种基于I2C接口快速读取多个MEMS传感器数据的模块和方法,应用于北斗导航系统中的大规模串口数据通信。
背景技术
I2C总线是一个多主机的总线,使用串行数据线(SDA)和串行时钟线(SCL)在总线上传递信息。每个器件都有一个唯一的识别地址,而且都可以作为一个发送器或接收器。当连接在I2C总线上的多个主机器件,同时传输数据时,通过仲裁来避免混乱。SDA和SCL都是双向线路,通过一个电流源或上拉电阻连接到电源电压。器件输出级必须是漏极开路或集电极开路,当总线空闲时,两条线路处于高电平,执行线与的功能。I2C总线支持的速率有两种:最大100kbit/s的标准模式,最大400kbit/s的快速模式。连接到总线的器件数量只由总线电容是400pF的限制决定。
I2C的标准时序中要遵循3个控制协议:
START:当SCL线保持高电平时SDA线从高电平拉至低电平,代表数据的传输开始。
STOP:当SCL线保持高电平时SDA线从低电平拉至高电平,代表数据的传输结束。
ACK:每当接收方收到一个BYTE有效数据时,必须拉低SDA线同时发送方释放对SDA线的控制,代表接收方收到数据的回应。
一个传统的I2C主机接口读取数据的工作流程参见图1。
步骤100写入START产生控制,在总线上产生START信号。
步骤200写入传输数据(一般是器件地址),通过总线将数据和时钟控制发送给从机。
步骤210等待从机的ACK。如果收到ACK进入步骤300,否则结束流程。
步骤300继续写入传输数据(一般是寄存器地址),通过总线将数据和时钟控制发送给从机。
步骤310等待器件的ACK。如果收到ACK进入步骤400,否则结束流程。
步骤400再次写入START信号和从机器件地址,控制从机进入读状态。
步骤410等待器件的ACK。如果收到ACK进入步骤500,否则结束流程。
步骤500写入dummy数据在总线上产生时钟并同时通过总线读取从机发送的数据。
步骤510如果读取数据完成,发送NACK信号,进入步骤600。如果还有数据要连续读取,发送ACK信号,返回步骤500。
步骤600写入STOP产生控制,在总线上产生STOP信号。
步骤700结束传输流程。
上述方法的优点在于所有控制信号和数据传输的步骤都是分开进行的,这样当主/从机忙时就可以通过控制和回应信号的实时变化进行判断,选择下一步操作,但这也就意味着每次传输的开始,回应,结束都需要主控CPU的参与,这在导航系统这种大规模数据处理的应用中会频繁的打断CPU操作,非常浪费系统资源。
因此,本领域的技术人员致力于开发一种基于I2C接口快速读取多个MEMS传感器数据的模块和方法,针对这一问题对I2C主机模块进行了改进,添加了DMA(直接内存存取)功能,可以跳过CPU进行大批量的后台数据存取。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是每次传输的开始,回应,结束都需要主控CPU的参与,这在导航系统这种大规模数据处理的应用中会频繁的打断CPU操作,非常浪费系统资源。
本发明为基于I2C接口快速读取多个MEMS传感器数据的实现方法。可以在不打断CPU操作的前提下自主读取已知的多个从机的数据并放入存储单元供CPU读取使用。
本发明为一种添加了DMA功能的I2C主机模块,结构参见图2,其包括:
DMA(直接内存存取)控制单元,通过CPU设置好所有的控制信号,在I2C给予请求信号时从内部存储单元依次将数据读取出来送给I2C主机,同时将I2C主机接收到的数据依次存入内部存储单元;
发送数据FIFO单元,需要发送的数据可以在这里暂存,等待I2C主机读取;
接收数据FIFO单元,接收到的数据可以在这里暂存,等待DMA读取;
I2C总线时序控制单元,根据DMA传送来的数据产生所有的控制及数据信号,并将接收到的数据存下。
本发明又提供了快速读取多个传感器数据的实现方法,其步骤如下:
S0)提供DMA控制单元、发送数据FIFO单元、接收数据FIFO单元、I2C总线时序控制单元和内部存储单元;
S1)根据所有需要访问的传感器器件地址,数据个数,准备好相应的数据放入内部存储;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院嘉兴微电子与系统工程中心,未经中国科学院嘉兴微电子与系统工程中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610003029.4/2.html,转载请声明来源钻瓜专利网。