// +build avr nrf sam stm32f103xx package machine // TWI_FREQ is the I2C bus speed. Normally either 100 kHz, or 400 kHz for high-speed bus. const ( TWI_FREQ_100KHZ = 100000 TWI_FREQ_400KHZ = 400000 ) // WriteRegister transmits first the register and then the data to the // peripheral device. // // Many I2C-compatible devices are organized in terms of registers. This method // is a shortcut to easily write to such registers. Also, it only works for // devices with 7-bit addresses, which is the vast majority. func (i2c I2C) WriteRegister(address uint8, register uint8, data []byte) error { buf := make([]uint8, len(data)+1) buf[0] = register copy(buf[1:], data) return i2c.Tx(uint16(address), buf, nil) } // ReadRegister transmits the register, restarts the connection as a read // operation, and reads the response. // // Many I2C-compatible devices are organized in terms of registers. This method // is a shortcut to easily read such registers. Also, it only works for devices // with 7-bit addresses, which is the vast majority. func (i2c I2C) ReadRegister(address uint8, register uint8, data []byte) error { return i2c.Tx(uint16(address), []byte{register}, data) }