有没有人用AD7175,运行一段时间读数一直不变怎么回事?
有没有人用AD7175,运行一段时间读数一直不变怎么回事?正常运行还好,运行到十多个小时会出现读出来的数据一直不变,其中整个程序没做别的事情,读数功能一直循环。
而且,连续测了三块板子都有同样的情况,但是不断电,单片机不复位,单片机发送AD7175复位指令后数据恢复正常。
有人知道问题在哪儿吗?多谢 应该是寄存器值异常,有的时候一个通道异常,有的时候全部异常,至今没有找到原因。 superpaul 发表于 2020-3-27 15:39
应该是寄存器值异常,有的时候一个通道异常,有的时候全部异常,至今没有找到原因。 ...
你也遇到过吗?是不是只能复位解决了? CS引脚一直低电平吗,是不是SPI迷失了
可以访问状态寄存器或者ID寄存器来定位问题 Flyback 发表于 2020-3-27 21:56
CS引脚一直低电平吗,是不是SPI迷失了
可以访问状态寄存器或者ID寄存器来定位问题 ...
差不多几十毫秒读一次,读的时候才拉低cs,查看过通道配置寄存器和id寄存器都正常 7175-2/8算我们最快的Sigma delta ADC 了的,实时debug ,看最后停在哪了的。 本帖最后由 Flyback 于 2020-3-28 11:33 编辑
bolizhicheng204 发表于 2020-3-28 08:19
差不多几十毫秒读一次,读的时候才拉低cs,查看过通道配置寄存器和id寄存器都正常 ...
那建议挂逻辑分析仪贴波形图看看
增加:
这个芯片的每一步配置都建议写入之后回读确认 这问题见过;我只能收到数据简单判断下,有异常重新初始化7175;不明白也找不到问题所在。 reflecter 发表于 2020-3-28 09:16
7175-2/8算我们最快的Sigma delta ADC 了的,实时debug ,看最后停在哪了的。
没有卡死,就是读出来的数一直不变,同一个结果。发送复位指令正常 feibagezib 发表于 2020-3-28 11:52
这问题见过;我只能收到数据简单判断下,有异常重新初始化7175;不明白也找不到问题所在。 ...
就是啊,很奇怪,其他都正常,寄存器回读也正常。差不多十多个小时就会出现 bolizhicheng204 发表于 2020-3-28 11:53
没有卡死,就是读出来的数一直不变,同一个结果。发送复位指令正常
驱动代码,方便贴一段上来的?
有联系就近的技术支持了的?
毕竟能用得起7175的,定是预算充足的项目了的。 Flyback 发表于 2020-3-28 11:30
那建议挂逻辑分析仪贴波形图看看
增加:
触发得设置好,否则普通示波器,存储深度,不够用的。 reflecter 发表于 2020-3-28 12:55
驱动代码,方便贴一段上来的?
有联系就近的技术支持了的?
毕竟能用得起7175的,定是预算充足的项目了的 ...
不在单位周一贴
没有,回头联系下。目前是能用,也不是特别大的问题,但是想查出来原因。 bolizhicheng204 发表于 2020-3-28 17:12
不在单位周一贴
没有,回头联系下。目前是能用,也不是特别大的问题,但是想查出来原因。 ...
嗯,确认购买渠道,SPI通讯环境,还有不带问题过,否则后续项目复用,代码量增大了,再来排查,会悔恨当初没趁势解决掉。 reflecter 发表于 2020-3-28 12:55
驱动代码,方便贴一段上来的?
有联系就近的技术支持了的?
毕竟能用得起7175的,定是预算充足的项目了的 ...
底层驱动代码在附件,官方驱动看着费劲,全部改写了,各个寄存器单独读写,很方便。
主循环简化代码:
AD7175Start();
while(1)
{
AD7175ReadAllReg();
DelayUs(100);
AD7175.CodeBuff=0;
AD7175.CodeBuff=AD7175_RDATA();
dftemp1=AD7175.CodeBuff*(AD7175.VREF/16777216);
dftemp1=dftemp1*1000000;
AD7175REG.STATUS.value.all=AD7175ReadREG(AD7175REG.STATUS.adr, AD7175REG.STATUS.len);DelayUs(10);
uitemp=snprintf((char *)SU1.PTxBuff, SUH.TxSize, "0X%06X%.4f%02X\r\n",AD7175.CodeBuff,dftemp1,AD7175REG.STATUS.value.all);
HostSendBuff(SUH.PTxBuff, uitemp);
DelayMs(50);
}
我去,,,附件下载六百多次啊,怎么没人讨论
今天出现这个问题后,程序里不发送复位,只重写寄存器,所有的寄存器都重新正确写入,但是值依然不变。只有重新执行ADC复位才会恢复正常。
善始善终,问题解决,原因如下
中间咨询过很多人,综合分析应该是时钟或者数据的时序引起的。由于我是导线直接飞线,经常会有读取的数据错乱的现象,时间久了应该对AD本身会有影响。具体深层次原因说不太 清楚。但是把飞线改为排线后几乎没有数据错乱的现象,也没有发生过以上的问题。
欢迎探讨 正在测试ad7172 正在测试ad7172 正在测试ad7172 大佬,后面除了换了排线后还进行了其他操作么? 7175性能还不错,有点贵,感觉不太划算 meozou 发表于 2023-5-24 09:17
大佬,后面除了换了排线后还进行了其他操作么?
(引用自21楼)
项目早量产了,应该没其他操作,主要还是线的问题,速度太快了,散线不行,中间偶尔数据异常,程序处理一下
页:
[1]