English
Language : 

AS7262 Datasheet, PDF (20/47 Pages) ams AG – 6 visible channels: 450nm, 500nm, 550nm, 570nm, 600nm and 650nm, each with 40nm FWHM
AS7262 − DetailedDescription
I²C Virtual Register Read Access
I²C Virtual Register Byte Read shows the pseudocode necessary
to read virtual registers on the AS7262. Note that in this case,
reading a virtual register, the register address is not modified.
I²C Virtual Register Byte Read
Pseudocode
Poll I²C slave STATUS register;
If TX_VALID bit is 0, the virtual register address for the read may be written;
Send a virtual register address;
Poll I²C slave STATUS register;
If RX_VALID bit is 1, the read data is ready;
Read the data.
Sample Code:
uint8_t i2cm_AS72xx_read(uint8_t virtualReg)
{
volatile uint8_t status, d;
while (1)
{
// Read slave I²C status to see if the read buffer is ready.
status = i2cm_read(I2C_AS72XX_SLAVE_STATUS_REG);
if ((status & I2C_AS72XX_SLAVE_TX_VALID) == 0)
// No inbound TX pending at slave. Okay to write now.
break;
}
// Send the virtual register address (setting bit 7 to indicate a pending write).
i2cm_write(I2C_AS72XX_SLAVE_WRITE_REG, virtualReg);
while (1)
{
// Read the slave I²C status to see if our read data is available.
status = i2cm_read(I2C_AS72XX_SLAVE_STATUS_REG);
if ((status & I2C_AS72XX_SLAVE_RX_VALID) != 0)
// Read data is ready.
break;
}
// Read the data to complete the operation.
d = i2cm_read(I2C_AS72XX_SLAVE_READ_REG);
return d; s
}
The details of the i2cm_read() and i2cm_write()
functions in previous Figures are dependent upon the nature
and implementation of the external I²C master device.
Page 20
Document Feedback
ams Datasheet
[v1-00] 2016-Dec-16