关于i2c读取值一直是0xff的问题

本文探讨了使用C8051F340芯片通过模拟I2C接口读写DS3902数字电位器时,读取值固定为0xFF的问题。分析发现,设备地址在擦除过程中被意外更改,导致后续读写失败。文章分享了这一经验,以帮助遇到类似问题的开发者检查设备地址是否正确。

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

关于i2c读取值一直是0xff的问题

本次使用的是C8051F340芯片通过模拟i2C 进行读写数字电位器DS3902,这些规格书都可以在官网下载
C8051F340下载地址:https://www.alldatasheet.com/datasheet-pdf/pdf/182721/SILABS/C8051F340.html
DS3902下载地址:https://www.maximintegrated.com/cn/products/analog/data-converters/digital-potentiometers/DS3902.html
在本次项目中遇到了特别奇怪的问题,去翻3902的规格书可以知道
在这里插入图片描述
规格书里这样说:The I2C slave address of the DS3902 depends on the state of the ADD_SEL pin. If this pin is low, then the slave address is A2h. If the ADD_SEL pin is high, then the slave address is determined by the value stored in EEPROM at address 00h.
就是说他的设备地址是基于ADD_SEL pin接的是地还是拉高。本次是属于拉高状态。那设备地址就是图中默认的0xA0 。
但我在这次操作的时候进行读写3902时,第一次可以读写成功,之后再也读写不到读取的值一直是0xFF ,这个问题整整困惑了两天,直到今天前辈说设备地址有可能在擦除的时候被改掉,于是就试了一下,发现3902地址已经被改为0xff。所以当遇到这个问题时,希望看到的人能考虑这个因素,自然本人在网上查了,遇到此类问题的人很多,有的是i2c时序没写对,有的是硬件的问题。但目前还没看到这种情况的,所以分享出来,以便后来也有人看到。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值