打印

AD 转换芯片AD7844 求助

[复制链接]
1877|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huchengxtu|  楼主 | 2009-8-18 17:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问用过AD7844的大哥,今天调试AD7844 12位8路串行AD。
出现一个诡异的问题 BUSY端出现脉冲信号 也就是说我写命令正常并且他已经传唤完成,传送结果。不管我测多大的电压 MCU收到的全是0,而且用示波器看 输出数据的脉冲峰峰值只有640mv。
请大家帮我看看 http://article.**/Analog/20080113090014.htm这是找的资料
这是我的程序
#include "config.h"
#include "12864MENU.h"
sbit c_SPI_CS = P2^2;
sbit c_SPI_SI = P2^1;    //MO   DIN
sbit c_SPI_SO = P0^0;    //MI   DOUT
sbit c_SPI_CLK = P2^3;
#define Macro_Set_SI_High()   c_SPI_SI = 1
#define Macro_Set_SI_Low()   c_SPI_SI = 0
#define Macro_Set_CLK_High()  c_SPI_CLK = 1
#define Macro_Set_CLK_Low()   c_SPI_CLK = 0
#define Set_CS_Low()       c_SPI_CS = 0
#define Set_CS_High()       c_SPI_CS = 1
INT16U  ADC_Value;
INT8U  ADC_Value_Arr[8];
void SPI_SendByte(INT8U ucSendData)
{
INT8U ucCount;
INT8U ucMaskCode;
ucMaskCode = 0x01;
for(ucCount=0; ucCount<8; ucCount++)
{
  Macro_Set_CLK_Low();
  if(ucMaskCode & ucSendData)
  {
   Macro_Set_SI_High();
  }
  else
  {
   Macro_Set_SI_Low();
  }
  Macro_Set_CLK_High();
  ucMaskCode <<= 1;
}
_nop_();
_nop_();
_nop_();
}
/*******************************************************************************************************************
** º¯ÊýÃû³Æ: INT8U SPI_RecByte()    Name:   INT8U SPI_RecByte()
** ¹¦ÄÜÃèÊö: ´ÓSPI½Ó¿Ú½ÓÊÕÒ»¸ö×Ö½Ú    Function: receive a byte from SPI inte**ce
** Êä¡¡  Èë: ÎÞ         Input:   NULL
** Êä ¡¡ ³ö: ÊÕµ½µÄ×Ö½Ú       Output:   the byte that be received
********************************************************************************************************************/
INT8U SPI_RecByte(void)
{
INT8U ucReadData;
INT8U ucCount;
ucReadData = 0;
Macro_Set_SI_Low();
c_SPI_SO=1;
for(ucCount=0; ucCount<8; ucCount++)
{
  ucReadData <<= 1;  
     
  Macro_Set_CLK_High();
  
  _nop_();_nop_();_nop_();_nop_();
  _nop_();_nop_();_nop_();_nop_();
   Macro_Set_CLK_Low();
   //c_SPI_SO=1;
  if(c_SPI_SO)
  {
   ucReadData|= 0x01;
  }
  //else ucReadData &=~0x01;
}
return(ucReadData);
}
INT16U AD7844_Value(void)
{ INT8U HData,LData;
INT16U AllData;
   Set_CS_Low();
SPI_SendByte(0x8f);     //³õʼ»¯ д¿ØÖÆ×Ö ¿ªÆô0ͨµÀת»»
  _nop_();_nop_();_nop_();_nop_();
  _nop_();_nop_();_nop_();_nop_();
    c_SPI_SO=1;
HData=SPI_RecByte();
    //for(i=50;i>0;i--)
LData=SPI_RecByte();
   //Set_CS_High();
LData=LData&0xf0;
LData>>=4;
AllData=HData;
AllData<<=4;
AllData=AllData|LData;
return(AllData);
}

ADS7844[1].pdf

203.14 KB

AD7844技术手册

相关帖子

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

本版积分规则

14

主题

58

帖子

0

粉丝