#include "AD7606.h"
#include "Core.h"
#include "delay.h"
#include "global.h"
unsigned short int DataA[8];
unsigned short int DataB[8];
unsigned short int SampleCount;
unsigned short int i, j;
void AD7606_Init(void) //ADC3?那?℅∩足?
{
delay_ms(1); //?車那㊣1ms
OS0_0(); /* ?T1y2谷?迄 */
OS1_0();
OS2_0();
RESET_0();
CS_1(); //????
CONVSTA_B_1(); //???‘℅a??米???米?GPIO㏒???那㊣?a??
RD_SCLK_1();
delay_ms(1);
}
void AD7606Reset(void)
{
RESET_1();
delay_us(100); //?車那㊣100us
RESET_0();
delay_us(1); //?車那㊣1us
}
void AD7606ReadOneSample(unsigned short int *DoutA, unsigned short int *DoutB, unsigned char Channels)
{
unsigned char j, k;
unsigned short int TempA, TempB;
unsigned char Busy;
unsigned short int cnt=0;
CONVSTA_B_0(); ////CONVSTA?⊿B?a那?℅a??
delay_us(1); //?車那㊣1us
CONVSTA_B_1();
delay_us(2); //?車那㊣1us
Busy=GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_3);//?芍豕?BUSY辰y??℅∩足?
while(Busy==1) //?芍豕?BUSY辰y??℅∩足?,辰??㊣?芍米?BUSY?a0那㊣
{
//delay_us(1);
Busy=GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_3);//?芍豕?BUSY辰y??℅∩足?
cnt++;
if(cnt>=500) //﹞角?1D????e?米米????米赤3?角?-?﹞
{
cnt=0;
break;
}
}
CS_0();
for(j=0; j<4; j++) //A,B芍???赤“米角㏒?????赤“米角4?﹞那y?Y㏒?辰?128?﹞
{
TempA=0;
TempB=0;
for(k=0; k<16; k++) //??辰??﹞辰?1216??㏒?????辰?????DD豕??米
{
RD_SCLK_0();
TempA=(TempA<<1) + (GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6));
TempB=(TempB<<1) + (GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_7));
RD_SCLK_1();
}
#if 1
//℅??????a﹞?o???㏒?0㊣赤那??y那y㏒?1㊣赤那??o那y㏒??D??℅??????a1?米?a0(???∼?辰??2??芍3????o那y);3?那??米?a0㏒?TempA<30那??a芍?﹞角?13?那??米??2?
if(((TempA&0x8000)!=0))
{
DoutA[j]=0;
}
else
{
DoutA[j]=TempA;
}
if(((TempB&0x8000)!=0))
{
DoutB[j]=0;
}
else
{
DoutB[j]=TempB;
}
#else
DoutA[j]=TempA;
DoutB[j]=TempB;
#endif
}
CS_1();
delay_us(10);
}
void AD7606_data( void)
{
static unsigned short int cnt=0;
unsigned short int k;
AD7606ReadOneSample(DataA, DataB, 8);
if(DataA[0]==0&&DataA[1]==0&&DataA[2]==0&&DataA[3]==0&&DataB[0]==0&&DataB[1]==0&&DataB[2]==0&&DataB[3]==0)
{
cnt++;
if(cnt>=180)
{
cnt=0;
AD7606_Init();
AD7606Reset();
}
}
else
{
cnt=0;
// AD_data[0] =DataA[0]*5.00*1000/32768;
// AD_data[1] =DataA[1]*5.00*1000/32768;
// AD_data[2] =DataA[2]*5.00*1000/32768;
// AD_data[3] =DataA[3]*5.00*1000/32768;
// AD_data[4] =DataB[0]*5.00*1000/32768;
// AD_data[5] =DataB[1]*5.00*1000/32768;
// AD_data[6] =DataB[2]*5.00*1000/32768;
// AD_data[7] =DataB[3]*5.00*1000/32768;
//
for(k=0;k<4;k++)
{
AD_data[k] =DataA[k]*5.00*1000/32768; //?㏒?a芍??米????
AD_data[4+k] =DataB[k]*5.00*1000/32768;
}
}
}
void AD7606_Senddata(u8 *data,u16 num)
{
UART3_Put_String(data);
}
STM32开发AD7606代码
1星 需积分: 49 34 浏览量
2018-12-11
15:17:28
上传
评论 4
收藏 3KB ZIP 举报
xu107407
- 粉丝: 0
- 资源: 1
最新资源
- 已过基于Hadoop+Spark招聘推荐可视化系统 大数据项目 毕业设计(源码下载)
- python爬虫开发题答案及题目-100(1).zip
- Python 小游戏 (贪吃蛇、五子棋、扫雷、俄罗斯方块)-3 (2).zip
- c语言实现的数独小游戏.zip
- 高德地图中国行政区划省、市、县经纬度
- March 2024 Expiration Of The OAM Out Of The Box Certificates
- 二叉搜索树迭代器(java代码).docx
- 解决keil MDK 5.38版本 在Debug配置使用STlink调试时软件闪退的问题
- py小项目:用户登录和注册系统开发欢迎图片
- TCCEE-x64-v6.2.3(9.51)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