TI中文支持网
TI专业的中文技术问题搜集分享网站

ADS1118采集数据输出,偶尔跳变

        我用ADS1118做采集,输出偶尔跳变,有些时候是在12小时以内跳,有些时候是在48小时以内跳。

        采集程序如下:

        unsigned char SPI_Read(unsigned char SPI_Cmd)
        {
                UCB0TXBUF = SPI_Cmd;
                while (!(IFG2 & UCB0TXIFG));              // USCI_B0 TX buffer ready?
                //IFG2 &= ~UCB0TXIFG;

                while (!(IFG2 & UCB0RXIFG));              // USCI_B0 RX buffer ready?
                SPI_Data = UCB0RXBUF;                     // Increment expected slave value
                //IFG2 &= ~UCB0RXIFG;

                while (UCBUSY & UCB0STAT);                // USCI_B0 busy?

                return SPI_Data;

        }

—————————————————————————————————————-

        int main(void)

        {

                while(1)

                {

                        SLV_Data1 = 0;
                        SLV_Data2 = 0;
                        SLV_Data3 = 0;
                        SLV_Data4 = 0;

                        P3OUT &= ~BIT7;        //CS拉低

                        SLV_Data1 = SPI_Read(0xBB);  //1011 1011
                        SLV_Data2 = SPI_Read(0x0A);  //0000 1010
                        SLV_Data3 = SPI_Read(0x00);  //1011 1011
                        SLV_Data4 = SPI_Read(0x00);  //0000 1010

                        while(P1IN & BIT6);        //DATA OUTPUT AND DATA READY

                        P3OUT |= BIT7;               //CS拉低

                }

        }

       

Decapton Wang:

是用作哪种信号的采集?是否可以排除是信号源本身的跳动?具体是从哪个位置开始跳,跳到哪个位置?跳变过程后,能否自动恢复正常?

另,程序可以发到MSP430版面,请那边的专家帮你看一下。

HaiTao Li:

回复 Decapton Wang:

1、电压信号输入,电压信号输出(PWM实现)

2、可以排除信号源本身的问题。

3、可以排除计算过程的问题。

4、每次跳变是输出量程的1%左右,然后立刻恢复。

——————————————————————————————————–

1、问题可能存在于SPI采集部分,所以我把采集部分的代码放上来,请各位看看有没有问题

2、问题可能存在于输出环节,我每次取得采集值并计算出相应的占空比后,就会更新PWM的输出。PWM用TimerA实现的

赞(0)
未经允许不得转载:TI中文支持网 » ADS1118采集数据输出,偶尔跳变
分享到: 更多 (0)