2023年12月22日 星期五

ASUS Tinker Board 2S - Android 11- Change I2C speed (clock-frequency)

  ASUS Tinker Board 2S - Android 11- Change I2C speed (clock-frequency)

這方法只適用於自行編譯Android 11 source code方式

如要使用官網發佈之Android 11 Image file, 請使用官網論壇之方法.

https://tinker-board.asus.com/forum/index.php?/topic/15458-i2c-speed/&tab=comments#comment-16920


Step 1:

 建議先從乾淨下載的 Android 11 source code 進行測試

下載方式如下

  https://snoopymemory.blogspot.com/2023/10/asus-tinker-board-2s-1.html

 repo sync 完成後, 進行下列修改

Step 2:

 開啟 /kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi

 取得 i2c6 及 i2c7 之記憶體位址, 如下  





Step 3:

  開啟 /kernel/arch/arm64/boot/dts/rockchip/rk3399-tinker-board-2.dtsi

 將原來的內容 修改為 

 clock-frequency = <400000>

   傳輸速率為 400 kbit/s

 clock-frequency = <100000>;  

   傳輸速率為 100 kbit/s


Step 3:

 從 docker-builder-run.sh 開始編譯程式

 https://snoopymemory.blogspot.com/2023/10/asus-tinker-board-2s-4.html


Step 4:

  使用 balenaEtcher 將 /rockdev/Image-WW_Tinker_Board_2/WW_Tinker_Board_2-raw.img 

  燒錄到SD Card中.

Step 5:

  使用燒錄好的 SD Card 於ASUS Tinker Board 2S開機
  使用內建的 Tinker Config APP 把 i2c6 及 i2c7 開啟

Step 6:

開啟windwos power shell

> adb devices

  220198250600582

> adb -s 220198250600582 shell

/* ff150000 在step 1 rk3399.dtsi 中查詢到的 */

$ od -bc /proc/device-tree/i2c\@ff150000/clock-frequency

0000000 000 006 032 200
         \0 006 032 200
0000004

$ od -bc /proc/device-tree/i2c\@ff160000/clock-frequency
0000000 000 001 206 240
         \0 001 206 240
0000004

I2C6 
/sys/devices/platform/ff150000.i2c/of_node/clock-frequency
BitRateHz dword: hex as 0x00061a80 => decimal 400000  400kHz
I2C7
/sys/devices/platform/ff160000.i2c/of_node/clock-frequency
BitRateHz dword: hex as 0x000186a0 => decimal 100000  100kHz  



下面是實際測試

先對 I2C6 讀取



再對 I2C7 讀取