IIC读函数
HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);
功能:IIC读一个字节 参数:
*hi2c: 设置使用的是那个IIC 例:&hi2c2
DevAddress: 写入的地址 设置写入数据的地址 例 0xA0
*pDat:a 存储读取到的数据
Size: 发送的字节数
Timeout: 最大读取时间,超过时间将自动退出读取函数 ?
HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
/* 第1个参数为I2C操作句柄
第2个参数为从机设备地址
第3个参数为从机寄存器地址
第4个参数为从机寄存器地址长度
第5个参数为发送的数据的起始地址
第6个参数为传输数据的大小
第7个参数为操作超时时间 */
如果读某个外设中的数据,则用HAL_I2C_Master_Receive。 如果是外设里面还有子地址,例如我们的E2PROM,有设备地址,还有每个数据的寄存器存储地址。则用HAL_I2C_Mem_Read。 Mem_Read是2个地址,Master_Receive只有从机地址
同理:
如果只往某个外设中写数据,则用HAL_I2C_Master_Transmit。 如果是外设里面还有子地址,例如我们的E2PROM,有设备地址,还有每个数据的寄存器存储地址。则用Mem_Write。 Mem_Write是2个地址,Master_Transmit只有从机地址
|