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

ADS7822的SPI通讯问题

    #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;

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

Felix Wei:

Hi,

请确定一下你所用的MCU是否有SPI外设,如果有SPI外设,建议使用该外设来和ADC通讯。

对于ADC,请查阅datasheet确认SPI命令表,你例程中需要读取的寄存器好像并没有指定

Luke Sun:

hi yongsheng wang,

        代码部分问题建议你移步MCU区讨论。另外你可以在示波器上先验证一下MCU和ADC接口中的波形是否实际产生。

HaiTao Li:

回复 Felix Wei:

        上面好像是想用模拟的方式实现SPI

HaiTao Li:

回复 HaiTao Li:

        CC2530的USART是有SPI功能的,可以通过软件设置实现,USER GRIDE的USART那一章里有。不过软件模拟方式实现三线的SPI与ADS7822进行通讯,确实没做过,帮不了你。

赞(0)
未经允许不得转载:TI中文支持网 » ADS7822的SPI通讯问题
分享到: 更多 (0)