在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>ArmSom--I2C開發(fā)指南

ArmSom--I2C開發(fā)指南

2023-10-30 | pdf | 0.87 MB | 次下載 | 免費(fèi)

資料介紹

此鏈接為預(yù)覽,僅您自己可見知道

1. 簡(jiǎn)介

RK3588從入門到精通

本?介紹在rockchip平臺(tái)下如何配置i2c接口的方法并且添加調(diào)試驗(yàn)證i2c外設(shè)的例子

開發(fā)板:ArmSoM-W3

Kernel:5.10.160

OS:Debian11

 

 

2. i2c接口概述

i2c 總線控制器通過串行數(shù)據(jù)(SDA)線和串行時(shí)鐘 (SCL)線在連接到總線的器件間傳遞信息。

i2c總線一些特征:

只有兩根線分別是串行數(shù)據(jù)線(SDA),串行時(shí)鐘線(SCL)。

每個(gè)器件都有一個(gè)唯一的地址識(shí)別

使用串行8位雙向數(shù)據(jù)傳輸方式。

可以使用普通GPIO口模擬I2C,但要需要將GPIO配置成OD模式(開漏模式)

 

3. 芯片i2c資源

RK3588旗艦芯片上可使用的I2C有9組,ArmSoM SOM-3588-LGA核心板采用LGA 506引腳封裝方式將I2C資源全部引出,ArmSoM-W3板子上接有部分i2c外設(shè)以及40PIN資源如下:

ArmSom-W3_I2C_RTC

 

ArmSom-W3_I2C_40PIN

 

 

 

4. i2c使用

RK3588使用I2C 的驅(qū)動(dòng)是i2c-rk3x.c,參考文件 kernel/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt。

 

4.1 DTS配置

i2c資源使用只需要在設(shè)備樹下進(jìn)行配置,例如上述RTC芯片的配置如下:

&i2c6 {
status = "okay";
//i2c-scl-rising-time-ns = <265>;
//i2c-scl-falling-time-ns = <11>;
//clock-frequency = <400000>;

hym8563: hym8563@51 {
 compatible = "haoyu,hym8563";
 reg = <0x51>;
 #clock-cells = <0>;
 clock-frequency = <32768>;
 clock-output-names = "hym8563";
 pinctrl-names = "default";
 pinctrl-0 = <&rtc_int>;
 interrupt-parent = <&gpio0>;
 interrupts = ;
};
};

參數(shù)說明:

clock-frequency: 默認(rèn) frequency 為 100k 可不配置,其它 I2C 頻率需要配置,最大可配置頻率由i2c-scl-rising-time-ns 決定;例如配置 400k,clock-frequency=<400000>。

i2c-scl-rising-time-ns:SCL 上升沿時(shí)間由硬件決定,例如測(cè)得 SCL 上升沿 365ns,i2c-scl-rising-time-ns=<365>。(默認(rèn)可以不配置)

i2c-scl-falling-time-ns: SCL 下降沿時(shí)間, 一般不變, 等同于 i2c-sda-falling-time-ns。(默認(rèn)也可以不配置)

在使用i2c設(shè)備樹配置的時(shí)候,有些方面需要注意:

1.上述rtc使用的引腳是I2C6_SDA_M0和I2C6_SCL_M0,硬件接口有些可以使用I2C6_SDA_M1,或者I2C6_SDA_M3,要修改默認(rèn)配置

i2c6: i2c@fec80000 {
 compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
 reg = <0x0 0xfec80000 0x0 0x1000>;
 clocks = <&cru 146>, <&cru 138>;
 clock-names = "i2c", "pclk";
 interrupts = <0 323 4>;
 pinctrl-names = "default";
 pinctrl-0 = <&i2c6m0_xfer>;//&i2c6m1_xfer、&i2c6m3_xfer
 #address-cells = <1>;
 #size-cells = <0>;
 status = "disabled";
};

i2c地址主要由7bit的二進(jìn)制數(shù)值組成,最低位是讀寫標(biāo)志位,0表示寫,1表示讀

比如:讀,0A3H   寫,0A2H 在linux驅(qū)動(dòng)中要取這個(gè)ic設(shè)備的從設(shè)備地址,就是0xA3或者0xA2右移一位得到

 

4.2 GPIO 模擬 I2C

I2C 用 GPIO 模擬,內(nèi)核已經(jīng)有實(shí)現(xiàn),請(qǐng)參考文檔:Documentation/devicetree/bindings/i2c/i2c-gpio.txt 下面是使用的例子,dts 下配置 I2C 節(jié)點(diǎn)。

