Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2294023
  • 博文数量: 187
  • 博客积分: 1457
  • 博客等级: 上尉
  • 技术积分: 2423
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-13 09:41
个人简介

如需要绘制PCB,设计电路可以和我联系。sunhenu@163.com.

文章分类

全部博文(187)

文章存档

2017年(2)

2016年(2)

2015年(7)

2014年(13)

2013年(80)

2012年(83)

分类: LINUX

2012-07-02 21:19:53

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转换结果。
下面我给出一段程序,网友可以自己修改,达到自己的要求。

点击(此处)折叠或打开

  1. #define DIN  P1.0
  2. #define DOUT P1.1
  3. #define SCLK P1.2
  4. #define CS   P1.3
  5. //我设置config_data=0x0833,
  6. //选择通道0.二进制输出。想修改通道,修改config_data相应的位就好了。
  7. //data_out是输出的结果,有16bit,后面12bit是ADC结果。
  8. void Configure_ADC7928(unsigned int config_data,unsigned int *data_out)
  9. {
  10.     DIN=1;
  11.     DOUT=1;
  12.     SCLK=1;
  13.     CS=1;
  14.     Delay(10);
  15.     CS=0;
  16.     for(char i=0;i<16;i++)
  17.     {
  18.     
  19.             if((config_data<<i)&0x0100)
  20.                 DIN=1;
  21.             else
  22.                 DIN=0;
  23.             Delay(10);
  24.             SCLK=0;
  25.             Delay(10);
  26.             SCLK=1;
  27.             Delay(10);
  28.             if(DOUT)
  29.                 *data_out=((*data_out)<<i)||0x0001;
  30.             else
  31.                 *data_out=((*data_out)<<i)&0xFFFE;
  32.             
  33.     }
  34.     CS=1;
  35. }

 
阅读(5783) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~