【HC32F460开发板测评】(第五篇)片内程控增益放大器(PGA)测评
[复制链接]
本帖最后由 梦溪开物 于 2021-5-27 16:46 编辑
一、引言
本次关于HC32F460开发板快接近尾声了,仍有一点意犹未尽的感觉。在基本完成之前提交的HC32F460开发板的测评计划后,发现HC32F460单片机还有一个比较有意思的外设,这个外设的中文名叫程控增益放大器,英文名叫programmable gain amplifier,缩写为PGA。PGA在模拟电路中的用处比较大,对于一些传感器的模拟信号的放大的情形,它与运算放大器,具有一些独特的优势。第一,PGA集成度更高,具有低噪声低失真的特点【1】;第二、PGA通过程序调节反馈电阻的阻值来改变放大倍数,调节十分方便【2】。对于集成了PGA的MCU,可以采用一键式编程,放大模拟信号就更方便了,同时也节省了额外的电子元器件,降低了生产成本,具有显著的优势。接下来请允许我展开本次的测评。
二、测评内容
2.1 HC32F460单片机的PGA外设介绍
本次使用的HC32F460开发板的单片机型号为HC32F460PCTB-LQFP100,查阅该用户手册关于ADC外设的介绍【3】,发现该单片机搭载了可编程增益放大器PGA,可见在模拟电路和数字电路的混合设计中,ADC与PGA联系得多么紧密。该单片机只含有一个PGA,只有ADC1 支持PGA,使用时需要额外注意。HC32F460单片机的PGA工作示意图如图2-1所示,图中的PGA在ADC1的输入通道与ADC1之间,可以打开也可以关闭(用库函数ADC_PgaCmd( )设置)。在输入模拟信号幅值较高时,可以不用;在输入模拟信号幅值较低时,尤其检测一些电压型传感器时,则需要经过PGA放大再进行ADC采用。虽然叫做程控增益放大器,但是在MCU中,它的放大倍数不是任意设置的,需要按照数据手册中的表格来操作,如图2-2所示。
图2-1 HC32F460单片机的PGA工作示意图
图2-2 HC32F460单片机的PGA增益选择表
2.2 HC32F460单片机的PGA外设放大特性测评
打开样例程序hc32f46x_ddl_Rev1.3.0,进入example文件夹,打开里面的adc文件夹,使用IAR打开adc_12_adc1_pga工程,该程序可以完成对HC32F460单片机PGA外设的放大特性进行测评。在软件上,打开main.c 程序中,设置好PGA的放大倍数,信号通道、系统时钟等参数后,调用oled的库函数,将放大后的模拟信号的幅值显示在OLED屏上(该幅值可以通过连接PGA外设输出的ADC1采样值转换得到);在软件上,将电位器输出端 VRO 与引脚 ADC1_IN0 相连,使电位器输出到 ADC1_IN0。其中,根据HC32F460的硬件开发指南【5】,硬件连接引脚如图2-3所示,核心程序如下,主要功能包括ADC与PGA的配置,以及PGA的增益程序和ADC的采样程序,重要语句配有中文解释。
int32_t main(void)
{
/* Default clock is MRC(8MHz) */
/* ADC. */
AdcConfig();
/* Config UART for printing. Baud rate 115200. */
Ddl_UartInit();
/***************** Configuration end, application start **************/
OLED_Init();
while (1u)
{
float ADC_PGA_Voltage=0; //输入到ADC1_IN0口的模拟信号
int i,j,k;
ADC_PgaCmd(Disable); //关闭PGA外设
ADC_PollingSa(M4_ADC1, m_au16Adc1Value, ADC1_CH_COUNT, TIMEOUT_MS);
//ADC直接采样ADC_IN0口的模拟信号的值,串口打印
printf("\nBefore PGA enable.");
printf("\nADC1_IN0 value %d.", m_au16Adc1Value[0u]);
printf("\nADC1_IN0 voltage is %.4fV.",
((float)m_au16Adc1Value[0u] * ADC_VREF) / (float)ADC1_ACCURACY);
/* Enable PGA. */
ADC_PgaCmd(Enable);//打开PGA外设
ADC_PollingSa(M4_ADC1, m_au16Adc1Value, ADC1_CH_COUNT, TIMEOUT_MS);
//ADC直接采样经过PGA外设放大的ADC_IN0口的模拟信号的值,串口打印
printf("\nAfter PGA enable and factor is %f.", ADC_PGA_FACTOR);
printf("\nADC1_IN0 value %d.", m_au16Adc1Value[0u]);
printf("\nADC1_IN0 voltage is %d.",
(int)((((m_au16Adc1Value[0u] * ADC_VREF) / (float)ADC1_ACCURACY))*10000));
//OLED屏显示ADC直接采样经过PGA外设放大的ADC_IN0口的模拟信号的值,5位有效数字,精确到小数点后四位
ADC_PGA_Voltage = (((float)m_au16Adc1Value[0u] * ADC_VREF) / (float)ADC1_ACCURACY);
i=ADC_PGA_Voltage*10000;
j=i/10000;
OLED_ShowNum(10,0,j,4,14);
OLED_ShowString(40,0,".");
j=i%10000;
if(j<10) //小数点后三位为0
{
k=j;
OLED_ShowNum(45,0,k,4,14);
OLED_ShowString(43,0,"000");
}
if(j<100&&j>=10) //小数点后两位为0
{
k=j;
OLED_ShowNum(45,0,k,4,14);
OLED_ShowString(43,0,"00");
}
if(j<1000&&j>=100) //小数点后一位为0
{
k=j;
OLED_ShowNum(45,0,k,4,14);
k=0;
OLED_ShowNum(45,0,k,1,10);
}
if(j>=1000) //小数点后四位不为0
{
k=j;
OLED_ShowNum(45,0,k,4,14);
}
if(j==0)
{
k=0;
OLED_ShowString(43, 0, "0000");
}
Ddl_Delay1ms(2000u);
OLED_Clear();
}
}
图2-3 硬件连接引脚原理图
2.3 测评结果
旋转电位器,以此改变输入ADC1_IN0模拟信号的大小。放大倍数设置为PGA_FACTOR_5P333(5.333倍)。第一次旋转电位器,记录下OLED屏显示的数据和万用表测试电位器输出的数据,结果如图2.4和图2.5所示;第一次旋转电位器,记录下OLED屏显示的数据和万用表测试电位器输出的数据,结果如图2.6和图2.7所示。对测试数据进行分析,第一次的绝对误差为|0.348*5.333-1.8530|=0.002V,第二次的绝对误差为|0.496*5.333-2.6369|=0.009V,两次测试的误差均在10个mV以内,两次测量数据在统计学上无法从机理上研究性能,在此只是粗略地验证一下HC32F460单片机的PGA的性能。动态测试PGA性能的视频见附件1。
图2.4 第一次万用表测量数值
图2.5 第一次OLED屏记录数据
图2.6 第二次万用表记录数据
图2.7 第二次OLED屏记录数据
三、测评心得
本次测评验证了HC32F460单片机PGA外设的性能,如数据手册上所展示的参数在同一数量级。内含PGA外设的单片机非常适用于面积受限的传感器项目,这种类型的单片机省去了添加额外运算放大器以及一些无源元件如电阻电容等的使用,既节省了成本也使得设计出来的PCB小巧精致。如今数字信号和模拟信号的混合使用的嵌入式应用的一个方向,所以含带模拟外设的MCU能很好地解决一些实际工程问题。
非常感谢华大半导体和EEWORD为我提供测评HC32F460开发板的机会,通过对HC32F460开发板测评,我接触并学会了很多单片机底层软硬件知识,这些过程包括arm的低功耗原理和基本配置、通信外设自由映射GPIO端口的相关配置和使用、I2C读取EEPROM的基本过程以及arm单片机外部中断测量频率的尝试等等,对此受益匪浅;同时感谢本次同期测评HC32F460开发板的坛友,也感谢往期测评其它开发板的坛友,从他们的帖子中,我获得了很多帮助,深表感谢。
四、参考文献
【1】陆序长. 斩波稳定型全差分可编程增益放大电路的设计[D]. 湖南:湘潭大学,2017.
【2】查小芳. 高精度sigma-delta ADC中PGA的设计[D]. 安徽:合肥工业大学,2016.
【3】华大半导体有限公司.HC32F460系列用户手册Rev1.21[DB/OL].(2020)[2021-5-8].https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/47/key/0.
【4】华大半导体有限公司.HC32F460系列数据手册Rev1.21.pdf[DB/OL].(2020)[2021-5-8].https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/47/key/0.
【5】华大半导体有限公司. HC32F460系列的硬件开发指南Rev1.2.pdf[DB/OL].(2020)[2021-5-9].https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/48/key/10.
|