|
|
|
|
@ -11,16 +11,17 @@ void talk_to_slave(uint8_t opcode, uint8_t addr, uint8_t flags)
|
|
|
|
|
write_data[0] = opcode;
|
|
|
|
|
write_data[1] = addr;
|
|
|
|
|
spi_mst_start_packet();
|
|
|
|
|
spi_mst_write(flags & SPI_WRITE_DATA? 4 : 2, write_data);
|
|
|
|
|
spi_mst_write(flags & SPI_WRITE_DATA? 4 : 3, write_data);
|
|
|
|
|
spi_mst_read(flags & SPI_READ_DATA? 2 : 0, read_data);
|
|
|
|
|
spi_mst_end_packet();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint16_t speak_raw(uint8_t opcode, uint8_t number, uint8_t flags, uint16_t value)
|
|
|
|
|
uint16_t spi_master_communicate(uint8_t opcode, uint8_t address, uint16_t value)
|
|
|
|
|
{
|
|
|
|
|
uint8_t flags = spi_proto_needs();
|
|
|
|
|
write_data[2] = value >> 8;
|
|
|
|
|
write_data[3] = value & 0xff;
|
|
|
|
|
talk_to_slave(opcode, number, flags);
|
|
|
|
|
talk_to_slave(opcode, address, flags);
|
|
|
|
|
return (read_data[0] << 8) | read_data[1];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|