2024年12月5日 星期四

USB i2c dongle 一點小筆記

以下以 ubuntu linux 平臺下應用為主. 使用前個人建議給自己的帳號加入兩個群組:

# sudo usermod -aG dialout ${USER}
# sudo usermod -aG i2c ${USER}

方便以一般使用者身份操作.

目前買過的幾種:

  1. WCH CH341: 市面上最多也最便宜, i2c  / spi 要另外掛 driver. 我目前用 flank 的版本, 不過 SPI 要另外寫 script 開啟. ch341 i2c 本身有不等待 ACK 回應的問題, 會有些相容性問題, 這點要特別注意.
  2. WCH CH347: 目前簡單測試是還沒碰到問題, driver 我用 aystarik的版本, 這個是我從 aystarik的版本再修改過的版本, ACK 回應還沒測試, 後面補上..
  3. FTDI FT232H: 這個要用它的 i2c 要透過它的 MPSSE library, 但看來還需要 programming GPIO 的 EEPROM 資料, 目前不會動. python i2c 據說可以繞過沒 EEPROM 資料直接操作, 懶的理會....
  4. SiliconLab CP2112: 這個跟 FT232H 一樣沒原生 i2c master 的 kernel module 可用, 都要透過它自家的 library 操作, 看到這裡就直接丟在一邊沒繼續再試.
  5. STM32F103C8T6 i2c-tiny-usb: 這個是眾多寫成 i2c-tiny-usb 的裝置之一, code在這裡, 不過這個我用 C6T6 跑不起來, 一定要 C8T6. 
目前拿 stm32 寫的 i2c-tiny-usb 先用, 缺點只是反應稍慢.

i2c-tiny-usb 還有強者寫出 attiny45/85 的版本, attiny 跟 STM32f1 的差別在 attiny 本身沒有 h/w USB, 這個是拿 GPIO 模擬的, 所以 i2c master clock 預設為 50Khz, 然後我沒用過這個版本, 無從報告好壞.


沒有留言: