记录芯片ic驱动中mask标志的作用。
mask是指修改指定的位的寄存器配置,而不是全部。
原因是因为之前在调试的时候出现了一些意外,我们一般设置方式是 寄存器地址 + 数据。
格式如下
set_register_date [] = {
/* reg data*/
{0x01, 0x11},
{0x02, 0x22}
......
{0x09, 0x11}
}
这样我就把 0x01的数据设置为了0x11, 0x02的地址上数据设置为0x22,但是后来死活不对,这个IC就是没有正常工作。
后来发现芯片厂商那边没有给我提供对应的寄存器的mask,我们不应该设置设置对应起存起的全部地址,而是需要设置对应的寄存器地址的指定的位置,如何指定位置,就是通过mask码指定。
格式如下:(仅供参考)
set_register_date [] = {
/* reg data mask*/
{0x01, 0x11, 0x0200},
{0x02, 0x22, 0x0100}
......
{0x09, 0x11, 0x4000}
}
内核中也使用的 I 运算来达到这个目的。
#define MASK_BIT_RST 0X0101
#define MASK_BIT_PW 0X1000
reg = set_date (0x01, 0x11 | MASK_BIT_RST );
.....
这里主要记录下mask码的东西,避免有些同学第一次看到会有迷惑