ZIGBEE的CC2530芯片的ADC采样频率的设置
AD最高的采样频率跟转换时间有关系。但AD的采样频率是由程序控制决定的。为了使采样频率精准,一般用单片机的定时器来控制AD的转换,这样采样频率就由单片机定时器中断的时间决定了。
不用协议栈时,程序可能是类似这样(网上找的温度采集程序):
1 void main(void)
2 {
3 char i;
4 float AvgTemp;
5 char strTemp[6];
6
7 InitUART(); //初始化串口
8 InitSensor(); //初始化 ADC
9
10 while(1)
11 {
12 AvgTemp =GetTemperature();
13
14 for (i=0; i<63; i++)
15 {
16 AvgTemp += GetTemperature();
17 AvgTemp = AvgTemp/2; //每次累加后除 2
18 }
19
20 memset(strTemp, 0, 6);
21 sprintf(strTemp,"%.02f", AvgTemp);//将浮点数转成字符串
22 UartSendString(strTemp, 5); //通过串口发给电脑显示芯片温度
23 DelayMS(1000); //延时
24 }
25 }
这里的采样频率是否可以理解为1Hz? 那么我在协议栈里封装好的函数下写程序,实际上SampleApp_Send_P2P_Message函数是周期性地向外发送无线数据的。假设目前我要求对信号的采样频率要大于30Hz,我应该从哪里入手?