This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
TI大神:
cc2530采用ADC序列转换,ADC多次采集,将采集的数据通过DMA发送出去,请问有这方面的例程来看吗,谢谢!
ADC的。
/*描述:通过内部AD控制把温度信息通过 串口发送给上位机,部分芯片误差 较大,需要校准。手摸着芯片,温度 明显变大。 **************************************/ #include <ioCC2530.h> #include "InitUART_Timer.h" //注意在option里设置路径 #include "stdio.h" /**************************************************************** 温度传感器初始化函数 ****************************************************************/ void initTempSensor(void) { DISABLE_ALL_INTERRUPTS(); //关闭所有中断 InitClock(); //设置系统主时钟为 32M TR0=0X01; //set '1' to connectthe temperature sensorto the SOC_ADC. ATEST=0X01; // Enablesthe temperature sensor } /**************************************************************** 读取温度传感器 AD 值函数 ****************************************************************/ float getTemperature(void){ uint value; ADCCON3 = (0x3E); //选择1.25V为参考电压;14位分辨率;对片内温度传感器采样 ADCCON1 |= 0x30; //选择ADC的启动模式为手动 ADCCON1 |= 0x40; //启动AD转化 while(!(ADCCON1 & 0x80)); //等待 AD 转换完成 value = ADCL >> 4; //ADCL 寄存器低 2 位无效 value |= (((UINT16)ADCH) << 4); return (value-1367.5)/4.5-5; //根据 AD 值,计算出实际的温度,芯片手册有错,温度系数应该是4.5 /℃ //进行温度校正,这里减去5℃(不同芯片根据具体情况校正) } /**************************************************************** 主函数 ****************************************************************/ void main(void) { char i; char TempValue[6]; float AvgTemp; InitUART0(); //初始化串口 initTempSensor(); //初始化 ADC while(1) { AvgTemp = 0; for(i = 0 ; i < 64 ; i++) { AvgTemp += getTemperature(); AvgTemp=AvgTemp/2; //每次累加后除 2 } /****温度转换成ascii码发送****/ TempValue[0] = (unsigned char)(AvgTemp)/10 + 48; //十位 TempValue[1] = (unsigned char)(AvgTemp)%10 + 48; //个位 TempValue[2] = '.'; //小数点 TempValue[3] = (unsigned char)(AvgTemp*10)%10+48; //十分位 TempValue[4] = (unsigned char)(AvgTemp*100)%10+48; //百分位 TempValue[5] = '\0'; //字符串结束符 UartTX_Send_String( TempValue,6); Delayms(2000); //使用32M晶振,故这里2000约等于1S } }