搜索
bottom↓
回复: 2

有人用过AD7714吗?

[复制链接]

出0入0汤圆

发表于 2012-4-27 10:23:49 | 显示全部楼层 |阅读模式
本帖最后由 szlbz 于 2012-4-27 10:25 编辑

C8051F320用SPI方式和普通模拟方式与AD7714连接,都不能正常读数。
#define _MAIN_C_
#include "mytypedef.h"
#include "usb.H"
#include "F32x_USB_Register.h"
#include "C8051FMacros.H"

#define SYSCLK             24000000    // Internal oscillator frequency in Hz
#define  F_SCK_MAX         2000000     // Max SCK freq (Hz)
#define uchar unsigned char
uchar data ad_data[3];
unsigned long addata;

INT8U USB_InBuff[EP1_PACKET_SIZE];
INT8U USB_OutBuff[EP2_PACKET_SIZE];
sbit AD_CS=P1^4;
sbit AD_CLK=P1^0;
sbit AD_DOUT=P1^1;
sbit AD_DIN=P1^2;
sbit AD_DRDY=P1^3;

void Clock_Init( void );
void GPIO_Init( void );
void WriteToReg_ADC(unsigned char byteword);
void delay_1ms(uchar time);
unsigned long ADC_data24bit(void);

void delay_1ms(uchar time)
{//延迟1ms
        uchar i;
//        uchar j;
        for (i=0;i<time;i++){
//                for(j=0;j<300;j++);
        }
}

void InitADC(void)
{
        WriteToReg_ADC(0x20);//选择下一个写滤波高寄存器
        WriteToReg_ADC(0xc1);//单极性,24位
        WriteToReg_ADC(0x30);//选择下一个写滤波低寄存器
        WriteToReg_ADC(0x80);//写滤波低寄存器第一个凹点频率为50hZ
        WriteToReg_ADC(0x10);//选择通道下冷饮对模式寄存器进行写操作
        WriteToReg_ADC(0x20);//选择正常模式,增益1,自校准
//        WriteToReg_ADC(0x28);//选择正常模式,增益4,自校准
        delay_1ms(20);
}

void WriteToReg_ADC(unsigned char byteword)
{
  unsigned char Token,i;
  Token=0x80;
  AD_CLK=0;
  AD_CS=0;
  for(i=0;i<8;i++)
  {
    AD_CLK=0;
    if(byteword & Token) AD_DIN=1;
    else AD_DIN=0;
    AD_CLK= 1;
    Token=Token>>1;
   }
   AD_CLK=0;
   AD_DIN=1;
   AD_CS=1;
}

unsigned long ADC_data24bit(void)
{
  unsigned long temp;
  unsigned char i;
  while(AD_DRDY==1)
  {
//        delay_1ms(1);
  }
  WriteToReg_ADC(0x58);
  AD_CLK=0;
  AD_CS=0;
  temp=0;
  for(i=0;i<24;i++)
  {
    temp=temp<< 1;
    AD_CLK=1;
    temp=(temp|AD_DOUT);
    AD_CLK=0;
  }
  AD_CLK=0;
  AD_CS=1;
//  addata=temp;
  return(temp);
}

void GPIO_Init( void )
{
    P1MDOUT   = 0x02;
    P0SKIP    = 0xFF;
    P1SKIP    = 0xFF;
    P2SKIP    = 0x0F;
    XBR1      = 0x40;
}

void Clock_Init( void )
{
        INT8U i;
        if( ( CLKMUL & ( 1<<5 ) ) ) return;
        CLKMUL = 0;
        CLKMUL |= ( 1<<7 );
        for( i = 0; i < 250; i ++ );
        CLKMUL |= 0xC0;
        for( i = 0; i < 250; i ++ );
        while( !( CLKMUL & ( 1<<5 ) ) );
        CLKSEL = ( 2<<0 );
}

int main( void )
{
        uchar i;
        PCA0MD &= ~( 1<<6 );             //Disable the WDT
        EA = 0;
    GPIO_Init( );
        Clock_Init( );                   //Config the clock
        USB_Init( USB_ENABLE );          //Init the USB module
        AD_CS=0;
    for(i=0;i<34;i++)
    {
          AD_DIN=1;
        }
        InitADC();
        EA = 1;                          //Enable the global interrupt
        delay_1ms(100);
    AD_CLK=0;
        while( 1 )
        {
                addata=ADC_data24bit();
        USB_OutBuff[1] =addata>>0;
        USB_OutBuff[2] =addata>>8;
        USB_OutBuff[3] =addata>>16;
//           //SPIEN=0;//关闭SPI
                HID_SendData( USB_OutBuff, 32 );//通过USB传送数据
        }
        return 0;
}
这些代码都是网上找的。
请各位帮忙看看,谢谢各位!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-4-27 14:07:45 | 显示全部楼层
24位ad?

出0入0汤圆

 楼主| 发表于 2012-4-27 14:24:18 | 显示全部楼层
是24位AD
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 23:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表