打印

ADC读写数据时序,请看看

[复制链接]
2042|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zoupeng139|  楼主 | 2009-3-11 13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 
  请帮忙分析下时序,上面是24位ADC AD7712的写寄存器时序,为什么我的程序总是不正确。对于上面的写时序,我理解是:
Ao是控制选择向寄存器写数据的,需置零,将CLK置低,TFS置高。将TFS置低开始写操作。然后将需要些的数据的最高位放于串行接口上,将SCLK置高(产生一个上升沿),ADC在CLK的高电平时将数据位锁存,然后将SCLK置低,产生一个下降沿,说明第一位已经结束。然后将次高位放在串口线上,然后上升沿,再下降沿……直到发完24位数据。我就按以上思路进行的编程,可是操作不正确,发现寄存器内容并未写进去。程序如下,请大虾们帮忙看看……
/*AD7712子程序*/
void Initial_AD7712()        //
 {
  uint j=0;
  WriteCommand_AD7712(0x22830D,1);  //通道2校准
  _nop_(); 
  WriteCommand_AD7712(0x02830D,1);  //通道2正常模式
  _nop_();   
}

void WriteCommand_AD7712(ulong writebyte, ch) // 
{   
 uint i = 0, k = 0;
KDLATCH = 0xFF; // ADTFS = 1; 
ADSCLK = 0; //ADSCLK置0
KDLATCH = 0xEF; //将ADTFS置0准备进行写操作;    
    
 for(i=24; i>0; i--)
 {    
  if (writebyte & 0x00800000)  //
  ADSDATD = 1;          
  else ADSDATD = 0;       //将数据位赋值
  _nop_();
  ADSCLK = 1;   //上升沿锁存数据
  _nop_();
  ADSCLK = 0;     _nop_();
writebyte<<=1; 
 }
 KDLATCH = 0xFF; //ADTFS置 1;  
}

void ReadData_AD7712()
{
 uint i = 0;
KDLATCH = 0xFF; // ADRFS = 1;
ADSCLK = 0;
while(ADDRDY); //判断是否有数据转换完成
KDLATCH = 0xDF; // ADRFS = 0; 
 for(i=8; i>1; i--)
 {
  a0 = ADSDATD; 
  a <<= 1;
  ADSCLK = 1;
  _nop_();
  ADSCLK = 0;
  _nop_();
 }
 ADSCLK = 1;
 _nop_();
 ADSCLK = 0;
 _nop_();
 a0 = ADSDATD;             
 Read_HByte = a;

 a = 0;
 for(i=8; i>1; i--)
 {
  a0 = ADSDATD; 
  a <<= 1;
  ADSCLK = 1;
  _nop_();
  ADSCLK = 0;
  _nop_();
 }
 ADSCLK = 1;
 _nop_();
 ADSCLK = 0;
 _nop_();
 a0 = ADSDATD;               
 Read_MByte = a;

 a = 0;
 for(i=8; i>1; i--)
 {
  a0 = ADSDATD; 
  a <<= 1;
  ADSCLK = 1;
  _nop_();
  ADSCLK = 0;
  _nop_();
 }
 ADSCLK = 1;
 _nop_();
 ADSCLK = 0;
 _nop_();
 a0 = ADSDATD;               
 Read_LByte = a;
       
 KDLATCH = 0xFF; //ADRFS = 1;
}
本来程序中设置是按24位模式进行数据转换,结果读取时,只能读取16位,证明参数设置未成功。

相关帖子

沙发
ayb_ice| | 2009-3-11 20:38 | 只看该作者

对着图,多看几遍

问题就会解决的.

使用特权

评论回复
板凳
wjy1107| | 2009-3-12 14:14 | 只看该作者

for(i=8; i>1; i--) 进入循环7次?

for(i=24; i>0; i--)进入24次?
这些程序与这么一个图无法判断是对是错,只能自己一个一个照图对了。

使用特权

评论回复
地板
zoupeng139|  楼主 | 2009-3-12 19:42 | 只看该作者

解决了

是硬件上的问题

使用特权

评论回复
5
HotC51| | 2009-3-13 01:38 | 只看该作者

学习了~~~

使用特权

评论回复
6
songbangyan| | 2009-3-13 14:15 | 只看该作者

疑问

我看你这个程序好像不是单片机的哦。430不过也才16为而已

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

429

帖子

2

粉丝