static int timeout_status_poll(i2c_t *obj, uint32_t mask) { uint32_t i, timeout = 100000; for (i = 0; i < timeout; i++) { if (HW_I2C_S_RD(obj->instance) & mask) return 0; } return 1; }
int i2c_slave_receive(i2c_t *obj) { switch(HW_I2C_S_RD(obj->instance)) { // read addressed case 0xE6: return 1; // write addressed case 0xE2: return 3; default: return 0; } }
int i2c_slave_receive(i2c_t *obj) { uint32_t i2c_addrs[] = I2C_BASE_ADDRS; switch(HW_I2C_S_RD(i2c_addrs[obj->instance])) { // read addressed case 0xE6: return 1; // write addressed case 0xE2: return 3; default: return 0; } }