i2ctransfer -f -y 8 w4@0x68 0x32 0x02 0x04 0x1e r5 转换成 regmap 代码
时间: 2024-02-19 10:58:17 浏览: 65
假设你要写入的数据是 0x02 0x04,寄存器地址是 0x1e,设备地址是 0x68,总线编号是 8,要读取的字节数是 5,使用 regmap 的代码如下:
```
#include <linux/i2c-dev.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
struct i2c_client *client;
struct regmap *regmap;
u8 buf[5];
/* 初始化 i2c_client */
client = i2c_new_device(adapter, &info);
/* 初始化 regmap */
regmap = devm_regmap_init_i2c(client, ®map_config);
/* 写入数据 */
u8 data[2] = {0x02, 0x04};
regmap_write(regmap, 0x1e, data, 2);
/* 读取数据 */
regmap_bulk_read(regmap, 0x1e, buf, 5);
printk(KERN_INFO "Read data: %02x %02x %02x %02x %02x\n", buf[0], buf[1], buf[2], buf[3], buf[4]);
```
其中,adapter 是指向总线的指针,info 包含设备地址和其他信息,regmap_config 是用于初始化 regmap 的配置结构体。注意,写入数据使用的是 regmap_write 函数,读取数据使用的是 regmap_bulk_read 函数。
阅读全文