我是靠谱客的博主 善良老鼠,最近开发中收集的这篇文章主要介绍【原创】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 采样试验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部