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.
大家好,
通过SPI读取组件的输出时遇到困难。 转换器由ARM微处理器控制,安装在定制板上,但我们通过直接从输出引脚读取信号来测试它。 我们正在使用输入夹中的一些电阻器测试通道0,其他通道是浮动的。
这些是我们的寄存器配置,其他所有设置均为默认值:
-状态= 0x0100
-模式= 0x0100
-时钟= 0x0F0E
- CFG = 0x0000
初始化包括以下步骤:
—等待就绪信号
清除FIFO队列
-读取寄存器
—编写我们的配置
-再次阅读以查看是否更改了寄存器
之后,我们在下降沿上启用DRDY中断和CLKIN信号。 在DRDY中断中,我们发送了一个NULL命令来读取信号,但事情变得奇怪:所有通道的答案都是零,甚至是浮动的; 即使我们将寄存器设置为在SPI数据全部清空之前保持低电平,DRDY引脚也会提供短的负脉冲; 我们得到0xFF24而不是读取状态寄存器。
我们还尝试在不等待DRDY触发器的情况下发送NULL命令,只有当命令是 在DRDY信号后发送的第二个命令时,我们才正确地看到状态值,第一 个答案仍然是0xFF24。
另一项测试是将DRDY模式更改为脉冲,我们的行为与第一个场景中描述的相同。
1. 0xFF24是否为常规ACK? 数据表仅提及重置命令。
2.我们的时钟频率约为7900MHz,是否必须达到8.192 MHz的完美额定值?
3.在DRDY触发后,我们是否有最短的等待时间才能看到任何数据?
提前感谢您的帮助。
Angela
您好Angela:
1. 0xFF24是否为常规ACK? 数据表仅提及重置命令。
否,假设没有新数据进入,状态应大多为零。 此外,当0x100写入模式时 ,重置标志被清除,因此如果清除该标志,0x500将不再是默认值,如果没有新数据,0x000将是默认值。
也就是说,如果确实为设备指定了NULL,0xFF24将是不可能的响应。 位[7:4]应为0b0000,但在0xFF24情况下应为0b0010。
因此,我认为您需要获得一个逻辑分析器,并检查命令是否已发送到设备。
2.我们的时钟频率约为7900MHz,是否必须达到8.192 MHz的完美额定值?
时钟频率正常! 它们在最低推荐规格范围内。 8.192MHz只是一个典型的规范。
3.在DRDY触发后,我们是否有最短的等待时间才能看到任何数据?
否,此时所有数据都已推送到寄存器。 理论上,CS可以在 DRDY转换时向右轻翻转,然后SPI计时规范接管工作。
参考代码:
顺便提一下,我们有此设备的参考代码。 如果您尚未签出,我建议您签出: https://www.ti.com/lit/zip/sbac254
最佳,
-Cole
您好Cole:
感谢您快速而详细的回答。
我和我的同事按照你的建议做了一些进一步的测试并检查了更多的信号。 CS始终较低,因为它是主板上唯一的SPI组件,据我所知,应该不用担心,您是否建议仅在通信过程中将其调低?
至于读数问题,我们设法解决了,我将把它写下来,这样,如果有人使用相同的配置,就可以找到它:当我写文章时,我们正在通过示波器读取信号,探头通过焊接在板上的电缆连接。 连接的引脚为DIN,DOUT,SCLK,CLK和DRDY。 这种线缆似乎干扰了通信,因为移除线缆并仅使用 我们的固件调试器查看数据就解决了这一问题。
再次感谢,此致,
Angela
您好Angela:
很好听! 是否有一些声音,比如额外的导线为 您正在查看的信号添加寄生物? 这可能是我第一次听说示波器不能作为这些问题的"全面捕获"工作。 不管怎样,您找到了解决方案,这很好。
CS始终为低... 您是否建议 仅在通信过程中将[CS]调至低?
如果它是SPI通信总线上唯一的设备,则可以始终保持低电平。 我们实际上在数据表中的9.1 3最小接口连接部分中做了这一评论。
最佳,
-Cole