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.

关于ADS8329

Other Parts Discussed in Thread: ADS8329

想问下ADS8329的 D[15:12]命令寄存器,ADS8329是单通道,是不是获取数据还要发CMR 0X000?

还有那么时序 自动触发和收到触发 是只有CONVST 不一样吗 ?

还有那个Read while sampling 和Read while comverting  有什么区别 

  • 表达错了 单通道是0x0000;

    手动触发

  • 如果是自动触发,就无需写CMR寄存器,手动触发的话需要写CMR命令。

    两种触发方式的区别可参考Table1:

    Read while sampling 和Read while converting的区别可直接参考Figure1~Figure4 采样时和转换时的时序。

  • 我想知道 我用示波器 出波形了 为什么读取数据读不了呢  按照时序来写的 难道在配置寄存器有问题吗?还有那个ReadCRF 有啥作用

    #include "ADS8329.h"
    #include "stdio.h"
    // source define--------------------------------------------------------------------
    float Verf=3.3f;

    // function define--------------------------------------------------------------------

    uint16_t ADS8329_Init(void) //Init
    {
    // ADS8329_CONVST_L();
    // BSP_DelayMs(100);
    ADS8329_CONVST_H();
    ADS8329_CS_L();
    ADS8329_CS_H();
    // ADS8329_WR_CRF(0xE7BD);
    // ADS8329_WR_CRF(ADS8329_CFR_SYS_RESET);//Èí¼þ¸´Î»
    // BSP_DelayUs(100);
    //
    // return 0;
    }


    /* д¼Ä´æÆ÷ */
    void ADS8329_WR_CRF(uint16_t cmd) //дÕý³£
    {

    ADS8329_CS_L();
    BSP_DelayUs(1);
    ADS8329_SPIWriteU16(cmd);
    BSP_DelayUs(1);
    ADS8329_CS_H();
    }

    /* ¶Á¼Ä´æÆ÷ */
    void ADS8329_RD_CRF(uint16_t data)
    {
    uint16_t RegData=0,Commd=0xd000;
    ADS8329_CS_L();
    BSP_DelayUs(1);
    ADS8329_SPIWriteU16(RegData);
    ADS8329_SPIWriteU16(Commd);
    BSP_DelayUs(1);
    ADS8329_CS_H();

    }

    //¶ÁÊý¾Ý
    static uint16_t ADS8329_RD_DATA(uint16_t channel)
    {
    // uint16_t ret=0;
    ADS8329_WR_CRF(ADS8329_CMD_CHANNEL);
    while(!ADS8329_EOC());
    ADS8329_CONVST_L();
    BSP_DelayUs(1);
    ADS8329_CONVST_H();
    ADS8329_WR_CRF(0xD000);
    while(!ADS8329_EOC());

    // return ret;
    }

    void ADS8329_Handler(void)
    {
    uint16_t value1,value2;
    float adsdata;
    ADS8329_Init();
    ADS8329_WR_CRF(0xe8ed);
    ADS8329_WR_CRF(0xe8ef);
    ADS8329_WR_CRF(0xd8ef);
    //
    // value1=ADS8329_RD_DATA(ADS8329_CMD_CHANNEL);
    //
    // value2=ADS8329_RD_DATA(ADS8329_CMD_CHANNEL);

    adsdata=(((float)value2*Verf)/65536.0f);
    UART_Send(EVAL_COM0,"2",1);
    printf("%0.3f V\r\n",adsdata); //´òÓ¡µçѹֵ
    }