/*
* --------------"拉普兰德K60底层库"示例工程-----------------
*
* 测试硬件平台: LPLD_K60 Card
* 版权所有: 北京拉普兰德电子技术有限公司
* 网络销售: http://laplenden.taobao.com
* 公司门户: http://www.lpld.cn
*
* 说明: 本工程基于"拉普兰德K60底层库"开发,
* 所有开源驱动代码均在"LPLD"文件夹下,调用说明见文档[#LPLD-003-N]
*
* 文件名: LPLD_ADC.c
* 用途: 模数转换示例程序
*
* LPLD_K60 Card 硬件配置说明:
* 模拟信号由PTB1引脚输入
*
*
*/
#include "common.h"
#include "HAL_ADC.h"
#include "HAL_UART.h"
#include "delay.h"
//全局变量定义
char UART_Recv_Data;
void uart0_recv_isr(void);
void delay(void);
void CRC16(char *Array ,int Len) ;
int16 Adc0_Result;
int16 z1[5],z2[5],z3[5],z4[5],z5[5];
char Array[10]; //要发送的数组,前八位为4个通道低与高字节,后二位为CRC码
char i_1=0,i_count=0;
/********************************************************************/
void main (void)
{ //初始化串口0
LPLD_UART_Init(UART1, 9600);
/*
初始化 ADC0
十位精度
单端输入
*/
LPLD_ADC_Init(ADC0, MODE_10, CONV_SING);
LPLD_ADC_Init(ADC1, MODE_10, CONV_SING);
while(1)
{
//z1[4] = LPLD_ADC_SE_Get(ADC0, 8); // 取得ang 的AD值,引脚输入PTB0
//z2[4]= LPLD_ADC_SE_Get(ADC0, 9); // 取得Gyro的AD值,引脚输入PTB1
z1[4] = LPLD_ADC_SE_Get(ADC1, 4); // 取得 X 的AD值,引脚输入PTE0
z2[4] = LPLD_ADC_SE_Get(ADC1, 5); // 取得 Y 的AD值,引脚输入PTE1
z3[4] = LPLD_ADC_SE_Get(ADC1, 6); // 取得 Z 的AD值,引脚输入PTE2
// z1[i_count]=1000;//z1[i_count]=Adc0_Result;
//delay_ms(5);
// z2[i_count]=1500;//z2[i_count]=Adc0_Result;
// delay_ms(5);
// z3[i_count]=2000;//z3[i_count]=Adc0_Result;
// delay_ms(5);
// z4[i_count]=500; //z4[i_count]=Adc0_Result;
// i_count++;
// if(i_count>3)
// i_count=0;
// z1[4]=(z1[0]+z1[1]+z1[2]+z1[3])/4;
//z2[4]=(z2[0]+z2[1]+z2[2]+z2[3])/4;
//z3[4]=(z3[0]+z3[1]+z3[2]+z3[3])/4;
//z4[4]=(z4[0]+z4[1]+z4[2]+z4[3])/4;
Array[0]=(z1[4]&0x00ff); //低位 0与1组成第一个通道的数据
Array[1]=(z1[4]&0xff00)>>8; //高位
Array[2]=(z2[4]&0x00ff);
Array[3]=(z2[4]&0xff00)>>8;
Array[4]=(z3[4]&0x00ff);
Array[5]=(z3[4]&0xff00)>>8;
Array[6]=(z4[4]&0x00ff);
Array[7]=(z4[4]&0xff00)>>8;
CRC16(Array,8);
for(i_1=0;i_1<10;i_1++)
LPLD_UART_PutChar(UART1, Array[i_1]);
delay_ms(10);
}
}
void CRC16(char *Array ,int Len)
{
int IX,IY,CRC;
CRC=0xffff;
for(IX=0;IX<Len;IX++)
{
CRC=CRC^(unsigned int)(Array[IX]);
for(IY=0;IY<=7;IY++)
{
if((CRC&1)!=0)CRC=(CRC>>1)^0xA001;
else CRC=CRC>>1;
}
}
Array[8]=CRC&0x00ff;
Array[9]=(CRC&0xff00)>>8;
}