I2C_WriteByte(uint8_t addr,uint8_t data)
时间: 2023-12-01 16:31:03 浏览: 351
I2C_WriteByte(uint8_t addr,uint8_t data)函数的作用是进行IIC的写操作。该函数接受两个参数,一个是寄存器的地址addr,另一个是要写入的数据data。该函数通过组装地址和数据,并调用metal_i2c_write接口函数来实现对OLED屏的写操作。其中,metal_i2c_write函数是由Freedom-e-sdk提供的函数,用于实现I2C总线的写操作。通过调用该函数,可以将地址和数据传递给I2C总线,从而实现向OLED屏写入数据的功能。
相关问题
FunctionalState I2C_WriteByte(uint8_t SendByte, uint16_t WriteAddress, uint8_t DeviceAddress);
根据提供的引用内容,无法确定是否存在函数签名为"FunctionalState I2C_WriteByte(uint8_t SendByte, uint16_t WriteAddress, uint8_t DeviceAddress)"的函数。引用、、中提供了两个函数,一个是进行IIC写操作的函数I2C_WriteByte(uint8_t addr,uint8_t data),另一个是进行IIC读操作的函数I2C_ReadByte(uint8_t addr)。这两个函数的参数和返回值与所提供的函数签名不完全一致。因此,需要更多的信息才能回答这个问题。请提供更多的上下文信息或者代码片段。
void I2C_WriteByte(uint8_t addr,uint8_t data) { while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY)); I2C_GenerateSTART(I2C1, ENABLE);//¿ªÆôI2C1 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));/*EV5,Ö÷ģʽ*/ I2C_Send7bitAddress(I2C1, OLED_ADDRESS, I2C_Direction_Transmitter);//Æ÷¼þµØÖ· -- ĬÈÏ0x78 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); I2C_SendData(I2C1, addr);//¼Ä´æÆ÷µØÖ· while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); I2C_SendData(I2C1, data);//·¢ËÍÊý¾Ý while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); I2C_GenerateSTOP(I2C1, ENABLE);//¹Ø±ÕI2C1×ÜÏß }
这是一个用于向I2C设备写入数据的函数。函数中的参数 addr 表示设备的地址,data 表示要写入设备的数据。函数的实现过程如下:
1. 首先通过 while 循环等待 I2C 总线空闲。
2. 生成起始信号,启动 I2C1 总线。
3. 等待主机模式选择事件,确保 I2C1 进入主机模式。
4. 发送设备地址和传输方向(写入)。
5. 等待主机模式应答事件,确保设备正确响应。
6. 发送要写入的设备寄存器地址。
7. 等待字节传输事件,确保设备正确接收地址。
8. 发送要写入的数据。
9. 再次等待字节传输事件,确保设备正确接收数据。
10. 生成停止信号,结束本次 I2C 通信。
需要注意的是,在使用 I2C 通信时,需要先确认设备的地址和寄存器地址,以及数据的格式和编码方式。
阅读全文