2025年9月4日 星期四

[Python硬體控制教學] 如何用 I2C 精準讀寫單一 Bit 或特定位元?

Quesion: 

在GPIO_I2C通訊協定與EEPROM存取"章節中,教的I2C存取是以1個byte(8個bit)為單位做讀及寫,請問有模組(module)或function可以import,只單獨做I2C 1個bit讀寫,或是連續的2或3個bit讀寫嗎?


  沒有這樣的函數, 原因是I2C 傳輸資料的最小的單位就是一個位元組 (8個bits),
  每傳輸完一個位元組,接收方就會回傳一個 ACK/NACK位元
   你要寫入bit, 一般作法都是 將值讀回後, 進行位元運算 bitwise operation, 再將值寫回
  例如:

    original_value = bus.read_byte_data(DEVICE_ADDR, CONFIG_REGISTER)
    new_value = original_value | (1 << 2)
    bus.write_byte_data(DEVICE_ADDR, CONFIG_REGISTER, new_value)