1 Rockchip I2C功能特點
I2C(Inter-Integrated Circuit)總線是由PHILIPS 公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設備; I2C總線控制器支持主模式作為橋之間 AMBA 協(xié)議和泛型I2C 總線系統(tǒng)。Rockchip I2C 控制器支持下列功能︰
項目兼容 I2C 總線
支持主模式下的 I2C 總線
軟件可編程時鐘頻率和傳輸速率高達 1000Kbit/秒
支持 7 位和 10 位尋址模式
中斷或輪詢驅動多個字節(jié)數據傳輸
時鐘拉伸和等待狀態(tài)
2 DTS節(jié)點配置
DTS節(jié)點配置可參考kernel文件: Documentation/devicetree/bindings/i2c/i2c-rk3x.txt 需要配置項:
1. I2C速率配置: 一般配置400k,100k(默認,可不填),200k,1000k;
400k示例: clock-frequency = <400000>;
2. i2c_clk上升沿時間, 下降沿時間;
當需要I2C速率配置超過100k時,i2c_clk 上升沿和下降沿時間一定需要通過示波器測量得出;因為I2C 協(xié)議標準里面對上升沿和下降沿時間有規(guī)定要求特別是上升沿時間,如果超過了協(xié)議規(guī)定的最大值,則I2C通訊可能失敗,下面是協(xié)議里面規(guī)定的最大最小值范圍
上升沿Tr,下降沿Tf,分別取30%~70%的波形時間:
3. 以上兩項不配置則將默認按上升沿和下降沿的max值來計算,得到的CLK速度將近90k。 默認使用100k的max值是1000ns,基本上大多數硬件都是符合的,所以可以不填,如果要求不高的話。
4. I2C1+es8316 codec 示例說明,需要I2C時鐘400k,示波器所測得Tr=164ns,Tf=15ns:
&i2c1 { status = "okay"; i2c-scl-rising-time-ns = <164>; i2c-scl-falling-time-ns = <15>; clock-frequency = <400000>; es8316: es8316@10 { #sound-dai-cells = <0>; compatible = "everest,es8316"; reg = <0x10>; clocks = <&cru SCLK_I2S_8CH_OUT>;
clock-names = "mclk"; spk-con-gpio = <&gpio0 11 GPIO_ACTIVE_HIGH>; hp-det-gpio = <&gpio4 28 GPIO_ACTIVE_LOW>; }; };
|