This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1113:CAN#39;t 读取&从头开始控制 ADS1113

Guru**** 2539500 points
Other Parts Discussed in Thread: ADS1113, ADS1115

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/877649/ads1113-can-t-read-control-an-ads1113-from-the-scratch

器件型号:ADS1113
主题中讨论的其他器件: ADS1115

您好!

我对如何控制 ADS1113几乎不会感到困惑。 我不知道是硬件问题还是软件问题、因此我将从电路开始。

我测试了多路复用器是否正常工作、 我使用的是 S16A 和 S16B:

测试1 ->我对 S16B 施加3.3V 电压并让 S16A 悬空、ADC 返回大约22300个计数(~ 2.8V)、我使用万用表测试了 S16B 上的电压、是3.3V、但在 S16A 上测试时、电压为1.23V 、这是怎么可能的?

测试2 -> 我对 S16A 施加3.3V 电压并让 S16B 悬空、ADC 返回大约22300个计数(~-2.8V)为负值、我使用万用表测试了 S16A 上的电压、为3.3V、但当我在 S16B 上测试时、电压也为1.23V

测试3 ->我对 S16B 施加3.3V 电压,对 S16A 施加 GND,ADC 返回大约32767个计数(~ 4.096V)

测试4 -> 我对 S16A 施加3.3V 电压,对 S16B 施加 GND,ADC 返回大约32767个计数(~-4.096V)为负值

测试5 -> I 悬空 S16A 和 S16B、并将每个引脚 AIN0和 AIN1的测量电压连接到 GND、每个引脚返回1.23V

现在、让我们来讨论一下软件、首先我使用的是 ADS1115 python Adafruit 库、一旦我获得了这些读数、我就使用自己的代码尝试了、我就会获得相同的读数

导入 smbus
导入时间

总线= smbus.SMBus (1)

BUS.WRITE_WORD_DATA (0x48、0x01、54147)

时间睡眠(1)

Val 交换= bus.read_word_data (0x48、0x00)

Val =(val 交换和0xFF)<< 8 |(val 交换>> 8)

我不知道它会发生什么错误

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    雨衣、


    首先、我假设您使用 S16A 和 S16B 通道进行测量。 使用 ADS1113进行测量时、我只会在定义输入时进行测量。 我在进行测量时不会浮动输入。 使用浮动输入时、ADC 输入可以转到任何位置。 我还要注意的是、输入还必须具有定义的共模、并且输入电压必须处于从 GND 到 VDD 的电源范围内。

    话虽如此、读数似乎仍有一些错误。 如果与测试5一样、AIN0和 AIN1接地、并且仍然读数为1.23V、则通信或设置中存在一些错误。 有几个方面需要考虑。 首先、我将验证 ADC 的配置设置。 我会读回器件的配置寄存器。 您可以按照图15的 I2C 图执行此操作、并将地址指针设置为01。 通过这种方法、您可以验证您对器件的写入是否已正确写入配置寄存器。

    其次、我还将使用示波器来验证与器件的通信。 如果在 SDA 和 SCL 节点上增加了一些电容、则可能会出现一些慢速波形。 您获得某种值这一事实是一个好迹象、但查看波形仍然是一个好兆头。 您还可以使用此图来验证图15中的图。

    我还将检查输入返回的值。 如果您重新执行测试5、请检查输入、以便两者都是接地的、您能否收集一组数据(可能是50点)并将其收集到电子表格或文本文件中。 我想查看原始数据、而不是转换为电压的值。 我想验证您是否正确进行了 ADC 转换。

    通读我的评论、然后返回几个结果。 我相信我们可以找到解决方案。


    吴约瑟

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Joseph、

    感谢您的回复、我还无法使用示波器进行测试、但明天我将进行测试。

    首先、我使用 Raspberry Pi 和 Python、但现在我使用 Arduino 进行测试。

    测试1:

    代码:

    您可以找到我用于 测试的 Arduino 代码

    电路:

    AIN0 = GND

    AIN1 = GND

    代码响应:

    配置寄存器初始状态:1000001110000011
    转换寄存器初始状态:0

    将33667写入配置寄存器
    完成!

    将33667写入配置寄存器后的配置寄存器:1000001110000011
    写入 conifg 寄存器后的转换寄存器:0

    测试2:

    代码:

    您可以找到我用于 测试的 Arduino 代码

    电路:

    AIN0 = 3.3V

    AIN1 = GND

    代码响应:

    配置寄存器初始状态:1000001110000011
    转换寄存器初始状态:0

    将33667写入配置寄存器
    完成!

    将33667写入配置寄存器后的配置寄存器:1000001110000011
    写入 conifg 寄存器后的转换校准器:111111111111111

    那么、数据仍然与 Raspberry 上的数据相同、还有什么其他的东西呢? 代码正常吗?  

    顺便说一下、TI 网站返回的数据表中的图15是一个噪声与电源电压间的关系图。

    希望您能看到我的错误

    e2e.ti.com/.../ads1113.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    雨衣、


    很难猜测只有代码存在什么问题。 通过查看波形可以更轻松地查看用于调试的确切 SPI 事务。 现在、我将获得示波器并查看 SCLK、DIN、DOUT 和/CS 上的结果。 将图发布回该线程、我们可以看到发生了什么。


    吴约瑟

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    PanchoM、

    我有一段时间没有听到您的声音、我想我会检查您的进度。 在我的最后几篇文章中、我提到我想查看器件和主器件之间的 SPI 通信。 这将包括示波器图或逻辑分析仪的输出。

    希望您能够解决您的问题。 我现在将关闭此帖子、但如果您继续遇到问题、请再次阅读我的帖子并将其发布回此主题。 我们可以返回处理这个问题。


    吴约瑟