微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 关于ADS8329

关于ADS8329

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

想问下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); //´òÓ¡µçѹֵ
}

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

网站地图

Top