TI论坛
直播中

王波

8年用户 1491经验值
私信 关注
[问答]

使用STM32F429来读写,读出来确是不固定的一个值,为什么?


  • 这两天我在使用ADS1256的过程中遇到点问题,请教一下:
    一、根据ADS1256手册,晶振7.68M情况下,SCLK T最小是4*1/7.68M,所以允许SPI的最大通信速率是大概2M,不知道这理解对不对不?
    二、现在使用STM32F429来读写,短接MOSI和MISO读写值一致。实际写入ADS1256寄存器status值0x06,但读出来确是不固定的一个值,通过提高SPI速率到20M,发现读取的值唯一,但不正确。改变主控SPI的配置:CLK空闲状态下为Low,发现读取的寄存器值一直为0xff此刻(此刻应该失效了)。
    我目前认为是我的主控SPI配置和ADS1256不匹配导致的,但不知道现象可能是由哪里导致的,请指教一二,谢谢!

回帖(2)

孔德羲

2024-12-30 15:01:44
 怎么会读的值不固定呢, 这通常是反映了总线频率或时序上有问题. 最好借助示波器检查一下波形
举报

刘丽

2024-12-31 16:45:35
根据您的描述,您在使用STM32F429与ADS1256进行SPI通信时遇到了一些问题。以下是针对您提出的问题和现象的一些建议和分析:

1. 关于SPI通信速率的理解:
   您提到的晶振频率为7.68M,SCLK T最小值为4*1/7.68M,所以允许的最大通信速率约为2M。这个理解是正确的。在实际应用中,我们需要确保SPI通信速率不超过这个最大值,以保证数据传输的稳定性和准确性。

2. 短接MOSI和MISO读写值一致的问题:
   当您短接MOSI和MISO时,读写值一致,这可能是因为您的STM32F429和ADS1256之间的SPI通信存在问题。这可能是由于SPI配置不匹配、连接不稳定或者硬件故障等原因导致的。建议您检查硬件连接和SPI配置,确保它们符合ADS1256的要求。

3. 读取寄存器值不固定的问题:
   您提到实际写入ADS1256寄存器status值为0x06,但读出来的值不固定。这可能是由于SPI通信速率过高导致的。您提到提高SPI速率到20M时,读取的值唯一,但不正确。这可能是因为SPI速率过高,导致数据传输不稳定。建议您将SPI速率降低到2M以下,以确保数据传输的稳定性。

4. CLK空闲状态下为Low的问题:
   您提到改变主控SPI的配置,CLK空闲状态下为Low,发现读取的寄存器值一直为0xff。这可能是因为您的SPI配置与ADS1256不匹配导致的。建议您检查STM32F429的SPI配置,确保它们符合ADS1256的要求。例如,您可以检查SPI的时钟极性和相位设置,确保它们与ADS1256的时钟极性和相位设置相匹配。

综上所述,您遇到的问题可能是由于SPI配置不匹配、连接不稳定或者硬件故障等原因导致的。建议您检查硬件连接和SPI配置,确保它们符合ADS1256的要求,并降低SPI速率以确保数据传输的稳定性。希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分