i2c@4 {
   compatible = "i2c-gpio";
   gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>, /* sda */
   <&gpio5 8 GPIO_ACTIVE_HIGH>; /* scl */
   i2c-gpio,delay-us = <2>; /* ~100 kHz */
   #address-cells = <1>;
   #size-cells = <0>;
   pinctrl-names = "default";
   pinctrl-0 = <&i2c4_gpio>;
   status = "okay";
   
   gt9xx: gt9xx@14 {
       compatible = "goodix,gt9xx";
       reg = <0x14>;
       touch-gpio = <&gpio5 11 IRQ_TYPE_LEVEL_LOW>;
       reset-gpio = <&gpio5 10 GPIO_ACTIVE_HIGH>;
       max-x = <1200>;
       max-y = <1900>;
       tp-size = <911>;
       tp-supply = <&vcc_tp>;
       status = "okay";
     };
};

一般不推薦使用 GPIO,效率不高。

 

5. 檢查i2c設(shè)備

5.1 IIC 第三方工具

I2C tool 是一個(gè)開源工具,需自行下載進(jìn)行交叉編譯,代碼下載地址: https://www.kernel.org/pub/software/utils/i2c-tools/或者 編譯后會(huì)生成 i2cdetect,i2cdump,i2cset,i2cget 等工具,可以直接在命令行上調(diào)試使用,I2C tool 是開源的,編譯與使用參考里面的 README 與幫助說明。

ArmSoM-W3板子對(duì)應(yīng)的出廠固件已經(jīng)在系統(tǒng)下集成了這個(gè)工具,可以直接使用,比如掃描I2C總線上的RTC設(shè)備:

root@linaro-alip:~# i2cdetect -y 6
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --                        
root@linaro-alip:~#

掃描到對(duì)應(yīng)的RTC芯片的I2C地址為0X51

常用的命令還有以下幾個(gè)。

#檢測(cè)當(dāng)前系統(tǒng)有幾組i2c總線
i2cdetect -l

#查看i2c-0接口上的設(shè)備
i2cdetect -a 6

#讀取指定設(shè)備的全部寄存器的值。
i2cdump  -f -y 6 0x51

#讀取指定IIC設(shè)備的某個(gè)寄存器的值,如下讀取地址為0x51器件中的0x01寄存器值。
i2cget -f -y 6 0x51 0x01

#寫入指定IIC設(shè)備的某個(gè)寄存器的值,如下設(shè)置地址為0x51器件中的0x01寄存器值為0x1a;
i2cset -f -y 3 0x51 0x01 0x1a

 

5.2 RTC使用

Linux系統(tǒng)下包含兩個(gè)時(shí)間:系統(tǒng)時(shí)間和RTC時(shí)間。

linux命令中的date和time等命令都是用來設(shè)置系統(tǒng)時(shí)間的,而hwclock命令是用來設(shè)置和讀寫RTC時(shí)間的。

root@linaro-alip:~# hwclock -r
2018-05-24 16:38:13.115443+00:00 //查看硬件時(shí)間
root@linaro-alip:~# date
2018年 05月 24日 星期四 16:38:21 UTC //查看系統(tǒng)時(shí)間
root@linaro-alip:~# date -s "2023-10-24 11:45:00"
2023年 10月 24日 星期二 11:45:00 UTC //重新設(shè)置系統(tǒng)時(shí)間
root@linaro-alip:~# hwclock -w //同步系統(tǒng)時(shí)間到rtc上,掉電不丟失時(shí)間
root@linaro-alip:~# hwclock -r
2023-10-24 11:45:17.694727+00:00

 

5.3 I2C 常見問題

如果調(diào)用 I2C 傳輸接口返回值為 -6(-ENXIO)時(shí)候,表示為 NACK 錯(cuò)誤,即對(duì)方設(shè)備無應(yīng)答響應(yīng)

ArmSom-W3_I2C_ERROR

 

這種情況一般為外設(shè)的問題,常見的有以下幾種情況:

I2C 地址錯(cuò)誤;

I2C slave 設(shè)備處于不正常工作狀態(tài),比如沒有上電,錯(cuò)誤的上電時(shí)序以及設(shè)備異常等;

I2C 時(shí)序不符合 slave 設(shè)備所要求也會(huì)產(chǎn)生 NACK 信號(hào),比如 slave 設(shè)備需要的是 stop 信號(hào),而不是

repeat start 信號(hào)的時(shí)候;

I2C 總線受外部干擾導(dǎo)致的,用示波器測(cè)量可以看到是一個(gè) ACK 波形。

