我是靠谱客的博主 善良老鼠,最近开发中收集的这篇文章主要介绍【原创】zstack - 协议栈程序精简日志- AD 采样试验【原创】zstack - 协议栈程序精简日志- AD 采样试验,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
【原创】zstack - 协议栈程序精简日志- AD 采样试验
闲来无事测试zstack协议栈的记录。
zstack协议栈中已经有完整的AD采样接口api,位于hal_adc文件中,提供的接口如下:
/* 采样位数 */
#define HAL_ADC_RESOLUTION_8 0x01
#define HAL_ADC_RESOLUTION_10 0x02
#define HAL_ADC_RESOLUTION_12 0x03
#define HAL_ADC_RESOLUTION_14 0x04
/* 通道号 */
#define HAL_ADC_CHANNEL_0 0x00
#define HAL_ADC_CHANNEL_1 0x01
#define HAL_ADC_CHANNEL_2 0x02
#define HAL_ADC_CHANNEL_3 0x03
#define HAL_ADC_CHANNEL_4 0x04
#define HAL_ADC_CHANNEL_5 0x05
#define HAL_ADC_CHANNEL_6 0x06
#define HAL_ADC_CHANNEL_7 0x07
#define HAL_ADC_CHN_AIN0 0x00 /* AIN0 */
#define HAL_ADC_CHN_AIN1 0x01 /* AIN1 */
#define HAL_ADC_CHN_AIN2 0x02 /* AIN2 */
#define HAL_ADC_CHN_AIN3 0x03 /* AIN3 */
#define HAL_ADC_CHN_AIN4 0x04 /* AIN4 */
#define HAL_ADC_CHN_AIN5 0x05 /* AIN5 */
#define HAL_ADC_CHN_AIN6 0x06 /* AIN6 */
#define HAL_ADC_CHN_AIN7 0x07 /* AIN7 */
#define HAL_ADC_CHN_A0A1 0x08 /* AIN0,AIN1 */
#define HAL_ADC_CHN_A2A3 0x09 /* AIN2,AIN3 */
#define HAL_ADC_CHN_A4A5 0x0a /* AIN4,AIN5 */
#define HAL_ADC_CHN_A6A7 0x0b /* AIN6,AIN7 */
#define HAL_ADC_CHN_GND 0x0c /* GND */
#define HAL_ADC_CHN_VREF 0x0d /* Positive voltage reference */
#define HAL_ADC_CHN_TEMP 0x0e /* Temperature sensor */
#define HAL_ADC_CHN_VDD3 0x0f /* VDD/3 */
#define HAL_ADC_CHN_BITS 0x0f /* Bits [3:0] */
#define HAL_ADC_CHANNEL_TEMP HAL_ADC_CHN_TEMP
#define HAL_ADC_CHANNEL_VDD HAL_ADC_CHN_VDD3 /* channel VDD divided by 3 */
/* Vdd Limits */
#define HAL_ADC_VDD_LIMIT_0 0x00
#define HAL_ADC_VDD_LIMIT_1 0x01
#define HAL_ADC_VDD_LIMIT_2 0x02
#define HAL_ADC_VDD_LIMIT_3 0x03
#define HAL_ADC_VDD_LIMIT_4 0x04
#define HAL_ADC_VDD_LIMIT_5 0x05
#define HAL_ADC_VDD_LIMIT_6 0x06
#define HAL_ADC_VDD_LIMIT_7 0x07
/* Reference Voltages */
#define HAL_ADC_REF_125V 0x00 /* Internal Reference (1.25V-CC2430)(1.15V-CC2530) */
#define HAL_ADC_REF_AIN7 0x40 /* AIN7 Reference */
#define HAL_ADC_REF_AVDD 0x80 /* AVDD_SOC Pin Reference */
#define HAL_ADC_REF_DIFF 0xc0 /* AIN7,AIN6 Differential Reference */
#define HAL_ADC_REF_BITS 0xc0 /* Bits [7:6] */
/*
* Initialize ADC Service with reference set to default value
*/
extern void HalAdcInit ( void );
/*
* Read value from a specified ADC Channel at the given resolution
*/
extern uint16 HalAdcRead ( uint8 channel, uint8 resolution );
/*
* Set the reference voltage for the ADC
*/
extern void HalAdcSetReference ( uint8 reference );
就这么简单,这三个函数就可以完成AD采样控制,具体例程如下:
说明:采样端口有三个,分别是P0.0,P0.1 P0.7
在SampleApp.C 的初始化函数中添加如下部分:
APCFG |= 0x83; //p0.7 p0.0 p0.1 设置为adc功能
HalAdcInit();
HalAdcSetReference ( HAL_ADC_REF_AVDD );
在需要的地方调用读取函数,如下:
void SampleApp_SendPointToPointMessage( void )
{
。。。
adc_ch0[data_pc] = HalAdcRead ( HAL_ADC_CHANNEL_0, HAL_ADC_RESOLUTION_12 );
for(i=0,val=0;i<DataSize;i++) {
val += adc_ch0[i];
}
。。。。
adc_ch1[data_pc] = HalAdcRead ( HAL_ADC_CHANNEL_1, HAL_ADC_RESOLUTION_12 );
for(i=0,val=0;i<DataSize;i++) {
val += adc_ch1[i];
}
。。。。
adc_ch7[data_pc] = HalAdcRead ( HAL_ADC_CHANNEL_7, HAL_ADC_RESOLUTION_12 );
for(i=0,val=0;i<DataSize;i++) {
val += adc_ch7[i];
}
、。。。。
if ( AF_DataRequest( &Point_To_Point_DstAddr,
&SampleApp_epDesc,
SAMPLEAPP_POINT_TO_POINT_CLUSTERID,
20,
T,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
}
else
{
// Error occurred in request to send.
}
}
}
最后
以上就是善良老鼠为你收集整理的【原创】zstack - 协议栈程序精简日志- AD 采样试验【原创】zstack - 协议栈程序精简日志- AD 采样试验的全部内容,希望文章能够帮你解决【原创】zstack - 协议栈程序精简日志- AD 采样试验【原创】zstack - 协议栈程序精简日志- AD 采样试验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复