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.

ADS7822的SPI通讯问题

Other Parts Discussed in Thread: ADS7822, CC2530

    #define P_ADS7822_CS P1_7 //Port of ADS7822 CS
    #define P_ADS7822_CLK P1_6 //Port of ADS7822 Clock
    #define P_ADS7822_Dout P1_4 //Port of ADS7822 Dout

    int16 ReadSpi_ADS7822(void)
    {
        int i; //定义数据读取次数变量
        int j; //定义采样数据暂存单元
        int ADS7822_Value; //定义采样数据存储单元

        P_ADS7822_CLK=0; //addclock为低电平
        P_ADS7822_CS=0; //启动A/D转换

        P_ADS7822_CLK=1; //送3个脉冲取样
        P_ADS7822_CLK=0;
        P_ADS7822_CLK=1;
        P_ADS7822_CLK=0;
        P_ADS7822_CLK=1;

        //P_ADS7822_Dout=1;
        //ADS7822_Value=0;

        /读取采样数据
        for(i=11;i>=0;i--)
        {
                //送读取脉冲
                P_ADS7822_CLK=0;
                P_ADS7822_CLK=1;

                /读取数据
               j=(int)(P_ADS7822_Dout);

               //数据移位后与前面数据相或
               ADS7822_Value=ADS7822_Value|(j<<i);
        }

        //一次采样完成,片选置为高电平
        P_ADS7822_CS=1;

        //Ref = 2.5
        //VDC = Dout * 2.5 / 4096
        //ADS7822_Value = ADS7822_Value * 0x05 / 0x1FFF;

        return ADS7822_Value;
    }

        程序是参考网上的例子,按照时序图做的,MCU是CC2530,但是ADS7822_Value的值总是0xFFF,不知道哪位能指点一下。

        //P_ADS7822_Dout=1;
        //ADS7822_Value=0;

        这两句启用与否,都对上述情况无影响。