256|4

1063

帖子

0

资源

纯净的硅(中级)

【安信可蓝牙开发板PB-02-Kit测评】A/D数据采集及测试 [复制链接]

在开发板的例程中,配有相应的A/D转换程序。为了掌握和学习其编程方法,故对其功能进行了测试。

该例程的主程序为:

int  main(void) 
{    
         // init global configuration of SOC
         int rrn = __return_address();
         g_system_clk = SYS_CLK_XTAL_16M;
         osal_mem_set_heap((osalMemHdr_t *)g_largeHeap, LARGE_HEAP_SIZE);
         init_config();
         hal_pwrmgr_init();
         hal_rfphy_init(); 
         hal_init();
         LOG("%x\n", rrn);
         app_main();    
}

该程序为了功能的实现,又从中调用了函数app_main(),其内容为:

int app_main(void)
{
    /* Initialize the operating system */
    osal_init_system();
    osal_pwrmgr_device( PWRMGR_BATTERY );
    /* Start OSAL */
    osal_start_system(); // No Return from here
    return 0;
}

其实,最终实现数据采集功能的是初始化函数hal_adc_init()和采集处理函数adc_evt(),其A/D数据采集功能则是以事件的方式来实现的。

所涉及的相应函数为:

void hal_adc_init(void) {
    mAdc_init_flg = TRUE;
    hal_pwrmgr_register(MOD_ADCC,NULL,adc_wakeup_hdl);
    clear_adcc_cfg();
}

 

static void adc_evt(adc_Evt_t* pev)
{
         float value = 0;
         int i = 0;
         bool is_high_resolution = FALSE;
         bool is_differential_mode = FALSE;
         if((pev->type != HAL_ADC_EVT_DATA) || (pev->ch < 2))
              return;
         osal_memcpy(adc_debug[pev->ch-2],pev->data,2*(pev->size));
         channel_done_flag |= BIT(pev->ch);
         if(channel_done_flag == adc_cfg.channel)
         {                        
              for(i=2;i<8;i++)
              {
                    if(channel_done_flag & BIT(i)) //2=0010 3=0011  4=0100 5=0101  6=0110 7=0111
                    {
                        is_high_resolution = (adc_cfg.is_high_resolution & BIT(i))?TRUE:FALSE;
                        is_differential_mode = (adc_cfg.is_differential_mode & BIT(i))?TRUE:FALSE;
                        value = hal_adc_value_cal((adc_CH_t) i,adc_debug[i-2], pev->size, is_high_resolution,is_differential_mode);
                               if(i<7)
                                 LOG("P%d %d mv ",(i+9),(int)(value*1000));   // i=2 3 4 5 6
                               else
                                 LOG("P%d %d mv ",(20),(int)(value*1000));    // i=7
                    }
               }
               LOG(" mode:%d \n",adc_cfg.is_continue_mode);
               channel_done_flag = 0;
               if(adc_cfg.is_continue_mode == FALSE)
               {
                    osal_start_timerEx( adcDemo_TaskID, adcMeasureTask_EVT,500);
               }
         }
}

经程序的编译和下载,其执行结果如图1所示。

从结果可以看出,它仅对3个引脚的模拟信号进行了采集,这3个引脚分别为P14、P15和P20。

image-20211120101403-1.png  

图1 运行结果

但需要指出的是,该采集过程似乎只执行一次就停止了,而不是持续的输出采集结果。

若想得到下一个采集值,就只能再次复位以触发事件来进行采集,见图2所示。

另外,在实际测试时发现板上P14和P15的位置似乎是相互标错了位置!

此外,有些让人不解的是明明所用的是for(i=2;i<8;i++)循环,为何却只采集了3个引脚的模拟信号?莫非所用的是差分式采集?

若该数据采集程序能实现持续的数据采集,则可以为其配置相应的模拟量传感器来感知外部的状态变化,例如使用土壤湿度传感器、气体传感器及压力传感器。

image-20211120101403-2.png  

图2 复位获得采集值

此帖出自RF/无线论坛

回复

6305

帖子

0

资源

五彩晶圆(初级)

这个采集过程似乎只执行一次就停止了,不是持续的输出采集结果,这个是怎么原因

点评

这个我个人觉得,是楼主没有看手册哈,应该是没有关闭进入休眠模式那个宏定义  详情 回复 发表于 2021-11-23 22:48

回复

1063

帖子

0

资源

纯净的硅(中级)

例程的编程思想与常规的编程思想差异较大,读其程序就像是在兜圈子,实在令人费解!


回复

1288

帖子

3

资源

版主

感谢分享,继续加油


回复

13

帖子

0

资源

一粒金砂(中级)

Jacktang 发表于 2021-11-22 09:25 这个采集过程似乎只执行一次就停止了,不是持续的输出采集结果,这个是怎么原因

这个我个人觉得,是楼主没有看手册哈,应该是没有关闭进入休眠模式那个宏定义


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    随便看看
    116-基于5VLX110T FPGA FMC接口功能验证6U CPCI平台

    ...

    国产自主研发核心技术之---实时级嵌入式系统半实物仿真测试平台(ETest_RT)

    实时级嵌入式系统半实物仿真测试平台(ETest_RT) 1.产品简介 ETest_RT是基于ET ...

    外场测试工作者的利器---便携式嵌入式系统半实物仿真测试平台(ETest)

    便携式嵌入式系统半实物仿真测试平台(ETest) 1.产品简介 ETest是一款便携式嵌 ...

    是德KEYSIGHT MSOX3054A原装二手DSOX3054A 混合型信号示波器

    美国 是德KEYSIGHT MSOX3054A ,DSOX3054A 混合型信号示波器 深圳市捷威信电子仪器 ...

    132千瓦螺杆空压机 佛山报价商 英格索兰RS系列

    螺杆空压机机房的管理也是十分重要的,管理的好坏,都会对空压机造成直接的影响。那么 ...

    什么是大带宽服务器

    什么是大带宽服务器?@Qwhtgj1 根据个人或者企业需求链接上网的业务,是传输速度,指 ...

    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表