TI论坛
直播中

李霞

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

AVR控制ADS7590采集数据切换通道不稳定怎么解决?


  •   我用ATMEGA128   SPI通讯控制ADS7590读取通道1和通道2的模拟数据,SPI  时钟频率62.5KHZ   根据ADS7590控制时序  我给7590发送一个数据  她会给我回一个数据  例如 读取通道0 的数据  我发送0X1800  7590会回给我通道0的数据   但是我发0x1880(通道1)  有的时候就切换不到通道1   但是有的时候还能切换至通道1进行采集数据,但是不稳定,会在通道0和通道1之间来回跳。
    while(1)
    {
    _delay_ms(300);
    CSN_0;                                       //SPI通讯使能引脚拉低
    _delay_us(22);
    SPI_MasterTransmit(0x18);      //采集通道0数据
    data[0]=SPI_MasterReceive(); //接收第一个个字节数据
    SPI_MasterTransmit(0x80);     //发送第二个字节数据
    data[1]=SPI_MasterReceive();//接收第二个字节数据
    _delay_us(22);                         //延时22us后将SPI使能拉高
    CSN_1;
    _delay_ms(300);                      //间隔300ms后采集通道1 的数据
    CSN_0;                                   // //SPI通讯使能引脚拉低
    _delay_us(22);
    SPI_MasterTransmit(0x18);      //采集通道1数据
    data[2]=SPI_MasterReceive(); //接收通道1数据
    SPI_MasterTransmit(0x80);      //采集通道1数据
    data[3]=SPI_MasterReceive(); //接收通道1数据
    _delay_us(22);
    CSN_1;

    channel[0]=(data[0]&0xf0)>>4; //channel[0]表示通道0
    channel[1]=(data[2]&0xf0)>>4; //channel[1]表示通道1
    val1=(((data[0]&0x0f)<<8)|data[1]);//vai1表示通道0     12位数据采集结果
    val2=(((data[2]&0x0f)<<8)|data[3]);//vai1表示通道1     12位数据采集结果
    Uart_printf("%s %x %d %s %x %drn","channe_l_val=",channel[0], val1,"channe_2_val=",channel[1], val2);//将采集出来的数据打印出来

回帖(3)

关睿

2025-1-8 10:56:28
  从说明看, 好像通信不稳定. 是不是时序上有问题呢?
举报

王境滨

2025-1-8 10:56:32
  通道切换后延时长一点试试
举报

陈秀珍

2025-1-8 18:11:00
根据您的描述,您在使用ATMEGA128和SPI通讯控制ADS7590读取通道1和通道2的模拟数据时,遇到了通道切换不稳定的问题。以下是一些建议来解决这个问题:

1. 检查硬件连接:确保ADS7590与ATMEGA128之间的硬件连接正确且稳定。检查SPI接口的连接线是否松动或损坏,以及ADS7590的电源和地线是否连接正确。

2. 检查SPI时钟频率:您提到使用的SPI时钟频率为62.5KHZ。请确保这个频率在ADS7590的工作范围内。如果可能的话,尝试降低SPI时钟频率,例如32KHZ或16KHZ,以提高稳定性。

3. 检查SPI通信时序:请确保您的代码遵循ADS7590的SPI通信时序。在发送命令之前,确保CSN(片选)信号已经拉低,并且在发送完命令后,CSN信号已经拉高。同时,确保在发送下一个命令之前,给ADS7590足够的时间来处理上一个命令。

4. 增加延时:在切换通道时,增加一些延时可能有助于提高稳定性。您可以尝试在发送通道切换命令后,增加一些延时(例如10ms或20ms),然后再发送下一个命令。

5. 检查代码逻辑:请检查您的代码逻辑,确保在切换通道时,没有遗漏任何必要的步骤。例如,在发送通道1的命令之前,确保已经正确地发送了通道0的命令,并且在发送通道2的命令之前,确保已经正确地发送了通道1的命令。

6. 使用软件滤波:如果问题仍然存在,您可以尝试使用软件滤波来平滑数据。例如,您可以使用滑动平均滤波器或中值滤波器来减少通道切换时的噪声。

7. 检查ADS7590的固件:请确保您使用的ADS7590固件是最新的,并且与您的ATMEGA128兼容。如果可能的话,尝试更新ADS7590的固件,看看是否能解决问题。

通过以上建议,希望能帮助您解决通道切换不稳定的问题。如果问题仍然存在,请提供更多的代码和硬件信息,以便进一步分析和解决问题。
举报

更多回帖

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