主题中讨论的其他器件:ADS1120、
我尝试使用速率为1MHz 的 SPI 通信与 ADS1120通信。 我的第一个问题是可以与1MHz 速率进行缩减吗? 我能够在示波器上看到时钟、写入数据和 CS 引脚、但无法读取数据。 请帮帮我。 下面是我的电流:
写入(复位)
延迟
写入寄存器(0x4181)
写入寄存器(0x45A4)
写入寄存器(0x49C0)
写入寄存器(0x4D02)
写入(0x22)
读取(Rxbuffer)
我每次都将读取缓冲区为0xFFFF。
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.
我尝试使用速率为1MHz 的 SPI 通信与 ADS1120通信。 我的第一个问题是可以与1MHz 速率进行缩减吗? 我能够在示波器上看到时钟、写入数据和 CS 引脚、但无法读取数据。 请帮帮我。 下面是我的电流:
写入(复位)
延迟
写入寄存器(0x4181)
写入寄存器(0x45A4)
写入寄存器(0x49C0)
写入寄存器(0x4D02)
写入(0x22)
读取(Rxbuffer)
我每次都将读取缓冲区为0xFFFF。
你好、Sanket、
欢迎来到 E2E 论坛! 1MHz SCLK 不应成为问题。 ADS1120数据表第6.6节给出了 SPI 时序、规定了150ns 的最小周期、这将转换为6.6MHz 的最大时钟频率。
实际上查看示波器截图以验证极性和相位是否正确将会对我有所帮助。 我看到的一个常见错误是、在整个通信事务中没有将 CS 保持在低电平。 例如、如果 CS 在每个字节上切换、则通信将取消所需的操作。
至于通信、您实际上尝试写入错误。 WREG 命令为 b0100 rnn、其中 RR 是所需起始寄存器地址的位地址、nn 是指要写入的寄存器数量- 1。 由于有4个可能的寄存器、因此 RR 的范围可以是从 B00到 B11。 要写入一个寄存器、nn 的值将为 B00、而要写入所有四个寄存器、该值将为 B11。 某些组合会无效、例如0x4F、因为您无法在寄存器0x3开始写入、也无法写入4个寄存器。
写入寄存器(0x4181)似乎是从0开始的写入寄存器、并将数据写入2个寄存器(0x41 = 0100 0001)。 如果您的微控制器以16位字长度传输、则可以作为单个字进行传输、但需要将其更改为0x4081、这将向寄存器地址0x00写入1个字节。 因此、您似乎正在正确寻址、但错误地将要写入的寄存器数量设置为2而不是1。 请记住、'nn'是要写入的寄存器数量- 1。
当读取寄存器时、您使用的命令为0x22、这是从0开始读取寄存器、从3寄存器开始读取寄存器。 您必须确保发送所需数量的 SCLK 以通过传输 NOP (0x00或0xFF 用于字节大小传输、0x0000或0xFFFF 用于16位字传输)来实际检索数据。 同样、显示所有四个 SPI 信号的通信的示波器或逻辑分析仪截图对我很有帮助。
如果您使用的是 ADS1120EVM 并将 ADS1120连接到另一个微控制器、则必须确保存在所有必需的信号、并且板载微控制器已禁用。 应安装跳线 JP5和 JP6以禁用微控制器到 ADS1120的输出。
此致、
Bob B