835|0

17

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

HC32F4A0开发板ADC采样测试 [复制链接]

 

HC32F4A0开发板ADC采样测试

1概述

1.1开发板接口

        本MCU搭载3个ADC单元,单元1和2支持16个通道,单元3支持20个通道,可以转换来自外部引脚、以及芯片内部的模拟信号。模拟输入通道可以任意组合成一个序列,一个序列可以进行单次扫描转换,或连续扫描转换。支持对任意指定通道进行连续多次转换并对转换结果进行平均。ADC模块还搭载模拟看门狗功能,对任意指定通道的转换结果进行监视,检测其是否超出用户设定的范围;开发板的三路ADC通过连接器J10引出,其中ADC123_IN3连接可调电位器R105 10K,因此可以通过旋转电位器调节采样电压的值。

1.2开发板原理图

        ADC采样外围电路如图1所示。
图1 ADC采样外围电路示意图

1.3测试设备

        本次测试所用设备如表1所示,设备实物图连接图如图2所示:

测试设备 单位 数量
EV_F4A0_LQ176_REV1.0开发板
ARM仿真器
5V电源适配器
RIGOL DHO804示波器
表1 测试设备
图2 开发板实物连接图

2代码编写

时钟配置

static void AdcClockConfig(void)
{

    CLK_SetClockDiv((CLK_BUS_PCLK2 | CLK_BUS_PCLK4), (CLK_PCLK2_DIV1 | CLK_PCLK4_DIV8));

    CLK_SetPeriClockSrc(ADC_CLK);
}

采样函数

static void AdcPolling(uint16_t u16Width,uint16_t u16Height)
{
    uint16_t u16AdcValue;
    int32_t iRet = LL_ERR;
    __IO uint32_t u32TimeCount = 0UL;

    /* Can ONLY start sequence A conversion.
       Sequence B needs hardware trigger to start conversion. */
    ADC_Start(ADC_UNIT);
    do {
        if (ADC_GetStatus(ADC_UNIT, ADC_EOC_FLAG) == SET) {
            ADC_ClearStatus(ADC_UNIT, ADC_EOC_FLAG);
            iRet = LL_OK;
            break;
        }
    } while (u32TimeCount++ < ADC_TIMEOUT_VAL);

    if (iRet == LL_OK) {
        /* Get any ADC value of sequence A channel that needed. */
        u16AdcValue = ADC_GetValue(ADC_UNIT, ADC_CH);
        lcd_show_xnum(20,60,(ADC_CAL_VOL(u16AdcValue))/1000,1,32,0,LCD_COLOR_BLACK,u16Width,u16Height);
		lcd_show_xnum(52,60,(ADC_CAL_VOL(u16AdcValue))%1000,3,32,0,LCD_COLOR_BLACK,u16Width,u16Height);
    } else {
        ADC_Stop(ADC_UNIT);
        lcd_show_string(20,100,u16Width,32,32,"error:",LCD_COLOR_BLACK,u16Width,u16Height);
    }
}

主函数

int32_t main(void)
{
    uint16_t u16Width;
    uint16_t u16Height;
	
    /* MCU Peripheral registers write unprotected */
    LL_PERIPH_WE(LL_PERIPH_ALL);
    /* Initialize system clock: */
    BSP_CLK_Init();
	BSP_IO_Init();
	BSP_LED_Init();
    /* EXCLK 30MHz */
    //CLK_SetClockDiv(CLK_BUS_EXCLK, CLK_EXCLK_DIV8);
	AdcConfig();

    BSP_LCD_IO_Init();

    /* Initialize NT35510 LCD */
    BSP_NT35510_Init();

    /* Clear LCD screen */
    BSP_NT35510_Clear(LCD_COLOR_WHITE);

    /* Turn on LCD backlight */
    BSP_LCD_BKLCmd(EIO_PIN_SET);

    /* MCU Peripheral registers write protected */
    LL_PERIPH_WP(LL_PERIPH_ALL);

    u16Width = BSP_NT35510_GetPixelWidth();
    u16Height = BSP_NT35510_GetPixelHeight();
	lcd_show_string(20,20,u16Width,32,32,"The sampling voltage is:",LCD_COLOR_BLACK,u16Width,u16Height);
	lcd_show_string(40,60,u16Width,32,32,".",LCD_COLOR_BLACK,u16Width,u16Height);
	lcd_show_string(100,60,u16Width,32,32,"V",LCD_COLOR_BLACK,u16Width,u16Height);
	while(1){
		AdcPolling(u16Width,u16Height);
	};
}

3实验现象

3.1实验现象分析

        调节开发板上的可调电位器,得到的电压值应符合变化趋势,通过示波器测量电位器的中间引脚,可和采样得到的电压值进行对比分析。

3.2实验现象

如视频所示

电压采集屏幕显示

示波器测量电压变化趋势

 

点赞 关注
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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