I2C client 挂到 adapter之后,就可以通过I2C 读写命令开始 读写设备寄存器了。
读写的时候,都可以用示波器量出来I2C CLK 和I2C data信号的,甚至可以读出 data信号上的,传输的设备地址和数据。
有趣的是,开始的时候,把示波器信号周期调的比较大,比如500ms,这时候,测量音频Codec I2C总线上信号,居然量不到信号,而点触摸屏的时候就可以测到I2C 总线上有数据波动。(好多设备都是连载同一条I2C总线上的)。 后来才发现原来的把示波器周期调小到us级,改用触发方式,就可以捕捉到I2C设备上的信号了。
具体做法,可以添加以下代码,生成sys/class/i2c-adapter/* 下面的节点reg和val 。
reg --- 要读写的 I2C 设备寄存器地址
val --- reg里面的值
static unsigned long sys_reg;
static ssize_t sys_reg_show(struct device *dev,
struct device_attribute * attr,char * buf)
{
printk(" reg show : sys_reg = %d\n", sys_reg);
return snprintf(buf,PAGE_SIZE, "%x", (u32)sys_reg);
}
static ssize_t sys_reg_store(struct de