I2C读取从机寄存器代码
时间: 2023-07-09 13:32:52 浏览: 58
下面是读取 I2C 从机寄存器的代码示例:
```
uint8_t read_from_i2c(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t len)
{
uint8_t result;
uint8_t tx_data[1] = {reg_addr};
i2c_master_transfer_t masterXfer;
/* 初始化 I2C 主机 */
I2C_MasterTransferCreateHandle(I2C0, &g_master_handle, i2c_master_callback, NULL);
/* 设置从机地址 */
masterXfer.slaveAddress = slave_addr;
masterXfer.direction = kI2C_Write;
masterXfer.subaddress = 0;
masterXfer.subaddressSize = 0;
masterXfer.data = tx_data;
masterXfer.dataSize = 1;
masterXfer.flags = kI2C_TransferDefaultFlag;
/* 发送从机寄存器地址 */
result = I2C_MasterTransferBlocking(I2C0, &g_master_handle, &masterXfer);
if (result != kStatus_Success)
{
return result;
}
/* 设置从机地址 */
masterXfer.slaveAddress = slave_addr;
masterXfer.direction = kI2C_Read;
masterXfer.subaddress = 0;
masterXfer.subaddressSize = 0;
masterXfer.data = data;
masterXfer.dataSize = len;
masterXfer.flags = kI2C_TransferDefaultFlag;
/* 读取从机寄存器数据 */
result = I2C_MasterTransferBlocking(I2C0, &g_master_handle, &masterXfer);
if (result != kStatus_Success)
{
return result;
}
return kStatus_Success;
}
```
上述代码中,使用了 KSDK (Keil Software Development Kit) 提供的 I2C 库函数,其中 `I2C0` 是 I2C 模块的实例,`slave_addr` 是从机地址,`reg_addr` 是从机寄存器地址,`data` 是读取的数据,`len` 是读取数据的长度。函数首先发送从机寄存器地址,然后再读取从机寄存器中的数据。函数返回值是操作的状态,可以根据返回值判断操作是否成功。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)