[發明專利]基于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.szxzyx.cn/pat/books/201610003029.4/2.html,轉載請聲明來源鉆瓜專利網。





