芯片IC的mask位置

本文介绍了在处理芯片IC驱动时,mask码在寄存器配置中的重要性,尤其是在遇到调试问题后,发现应使用mask码指定寄存器地址的特定位,而非全部。作者通过示例展示了如何正确使用mask码和I运算来避免设置错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录芯片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码的东西,避免有些同学第一次看到会有迷惑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值