中国领先的工业平台

返回贤集网 返回微头条
贤集网技术微头条APP获取

用IO模拟I2C时序读写ADC3101寄存器,果无...

 酱香饼

下载贤集网APP入驻自媒体

用IO模拟I2C时序读写ADC3101寄存器,果无论写入什么值还是读默认的值都显示255,为什么?
根据手册时序 用IO模拟I2C时序 读写ADC3101寄存器
手册时序如下图
最后结果无论写入什么值 还是读默认的值都显示255,求解答

最新回复
发布回复
首先,我们需要了解I2C通信协议和ADC3101寄存器的基本工作原理。I2C是一种同步的、多主机、多从机的串行通信协议,用于连接微控制器和其他设备。ADC3101是一款8位模数转换器,具有一个可编程增益放大器(PGA)和两个可编程比较器。在这个问题中,你提到使用IO模拟I2C时序读写ADC3101寄存器,但无论写入什么值还是读默认的值都显示255。这可能是由于以下几个原因:1. 硬件连接问题:请检查你的硬件连接是否正确。确保ADC3101的I2C引脚(SDA和SCL)与微控制器的相应引脚连接正确。此外,还需要确保ADC3101的电源和地线连接正确。2. 时序问题:I2C通信协议对时序有严格的要求。请确保你的IO模拟I2C时序正确。这包括起始条件、地址和读写位、数据位、应答位和停止条件。你可以参考ADC3101的数据手册中的时序图来检查你的代码。3. 寄存器配置问题:ADC3101的寄存器配置可能不正确。请确保你正确地设置了ADC3101的寄存器,例如PGA增益、比较器阈值等。错误的寄存器配置可能导致错误的读数。
建议用示波器抓一下I2C波形,看地址和数据有没有正常发送
地址是没有问题的,5MSB为0011 0,后面2LSB根据I2C_ADR0和I2C_ADR1 确定,如果都接地的话,那么7位地址为0011000,写操作的话即0X30.那您有没有尝试改成0x18试试? 通常读出来如果都是FF的话,绝大多数是由于地址写错的原因。

为您推荐

热门交流