當(dāng)出現(xiàn) I2C 的 log 類似:"timeout, ipd: 0x80, state: 1"時(shí),看到 ipd 為 0x80 打印,可以說明當(dāng)前 SCL 被 slave 拉住,要判斷被哪個(gè) slave 拉?。? 一是排除法,適用于外設(shè)不多的情況,而且復(fù)現(xiàn)概率高;  二是需要修改硬件,在 SCL 總線上串入電阻,通過電阻兩端產(chǎn)生的壓差來確定,電壓更低的那端 外設(shè)為拉低的 slave,電阻的選取以不影響 I2C 傳輸且可以看出壓差為標(biāo)準(zhǔn),一般上拉電阻的 1/20 以上都可以,如果是 host 拉低也可以看出。 常見的情況是 sda 被拉低,證明是誰拉低的。

有時(shí)候i2c初始化有問題時(shí)速率可以降低看有沒有改善。遇到的 I2C 問題最好的辦法是抓取 I2C 出錯(cuò)時(shí)候的波形,通過波形來分析 I2C 問 題,I2C 的波形非常有用,大部分的問題都能分析出來。

 

6. 讀取eeprom數(shù)據(jù)實(shí)驗(yàn)

本章介紹通過IIC接口讀寫eeprom(AT24C08)的數(shù)據(jù)。 本次實(shí)驗(yàn)會(huì)以i2c-7做為示例,接其他i2c引腳操作也是一樣的 當(dāng)然,并不是只能用這個(gè)eeprom這個(gè)模組,這只是做個(gè)簡(jiǎn)單的示例,如果您沒有這個(gè)模塊,可以通過學(xué)習(xí)操作eeprom的方式操作您想要操作的i2c設(shè)備。

6.1 硬件連接

將eeprom接入到ArmSoM-W3開發(fā)板的i2c-7的總線上,如下圖所示

ArmSom-W3_I2C_CONNECT

 

板子eeprom3.3V(1)VCCGND(39)GNDSCL(5)SCLSDA(3)SCA

 

6.2 軟件配置

在文件kernel\arch\arm64\boot\dts\rockchip\rk3588-armsom-w3.dts文件下添加下面代碼:

&i2c7 {
pinctrl-names = "default";
pinctrl-0 = <&i2c7m3_xfer>;
clock-frequency = <100000>;
status = "okay";
eeprom@50 {
               status = "okay";
   compatible = "at,24c08";
               reg = <0x50>;
       };
};

eeprom驅(qū)動(dòng)在drivers/misc/eeprom/下面,如果是其他i2c接口芯片在kernel目錄下沒有驅(qū)動(dòng),可以去對(duì)找對(duì)應(yīng)芯片廠商提供驅(qū)動(dòng)文件

ArmSom-W3_I2C_build

 

將eeprom的驅(qū)動(dòng)編譯進(jìn)內(nèi)核測(cè)試

 

6.3 讀寫數(shù)據(jù)測(cè)試

找到模塊位置:

root@linaro-alip:~# find / -name "at24"
/sys/bus/i2c/drivers/at24

 

讀eeprom內(nèi)容:

ArmSom-W3_I2C_read

 

寫eeprom內(nèi)容:

ArmSom-W3_I2C_write

 

 

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

  • --
    文章
  • --
    閱讀
  • --
    粉絲

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 欧美日a| 高清国产亚洲va精品| www.男人| 操伊人| 一级做a爰片久久毛片免费看| 在线成人免费观看国产精品| 亚洲第一福利网站| 国产亚洲精品成人a在线| 久久久国产乱子伦精品| 久久久久国产成人精品亚洲午夜 | 黄色一级视频网| 牛牛碰在线| aⅴ一区二区三区| 激情综合五月婷婷| 国产精品推荐天天看天天爽| 曰本福利写真片视频在线| 久久国产乱子伦精品免费强| 久久在草| 亚洲成网777777国产精品| 国产精品视频一区二区三区| 成人午夜在线观看国产| 午夜爽爽| 午夜日批| 日本aaaaa毛片在线视频| 免费的毛片| 久久久午夜| 天堂在线看| 国产三级视频| 色爱区综合激月婷婷激情五月| 四虎精品久久| 午夜干b| xxxx性xxxx| 国产黄色大片又色又爽| qvod高清在线成人观看| 人人射人人射| 久久久久国产免费| 五月婷婷激情视频| 五月天亚洲综合| 在线电影你懂得| 又粗又硬又大久久久| 免费精品美女久久久久久久久久|