问题摘要:
尽管 验证了我的所有连接并使用 CS 在8位模式下传输、但我在8位精度模式下使用 TLV2553获得了不准确的读数、如数据表修订版 C 的图3所示。 我介绍了我的设置、并在下面提供了逻辑分析仪程序的屏幕截图。
设置:
VCC 设置为5V、REF+设置为2.5V、REF-接地。 我已为所有 AIN 引脚提供约1.02V 的电压。 SPI 线路和 EOC 连接到 Atmega 微控制器、MISO 和 EOC 配置为 Atmega 上的输入、所有其他配置为输出。 我已将 SPI 配置为 SCK 空闲、SCK 频率为250kHz、MOSI 为 MSB、数据在 SCK 的上升沿有效(数据在 SCK 的下降沿转换)。 我发送两个十六进制值为0x04且由~30us 间隔隔开的字节、以便我可以指定模拟通道、然后读取第二个结果。 根据数据表、0x04应寻址模拟通道0、将精度设置为8位、将位顺序设置为 MSB、并将输出格式设置为单极二进制。
结果:
当我期望接近100 (十进制)的值时、我从测试中读取的结果是186 (十进制)、因为模拟输入为1.02V、REF+为2.5V、这大约是参考值的40%、而100则掩盖在255中的40%、这将是 8位值的最大单极值。 结果值不会随我增大或减小 AIN0输入电压而显著变化。 下面的屏幕截图显示了信号的时序、所有内容看起来都在 Vcc = 5V 时运行的指定时序限制范围内。 我看到的一个奇怪行为是、EOC 在时钟的八个下降沿之前下降了几微秒、但数据表让我相信、EOC 在最后一个 SCK 下降沿之后不应变为低电平。
其他信息:
我通过调整频率、时钟相位等尝试了 SPI 配置的许多变化、但没有结果。 我一直尝试将芯片选择保持在低电平、这一点没有帮助。 如果我尝试使用图5中所示的16位精度、我会得到所有0xFF 响应、 但是、如果我使用12位精度(写入0x00)、并且只有8个时钟脉冲(我无法轻松地使用8位 AVR 微控制器仅生成12个时钟周期)、那么我会得到 AIN0和几个其他通道的合理值、 但测试寄存器和其他几个 AIN 通道仍处于关闭状态、并在0至255之间振荡。
我愿意提供有助于解决问题的任何其他信息。 我没有看到其他处理类似问题的 TT、因此可能我的器件因某种原因损坏了、但很奇怪、该器件似乎显示了部分功能、而没有任何响应。 提前感谢您的参与和帮助。