/*内部库调用*/ int IIC_Write(uint8_t addr, uint8_t reg, uint8_t len, uint8_t* data) { if(I2C_BurstWrite(HW_I2C0,addr,reg,1,data,len)) return FALSE; else return TRUE; }
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 write single register value * \param[in] instance instance of i2c module * \param[in] chipAddr i2c slave addr * \param[in] addr i2c slave register offset * \param[in] data data to write * @note usually used on i2c sensor devices * \retval 0 success * \retval 1 failure */ int I2C_WriteSingleRegister(uint32_t instance, uint8_t chipAddr, uint8_t addr, uint8_t data) { return I2C_BurstWrite(instance, chipAddr, addr, 1, &data, 1); }
/** * @brief 写一个从机寄存器(寄存器地址在从机中必须为8位地址 如MMA845x等传感器设备) * @code * //使用i2c的1模块将data中的1字节数据写入地址为0x55的从机中地址为0x01的设备 * I2C_WriteSingleRegister(HW_I2C1, 0x55, 0x01, data); * @endcode * @param instance :I2C模块号 * @arg HW_I2C0 :I2C0模块 * @arg HW_I2C1 :I2C1模块 * @arg HW_I2C2 :I2C2模块 * @param deviceAddress :从机设备地址0~127 * @param registerAddress: 寄存器在从机中的地址 * @param Data: 需要写入的数据 * @retval 0:成功 1:地址发送失败 2:数据发送失败 */ uint8_t I2C_WriteSingleRegister(uint32_t instance, uint8_t deviceAddress, uint8_t registerAddress, uint8_t data) { return I2C_BurstWrite(instance ,deviceAddress, registerAddress, 1, &data, 1); }
int MB85RC64_WriteByte(uint16_t pos, uint8_t data) { pos = BSWAP_16(pos); return I2C_BurstWrite(gInstance, MB85RC64_ADDR, pos, 2, &data, 1); }