У меня есть Raspberry Pi, подключенный к IO Pi Plus от AB Electronics. У меня есть один из двух чипов MCP23017 только как выход, другой только как вход. Они индивидуально адресуются 0x20 и 0x21 соответственно.
Вывод в порядке, и я могу легко управлять светодиодами с помощью функции:
wire.write([0x00, 0x00], function(err){}); //Set wire(0x20) data direction resister(0x00) to output only (0x00).
Однако попытка чтения с использованием wire.readByte никогда не возвращает ничего, кроме 255 (или -256, когда я пытаюсь инвертировать биты. Что само по себе странно). wire1 = 0x21 (только ввод)
wire1.readByte(function(err,res){ //Res is a buffer to hold the byte that is read
//res = ~res This returns -256 instead of 0 when enabled. Not sure why.
console.log(res); // Output res
});
});
Вся документация, которую я использую, находится здесь https://www.npmjs.com/package/i2c и техническое описание чипсета: http://ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf