打印

封装的AD及DA程序供参考,觉得没用的就路过

[复制链接]
1806|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
re张风|  楼主 | 2012-4-19 23:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
封装好的AD及DA的应用函数定义如下:
typedef unsigned int ADCHandle;
typedef unsigned int DACHandle;
#define ADCH5  (unsigned short)0x4  // GPIO12
#define ADCH6  (unsigned short)0x5  // GPIO13
#define ADCH7  (unsigned short)0x6  // GPIO14
#define ADCH8  (unsigned short)0x7  // GPIO16
#define ADCH9  (unsigned short)0x8  // GPIO17
#define ADCH10 (unsigned short)0x9  // GPIO18
/************DAC通道定义******************/
#define DACH1  0x0  // GPIO0
#define DACH2  0x1    // GPIO1

/*
功能:ADC初始化
参数:
    输入:
        hADC     :需要打开并初始化的AD通道 ADC1---ADC10
        ADC_Rate : AD采样率
        ADCData  : AD采集数据的BUFF
        DLen     :该通道需要采集的个数
    返回:已成功打开的AD通道handle值
*/
ADCHandle InitADC( unsigned short hADC , unsigned char ADC_Rate , unsigned short *ADCData , unsigned short DLen);

/*
功能:读取ADC所采集的值
参数:
    输入:
        hADC  已打开的ADC通道的handle值
    返回:
*/
int  StartADCVal( ADCHandle hADC );

/*
功能:读取已启动采集的ADC的采集状态
参数:
    输入:无
    输出: 1  采集完毕,要吧读取AD数据
           0  系统还在采集数据
*/
int GetADC_State(void);

/*
功能:
参数:
    输入:hDAC 要启动的ADC编号,限DACH1,DACH2有效
    返回:>0 成功打开的DAC handle值
          =0 打开DAC失败

*/
DACHandle  StartDAC( int hDAC ) ;

/*
功能:
参数:
    输入:
        hDAC 已打开的DAC handle值
        DACData 需要设置DAC输出电压对应的十六进制编码值
    返回:1  设置成功
          0  设备失败
*/
int  SetDACVal( DACHandle hDAC , unsigned short DACData );






使用方法:
     __IO unsigned short  vADC[30];
    ADCHandle    hADC;
    DACHandle    hDAC;

    hDAC = StartDAC( DACH2 ); //打开DAC2
    SetDACVal( hDAC , 4000 ); //在DAC2上输出((3.3/4096)*4000)V电压信号

    hADC = InitADC( ADCH10 , 0 , vADC , 16);// 打开ADC,读取16个连续采集的数据
    StartADCVal( hADC );//启动已打开的ADC

    while( !GetADC_State() );//等待ADC将16个数据全部转换完成
    printf("%04d %04d %04d %04d %04d %04d %04d %04d %04d %04d %04d %04d %04d %04d %04d %04d    \r",
                vADC[0],vADC[1],vADC[2],vADC[3],
                vADC[4],vADC[5],vADC[6],vADC[7],
                vADC[8],vADC[9],vADC[10],vADC[11],
                vADC[12],vADC[13],vADC[14],vADC[15]);//读取已采集的数据

现在还有两个问题我没有去处理(有空了再继续):
1、灵活地设置采集周期
2、ADC2通道加入并使用

如觉得有用的话,就下载源码: SRC_API_TST.zip (4.02 KB)
没用的话就路过,能给些建议,感激不尽了!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:走,向前走,再走,继续走! http://www.uectr.com

51

主题

525

帖子

1

粉丝