微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS7822的SPI通讯问题

ADS7822的SPI通讯问题

时间:10-02 整理:3721RD 点击:

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

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

Hi,

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

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

hi yongsheng wang,

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

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top