国产精品2022不卡在线观看|青草国产福利视频免费观看|亚洲天堂日韩在线|日日摸夜夜添夜夜添97|亚洲伊人久久大香线蕉av|午夜性爽快免费视频播放

聯(lián)系我們

銷(xiāo)售直撥
     025-85550202;
     025-85550520;


master@csch.com.cn

技術(shù)咨詢(xún):
     025-85550520

duan@csch.com.cn

售后服務(wù)專(zhuān)線(xiàn):

     15251851604    

wu_yuyang@csch.com.cn

傳 真:025-85550303


深圳市中霍電子技術(shù)有限公司
地址:深圳市龍華新區龍華街道牛地埔村美滿(mǎn)圓小區
聯(lián)系人:顏安軍/副總
Mobile:18038070895
E-mail: szyanaj@csch.com.cn  
 

芯片之I2C配置

I2C總線(xiàn)簡(jiǎn)介
首先按照慣例俗套的說(shuō)一下I2C總線(xiàn)的定義,I2C總線(xiàn)是由Philips公司開(kāi)發(fā)的一種簡(jiǎn)單、雙向二線(xiàn)制同步串行總線(xiàn)。它只需要兩根分別命名為SDA(串行數據線(xiàn))和SCL(串行時(shí)鐘線(xiàn))的信號線(xiàn)連接不同的器件即可傳輸信息。
I2C總線(xiàn)上的器件有主從之分,在嵌入式系統上的主器件一般是嵌入式主芯片(MCU),主器件負責啟動(dòng)、終止數據傳送,產(chǎn)生時(shí)鐘信號。從器件一般是外部設備,像小編所在行業(yè)的外部設備包括溫度傳感器、Tunner、HDMI等。
I2C主設備配置
了解了I2C總線(xiàn)的定義和基本原理后,我們怎樣做才能讓I2C總線(xiàn)正常工作呢?
首先,我們得配置I2C(本文以Hi3798CV200芯片為例)。
步驟一:硬件確認,確認連接MCU和外設用的那一組I2C通道。Hi3798CV200 芯片集成5個(gè)I2C控制器(一般命名為I2C0~I2C4),實(shí)現標準I2C主設備功能,可完成對I2C總線(xiàn)上的從設備的數據發(fā)送和接收,這里我們確認的是I2C1。
步驟二:確認硬件管腳復用情況。因為在嵌入芯片中,絕大多數管腳都是復用的。我們首先查一下芯片datasheet,看該管腳是否是復用的。從下圖可以看出來(lái)該I2C管腳是復用的:

步驟三:配置復用寄存器。從步驟二可以看出,我們使用的I2C1管腳是有復用的,所以我們要配置復用寄存器使當前管腳發(fā)揮I2C的功能。查看datasheet得知,控制該組I2C的復用寄存器分別是ioshare_56和ioshare_57。
我們可以按照下圖所示的將寄存器的低三位配置為010,即此管腳就是執行I2C1的數據線(xiàn)功能了。

同樣的方法配置ioshare_57。
配置完后我們將記錄配置信息相應的分區文件燒錄的開(kāi)發(fā)板中。在串口輸入如下命令可以查看I2C的信息:
Hi3798CV200:/ # cat /proc/hisi/msp/i2c 
---------Hisilicon Standard I2C Info---------
No. Rate
0 0
1 100000
2 0
3 0
4 0
此信息顯示I2C1,速率100K。
I2C總線(xiàn)調試
前面一節我們配置了I2C主器件,接下來(lái)就是調試該總線(xiàn),調試之前需要確認從設備在I2C總線(xiàn)上的地址、該設備內部寄存器地址以及寄存器地址長(cháng)度。
小編這里用到的是一款溫度傳感器。其設備地址為0x90,內部寄存器地址是0x0,寄存器地址長(cháng)度為1個(gè)字節。
海思芯片I2C調試起來(lái)很方便,因為它自帶了I2C控制命令,包含了讀寫(xiě)等操作,省去了自己寫(xiě)調試代碼。
串口命令行下輸入i2c_read,就會(huì )告訴你讀取操作使用方法:
Hi3798CV200:/ # i2c_read 
Usage: i2c_read i2c_channel device_addr register_addr register_addr_len read_bytes_number
參數含義說(shuō)明:
  • i2c_channel:I2C通道
  • device_addr:I2C設備地址。
  • register_addr: i2c設備內部寄存器地址。
  • register_addr_len: i2c設備內部寄存器地址長(cháng)度。
  • read_bytes_number:所需要讀取的數據長(cháng)度。
于是我們就可以按照上面的方法調試I2C總線(xiàn)了,命令行下輸入:
Hi3798CV200:/ # i2c_read 1 0x90 0 2 2
得到以下結果:

從上圖看出來(lái),我們執行是錯誤的,那么是不是I2C沒(méi)有配置好呢?別急,繼續檢查一遍我們輸入的命令,發(fā)現第4個(gè)參數寫(xiě)成了2,而前面我們介紹的是寄存器地址長(cháng)度為1個(gè)字節。修改命令:
Hi3798CV200:/ # i2c_read 1 0x90 0 1 2
查看執行結果:

成功啦,成功讀取到2個(gè)字節內容的數據。到這里,說(shuō)明我們對I2C的配置是正確的!
I2C總線(xiàn)的工作狀態(tài)
1、I2C開(kāi)始和停止工作
開(kāi)始:當SCL是高電平時(shí),SDA從高電平跳變到低電平,則I2C總線(xiàn)開(kāi)始工作
結束:當SCL是高電平時(shí),SDA從低電平跳變到高電平,則I2C總線(xiàn)結束工作,如下圖:

2、開(kāi)始狀態(tài)后緊跟著(zhù)主器件會(huì )發(fā)送一個(gè)字節的數據,這個(gè)字節數據由7bit從器件地址和1bit讀寫(xiě)位組成。
3、當從器件收到總線(xiàn)上的地址并匹配,發(fā)現與自己地址相同時(shí),則在第9個(gè)時(shí)鐘周期回復一個(gè)應答反饋信號。
應答信號如下圖:

4、當主器件收到從器件的應答信號后繼續發(fā)送后面的數據。從器件收到數據后發(fā)送ACK則表示繼續傳輸,發(fā)送NACK則傳輸結束。
留在后面的作業(yè)
小編用示波器抓取了一張I2C總線(xiàn)的波形圖,下圖黃色為SCL時(shí)鐘信號,綠色為SDA數據信號。

Copyright@ 2003-2025  南京信瑞譜傳感技術(shù)有限公司版權所有     

熱門(mén)導航電壓傳感器  霍爾電流傳感器  互感器  高精度電流傳感器  直流漏電流傳感器  直流電流變送器  霍爾傳感器工作原理 傳感器資料下載

           

        在線(xiàn)購買(mǎi)-直達淘寶店

     具體購買(mǎi)產(chǎn)品請聯(lián)系淘寶客服

(淘寶店拍買(mǎi)請聯(lián)系淘寶在線(xiàn)服務(wù),告知型號或在線(xiàn)經(jīng)理的姓名即可)

国产精品2022不卡在线观看|青草国产福利视频免费观看|亚洲天堂日韩在线|日日摸夜夜添夜夜添97|亚洲伊人久久大香线蕉av|午夜性爽快免费视频播放