- /******************************************************************************
- *
- ** 函数原型:unsigned int ADS7841_Read_Data(unsigned char Channel);
- ** 功 能:SPI总线的A/D ADS7841 驱动程序
- ** 入口参数:unsigned char Channel 表示选择读取通道
- ** 出口参数:unsigned int 返回所读取得12位数据。
- ** 说 明:ADS7841为12位A/D,先对其进行设置:数据位D0---D7,其中D0---D1是
- ** 设置ADC的功耗模式,D2是模拟输入通道设置,H为4个单通道,L为两个
- ** 差分输入,D3为mode,当mode(pin)接地时为12位采样方式,接高电平时
- ** mode为1时8位采集,为0时12位采集,D4---D6为输入通道选择,D7为起始位
- ** 作 者: 绝鱼 nobody_008@163.com
- ** 日 期: 2006年11月11日
- **-----------------------------------------------------------------------------
- --------------------------
- ** 修 改 人: 绝鱼 nobody_008@163.com
- ** 日 期: 2006年11月06日
- *******************************************************************************
- /
- unsigned int ADS7841_Read_Data(unsigned char
- Channel) //Channel=0:CH0;1:CH1;2:CH2;3:CH3;
- {
- unsigned int ADCResult=0;
- unsigned char DataInput=0;
- unsigned char i,ADS7841_CHANNEL;
-
- switch (Channel)
- {
- case 0:ADS7841_CHANNEL=0x10;break;
- case 1:ADS7841_CHANNEL=0x50;break;
- case 2:ADS7841_CHANNEL=0x20;break;
- case 3:ADS7841_CHANNEL=0x60;break;
- default:ADS7841_CHANNEL=0x10;break;
- }
- DataInput=ADS7841_S|ADS7841_CHANNEL|ADS7841_MODE|ADS7841_SGL_DIF|ADS7
- 841_POWER_DOWN;
- DCLK=0;
- DIN=0;
- CS=VALID;
- for(i=0; i<8; i++)
- {
- DIN=DataInput&0x80;
- DataInput=DataInput<<1;
- DCLK=0;
- NOP;
- DCLK=1; //模拟SPI串行接口 发送数据
- }
- NOP;
- DCLK=0;
- while(BUSY)
- {
- NOP;
- DCLK=1;
- NOP;
- DCLK=0;
- } /*当BUSY脚由高变为低时,则开始数据输出*/
- NOP;
- for(i=0;i<12;i++)
- {
- DCLK=1;
- ADCResult=(ADCResult<<1)|DOUT; //模拟SPI串行接口 接收数据
- DCLK=0;
- NOP;
- }
- for(i=0;i<4;i++)
- {
- DCLK=1;
- NOP;
- DCLK=0;
- NOP;
- }
- CS=INVALID;
- return ADCResult;
- }
|