AD7928, 70 dB min SINAD at 50 kHz input frequency
Flexible power/serial clock speed management
No pipeline delays
High speed serial interface SPI®/QSPI™/
MICROWIRE™/DSP compatible
这是AD7928datasheet上面的一段话,大致介绍了AD7928,这里提到没有通道延时,就是说转换结束就可以读取数据,不需等待,就可以输出结果。我的博客里面还有一个说AD转换器的文章(http://blog.chinaunix.net/uid-24343357-id-3218591.html),那个AD转换器,是有输出延时时间的。
看看管脚定义吧。
老样子,我不翻译英文了,我把比较重要的用红线标示出来了。
看看它的控制寄存器
这是我给控制寄存器配置的数值,什么意思,自己看datasheet吧,很简单的啊。
看好下面的流程,就明白了,这个流程也是写程序的关键。
Data is loaded from the DIN pin of the AD7908/AD7918/AD7928 on the falling edge of SCLK. The data is transferred on the DIN line at the same time that the conversion result is read from the part.就是说我们配置控制寄存器的时候,同时可以读取ADC转换结果。
下面我给出一段程序,网友可以自己修改,达到自己的要求。
-
#define DIN P1.0
-
#define DOUT P1.1
-
#define SCLK P1.2
-
#define CS P1.3
-
//我设置config_data=0x0833,
-
//选择通道0.二进制输出。想修改通道,修改config_data相应的位就好了。
-
//data_out是输出的结果,有16bit,后面12bit是ADC结果。
-
void Configure_ADC7928(unsigned int config_data,unsigned int *data_out)
-
{
-
DIN=1;
-
DOUT=1;
-
SCLK=1;
-
CS=1;
-
Delay(10);
-
CS=0;
-
for(char i=0;i<16;i++)
-
{
-
-
if((config_data<<i)&0x0100)
-
DIN=1;
-
else
-
DIN=0;
-
Delay(10);
-
SCLK=0;
-
Delay(10);
-
SCLK=1;
-
Delay(10);
-
if(DOUT)
-
*data_out=((*data_out)<<i)||0x0001;
-
else
-
*data_out=((*data_out)<<i)&0xFFFE;
-
-
}
-
CS=1;
-
}
-
用户377235 2014-3-6 13:54