关于调ads1115时差分数据错误的时序分析,以及ads1115的计算公式

在驱动里,主机发读指令后没有等待从机应答,而是发送两个周期sda的高电平,这便成了错误的根源
实际现象就是差分输入测量正量程范围时,数值会跳到负量程取值区间。经过逻辑分析仪显现的时序找到了问题。

如下:ads1115数据格式
在这里插入图片描述

在这里插入图片描述
所以一个正值范围的数据,丢失最高位0以后,次高位可能为1,而主机会把它存放在最高位,所以使数据掉入错误的取值范围。且采集的第八位实际为从机释放sda等待应答的电平信号,该为读取恒定为1.而第八位由于从机不再发送数据。采集的全为1,导致测量精度也不够。且计算时除以变成65535而不是32767。实际计算如果读到的值是对的,可以取绝对值除以32767(或者乘2/65535)。

测量的电压值 = (采集到的正值数据)/(2/65535)*4.096 (注:4.096为设定的满量程电压FS)

若数值在负量程区间可以用绝对值计算,再根据实际使用选择是否添加符号:

测量的电压值 = (0xffff - 采集到的负值数据)/(2/65535)*4.096 (注:根据ads1115的设定,用0xffff - 采集的负值数据 就是该负值的绝对值。负值是以二进制补码形式存在 转换数据寄存器中)

对iic的理解,由与硬件原因决定了sda总线空闲时为高定平,主机从机只能控制是否拉低电平。所以当一方释放控制权等待另一方应答或传输的数据时。如果需要应答ack或发送的位为0就把总线电平拉低,否则便不对总线做任何操作,即非应答Nack为1.

这张图是否能帮助你理解为什么它的数据格式是以补码的形式展示?
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值