TI论坛
直播中

梁宏满

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

ADS1248通道切换后就读取不到数据了,是什么原因导致的?


  • ADS1248,我单独读取每一个通道,读取的数据都是OK的,现在我需要切换通道,轮询每个通道,就读取不到数据了,我在通道切换后,都有读取是否成功,start引脚一直置1的,而且我这个轮询间隔时间也不短,有800us,请问有可能是什么原因造成的呢?代码如下:
    if (firstRun)//初始化一次
    {
    firstRun = 0;
    SysCtlDelay(20);
    InitDevice();
    ADS1248SetStart(1);
    InitSPI();
    ADS1248AssertCS(0);
    SysCtlDelay(1);
    ADS1248SendResetCommand();
    SysCtlDelay(1);
    ADS1248SendSDATAC();
    ADS1248SetintRef(0);
    ADS1248SetVoltageReference(0);
    ADS1248SendSync();
    SysCtlDelay(1);
    ADS1248AssertCS(1);
    }

    //下面的程序是通道切换
    ADS1248AssertCS(0);
    SysCtlDelay(10);
    ADS1248SetChannel(0, 0);
    ADS1248SetChannel(1, 1);
    SysCtlDelay(10);
    P_PIN = ADS1248GetChannel(0);
    N_PIN = ADS1248GetChannel(1);
    SysCtlDelay(10);
    ADS1248_CH0 = ADS1248ReadData();
    SysCtlDelay(10);
    ADS1248AssertCS(1);

回帖(2)

郝汉

2024-11-29 17:43:24
对于循环通过MUX通道但不更改PGA和数据速率设置的设置,更改MUX0寄存器就足够了。但是,在更改PGA和数据速率设置时,请确保传输过程中不会出现过载情况。
举报

话多显蠢

2024-11-30 16:22:04
根据您提供的代码和描述,您在使用ADS1248进行通道切换时遇到问题。以下是一些建议和可能的原因:

1. 确保您的通道切换逻辑正确。在切换通道时,您需要确保正确地发送通道切换命令。您可以检查您的代码中是否有遗漏或错误的通道切换命令。

2. 检查SPI通信。确保您的SPI通信设置正确,包括时钟频率、CPOL和CPHA等。错误的SPI设置可能会导致数据读取失败。

3. 检查ADS1248的配置。确保您已经正确配置了ADS1248,包括采样率、增益、滤波器等。错误的配置可能会导致数据读取失败。

4. 检查轮询间隔时间。虽然您提到轮询间隔时间为800us,但请确保这个时间足够ADS1248完成数据采集。如果间隔时间过短,可能会导致数据读取失败。

5. 检查ADS1248的电源和接地。确保ADS1248的电源和接地连接正确且稳定。不稳定的电源和接地可能会导致数据读取失败。

6. 检查代码中的其他部分。您的代码中可能存在其他问题,导致通道切换后数据读取失败。请仔细检查您的代码,确保没有遗漏或错误。

7. 调试和测试。您可以尝试使用示波器或逻辑分析仪检查SPI通信和ADS1248的信号。这可以帮助您找到问题的根本原因。

总之,要解决这个问题,您需要仔细检查您的代码、硬件连接和配置。希望这些建议能帮助您找到问题的原因并解决它。
举报

更多回帖

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