微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > CC2530外接传感器 ADC转换问题

CC2530外接传感器 ADC转换问题

时间:10-02 整理:3721RD 点击:
外接一个模拟输出的传感器模块,总共3个管脚,一个模拟输出,一个电源,一个地。
将模拟输出管脚接在飞比EB的P14插槽的29号管脚上,即P0端口的pin1,
串口每隔十几毫秒就输出“ - ”,不知道问题在哪儿,
代码如下,麻烦大家帮忙看看

float AvgTemp;
float getTemperature(void){
UINT16 value;
P0SEL|=0x02;//设置为外设
P0DIR&=0X02;//设置为输入
ADCIF = 0;
ADCCFG |= 0x1 << 1; //ADC输入通道pin1
ADCCON3 = (ADC_REF_1_25_V | ADC_14_BIT | ADC_AIN1) ;
while(!ADCIF );
value = ADCL >>4;
value |= (((UINT16)ADCH) << 4);
value=(float)(value/(float)2048)*3.3;
return value;
}
void InitUART0(void)
{
PERCFG = 0x00; //P0口
P0SEL = 0x3c; //P0作为串口

P2DIR &= 0XC0; //P0优先作为UART0
U0CSR |= 0x80; //串口设置为UART方式
U0GCR |= 9;
U0BAUD |= 59; //波特率19200

UTX0IF = 1; //UART0 TX中断标志 初始化1
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; //开总中断、接收中断

}

/****************************************************************
串口发送函数
****************************************************************/
void UartTX_Send_String(char *Data,int len)
{
int j;
for(j=0;j<len;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
U0DBUF = 0x0A; // »»DD
while(UTX0IF == 0);
UTX0IF = 0;
}

/****************************************************************

****************************************************************/
void main(void)
{
char TempValue[16];
InitUART0();
while(1)
{
AvgTemp = getTemperature();
sprintf(TempValue, "%f\n", AvgTemp);
UartTX_Send_String(TempValue,16);
Delay(50000);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top