若是對 I2C 與 python-smbus 不太熟悉的讀者,請先參考
‧ W!o+ 的《小伶鼬工坊演義》︰ 一窺全豹之系統設計《解讀》
文本相關對落以及鍊結。
此處以派生三 python3 為例,按造 24C32 Data Sheet 所言,
建制隨選地址 Random Address 之位元組讀寫 Byte I/O 程式︰
pi@raspberrypi:~ sudo dtoverlay i2c-gpio i2c_gpio_sda=0 i2c_gpio_scl=1 pi@raspberrypi:~ python3 Python 3.4.2 (default, Oct 19 2014, 13:31:11) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from smbus import SMBus >>> smb=SMBus(3) >>> EEPROM = 0x50 >>> def 設置目前位置(地址): ... 高位元組 = 地址 // 256 ... 低位元組 = 地址 % 256 ... smb.write_i2c_block_data(EEPROM, 高位元組, [低位元組]) ... >>> def 讀一位元組(地址): ... 設置目前位置(地址) ... return smb.read_byte(EEPROM) ... >>> def 寫一位元組(地址, 資料): ... 高位元組 = 地址 // 256 ... 低位元組 = 地址 % 256 ... 資料.insert(0,低位元組) ... smb.write_i2c_block_data(EEPROM, 高位元組, 資料) ... 完成 = 0 ... while not 完成: ... try: ... smb.read_byte(EEPROM) ... 完成 = 1 ... except IOError: ... 完成 = 0 ... >>> 讀一位元組(0) 82 >>> 寫一位元組(0, [80]) >>> 讀一位元組(0) 80 >>> 寫一位元組(0, [82]) >>> 讀一位元組(0) 82 >>>
相信讀者自能掌握其餘的了。