int eep_write_page(uint32_t addr, uint8_t *buf, uint32_t len) { int ret; uint8_t chip_addr; chip_addr = (addr/256) + eep_dev.addr; ret = I2C_BurstWrite(eep_dev.bus_instance, chip_addr, addr%256, 1, buf, len); while(I2C_Probe(eep_dev.bus_instance, eep_dev.addr)); return ret; }
/** * \brief i2c bus scan test * @param[in] MAP I2C引脚配置缩略图,详见i2c.h * \retval None */ void I2C_Scan(uint32_t MAP) { uint8_t i; uint8_t ret; uint32_t instance; instance = I2C_QuickInit(MAP, 100*1000); for(i = 1; i < 127; i++) { ret = I2C_Probe(instance , i); if(!ret) { LIB_TRACE("ADDR:0x%2X(7BIT) | 0x%2X(8BIT) found!\r\n", i, i<<1); } } }
int eep_init(uint32_t instance) { uint32_t i; eep_dev.bus_instance = instance; for(i=0;i<ARRAY_SIZE(eep_addr);i++) { if(!I2C_Probe(instance, eep_addr[i])) { eep_dev.addr = eep_addr[i]; return EEP_OK; } } return EEP_ERROR; }