I2C匯流排傳輸和AP1632C感測器模組

2021-10-05 01:13:48 字數 2848 閱讀 4931

1、i2c匯流排傳輸,顧名思義是用來作為資料傳輸用的。

2、是由philips設計的。

3、只有兩根線,一根scl序列時鐘線,一根sda序列資料線。

4、i2c匯流排上可掛多個從機裝置,每個掛在i2c匯流排上的從機都有唯一的裝置位址,主機靠裝置位址來區分從機。

5、i2c匯流排必須接上拉電阻,一般接4.7k的上拉電阻。

6、硬體結構圖如下:

當scl處在高電平,sda出現下降沿時,便是為起始位。

當scl處在高電平,sda出現上公升沿時,便是為停止位。

當scl處於高電平時,sda上的資料要保持穩定,也就是說sda要提前準備好資料,當scl處於高電平時才能保持穩定。當scl低電平時,sda才能改變資料。

i2c主機每傳送8位資料(不包括起始位和停止位)就會將sda轉為輸入,下乙個時鐘訊號就會給從機使用,並且等待從機將sda拉低,這也就是應答(ack)訊號。有了ack才表示通訊成功。

i2c的操作就兩個,主機向從機的某個暫存器寫資料,或者主機讀取從機某個暫存器的資料。首先寫操作的時序是這樣的:

i.mx6u中一共有四個i2c介面,每個i2c介面都有iadr(i2c位址暫存器)、ifdr(i2c頻率分頻暫存器)、i2cr(i2c控制暫存器)、i2sr(i2c狀態暫存器)以及i2dr(i2c資料暫存器)。

bit描述

bit[7:1]

為從機的裝置位址

bit描述

bit[5:0]

ic值,ic具體對應的分頻值如下表

bit描述

bit[7]

i2c使能位,1:使能;0:停止i2c,但是暫存器還是可以被訪問

bit[6]

i2c中斷使能位,1:使能;0:關閉

bit[5]

主從模式選擇位,1:主模式;0:從模式

bit[4]

傳送/接收模式選擇位,1:傳送;0:接收

bit[3]

傳輸應答使能位,1::傳送no ack訊號;0:傳送ack訊號

bit[2]

重新開始訊號,讀的時候的第三步就需要產生乙個重新開始的訊號。1:產生乙個重新開始的訊號;0:不產生重新開始的訊號

bit描述

bit[7]

資料傳輸狀態位,1:乙個位元組的資料已經傳輸完畢;0:資料正在傳輸

bit[6]

當為 1 的時候表示 i2c 位址,也就是 i2cx_iadr 暫存器中的位址是從裝置位址

bit[5]

i2c匯流排忙標誌位,1:匯流排忙;0:匯流排空閒

bit[4]

仲裁丟失位,為 1 的時候表示發生仲裁丟失。

bit[2]

從機讀寫狀態位,當 i2c 作為從機的時候使用,此位用來表明主機傳送給從機的是讀還是寫命令。為 0 的時候表示主機要向從機寫資料,為 1 的時候表示主機要從從機讀取資料

bit[1]

i2c 中斷掛起標誌位,當為 1 的時候表示有中斷掛起,此位需要軟體清零

bit[0]

應答訊號標誌位,為 0 的時候表示接收到 ack 應答訊號,為 1 的話表示沒有檢測到 從機的ack 訊號

bit描述

bit[7:0]

儲存著最近接收到的一位元組資料或者是將要傳送的一位元組資料,傳送裝置位址市,前七位是裝置位址,最低位是讀寫方向,1是讀,0是寫。

ap3216c是乙個三合一環境感測器,支援環境光強度(als)、接近距離(ps)和紅外線強度(ir)這三個環境引數的檢測。該感測器可以通過 iic 介面與主控相連,並且支援中斷,ap3216c 的特點如下:

①、i2c 介面,快速模式下波特率可以到 400kbit/s

②、多種工作模式選擇:als、ps+ir、als+ps+ir、pd 等等。

③、內建溫度補償電路。

④、寬工作溫度範圍(-30°c ~ +80°c)。

⑤、超小封裝,4.1mm x 2.4mm x 1.35mm

⑥、環境光感測器具有 16 位解析度。

⑦、接近感測器和紅外感測器具有 10 位解析度

ap3216 的裝置位址為 0x1e,我們需要用到的暫存器位址以及對應的位如下:

這一步是給i.mx6u的i2c這個外設初始化時鐘和復用io的。

1、主要就是初始化i2fr這個分頻暫存器,由於i2c匯流排傳輸速率在100kbit/s到400kbit/s,所以配置出來的取樣率也應該在這之間。

2、開始訊號的產生:i.mx6ull中將i2c控制器配置在主機傳送模式下後,匯流排空閒時,把裝置位址和讀寫操作這8bit資料寫進i2dr中時就會同步產生start訊號。

3、停止訊號的產生:將i2cr暫存器的bit[5:3]都清零 ,並且等待匯流排空閒,這麼乙個過程就時停止訊號的產生。當讀資料的時候,讀最後乙個位元組之前得先傳送乙個no ack訊號給從機。

1、對應的io復用和電氣屬性配置

2、初始化時鐘訊號(在i2c控制器中中配置)

3、復位

4、設定工作模式

5、開始和主機傳輸資料

SCCB 匯流排和I2C匯流排區別

sccb seriai camera controlbus 是簡化的i2c協議,sio l是序列時鐘輸入線,sio o是序列雙向資料線,分別相當於i2c協議的scl和sda。sccb的匯流排時序與i2c基本相同,它的響應訊號ack被稱為乙個傳輸單元的第9位,分為don t care和na。don t...

i2c匯流排時序

一心想踏入linux device driver的世界,想著i2c匯流排相對於usb等其他匯流排較為簡單,就以i2c作為切入點,希望可以逐步理解ldd的設計思想,並能理解其裝置模型的概念。在此對近期於i2c匯流排及驅動原始碼的理解做備忘,以免徒勞。平台友善之臂s70 tiny6410 cpusams...

I2C匯流排死鎖

原文 現象 最近發現訪問i2c裝置時,主裝置復位可能會引起i2c死鎖,表現為scl為高,sda一直為低,後發現是從裝置拉死i2c匯流排,從裝置斷電之後,sda變高,上電後通訊正常。後來通過拉低scl訊號線,sda就會自動變成高電平,i2c匯流排恢復。原因 在正常情況下,i2c匯流排協議能夠保證匯流排...