本帖最后由 mxkw0514 于 2021-12-28 16:57 编辑
#申请开发板# #申请原创# 引言
据说Microchip的Data Visualizer工具有一点类似示波器的功能(是因为它能显示波形的高度),又有一点类似逻辑分析仪的功能(是因为它能分析单片机引脚的逻辑电平),这次拿到ATtiny1627单片机,测评片内ADC外设,并将结果通过波形展现出来,希望能体验Data Visualizer的强大功能,日后也好利用该工具进行开发。本次测评步骤为:
1、实验前准备(仪器备置、开发环境搭建、基础知识储备)
2、ADC外设测评与Data Visualizer工具使用
3、实验结果展示与分析
4、测评心得
1、实验前准备
1.1、仪器备置
本次实验准备的仪器包括:函数发生器、示波器、PC机、ATTiny1627开发板,函数发射器用于产生频率800Hz、幅值3.3V、偏置1.65V的正弦波,一路输入到ATTiny1627片内ADC外设的5通道中,一路输入到示波器用于辅助显示该波形。
图1-1 函数发生器
图1-2 示波器
图1-3 ATTiny1627开发板
1.2、开发环境搭建
在测评前需要安装MPLAB X IDE软件、MPLAB Code Configurator工具包和Data Visualizer工具,先安装MPLAB X IDE软件,根据提示直接点NEXT直到安装完成,打开MPLAB X IDE软件,点击tool,然后点击Plugins,安装好MPLAB Code Configurator工具包和Data Visualizer工具,如下图所示:
图1-4 MCC与Data Visualizer安装步骤
1.3、基础知识储备
数据可视化器(Data Visualizer)是一个处理和可视化数据的工具【1】,该工具能够从各种来源接收数据,例如嵌入式调试器数据网关接口 (DGI) 和COM 端口,本次测评主要用到的是COM端口,检测单片机串口发送给电脑的数据。ATTiniy1627内部ADC是12bit的差分类型,过采样能达到17bit,高达15个通道【2】,这些方便用户灵活地配置寄存器,毕竟高配参数能往低配参数走,其框图如图1-5所示。片内ADC输入电压范围为-100 mV to VDD+100 mV,查看板卡手册【3】,VDD电压是3.3V,所以在测试的时候,输入波形的幅值不能超过3.3V。
图1-5 ADC外设框图
图1-6ATTiny1627芯片
2、ADC外设测评与Data Visualizer使用
本次实验项目的程序的初始化函数(包括系统时钟、UART模块、ADC模块的初始化)采用MCC工具配置,进行一键生成,省去配置寄存器的时间了,其中MCC的配置界面如下所示。系统时钟配置界面可以选择分频系数,这里一般默认就可以了;ATTiny1627内部有两个串口,其中通过USB引出一个串口,选择对应的引脚就可以了,引脚配置如图2-3所示,当然AVR或者PIC大部分单片机都是支持端口重映射功能的,你可以将串口映射到其它引脚(方便PCB布线)。重点讲一讲片内ADC外设的MCC工具配置,虽然手册上面说ADC是12bit,但是是可以选择8bit模式的,即使它是差分ADC,仍然能使用单端模式,本次就是这么使用的,采样速率记得一定要高于信号频率的两倍以上,否则采样结果还原波形的时候是严重失真的;ATTiny1627的片内ADC有15个外部输入通道,该次测评只用到一个通道,参考电压这里选择的是VDD。
图2-1 MCC配置ADC外设
图2-2 MCC配置UART外设
图2-3 MCC配置芯片引脚
安装好Data Visualizer工具以后,根据用户手册配置信号源、输出格式、波形窗口的横纵轴,在波形窗口下面还有一个窗口,可以在这个窗口中查看具体的数值,方便定量分析,将板卡通过USB线与电脑连接,在程序调试、编译并下载成功后,点击启动按钮据可以显示波形了。
Data Visualizer工作示意图
实验程序如下所示,其中两个核心的函数是 ADC0_StartConversion和ADC0_GetConversion,ADC0_StartConversion启动信号采集,ADC0_GetConversion获得采样的结果,这里用的是8bit模式,所以最大采样结果是255。将500个采样点储存在数组中,使用print函数将这些值打印出来,便于后面分析。#include "mcc_generated_files/mcc.h"
int main(void)
{
SYSTEM_Initialize(); //系统时钟、UART模块、ADC模块初始化函数
int a[500]; //将采样值储存在数组中
while (1)
{
int i;
ADC0_StartConversion(ADC_MUXPOS_AIN5_gc);//开始转换
for(i=0;i<=499;i++)
{
a[i] =ADC0_GetConversion(ADC_MUXPOS_AIN5_gc );//获得转换结果
}
for(i=0;i<=499;i++)
{
printf("%d\r\n",a[i]);//将转换结果打印出来
}
}
}
3、实验结果展示与分析
下载运行ATTiny1627单片机程序后,使用串口调试助手可以看到print函数打印的结果,虽然Data Visualizer工具可以替代串口调试助手,但是在不知道初次使用Data Visualizer是否能够成功,还是先使用串口调试保险一下,结果如图3-1所示。将串口调试助手中显示的采样值导入到Excel表中,绘制实验得到的波形曲线,并在表中绘制函数发射器产生的实际波形曲线,并描绘出误差曲线,结果如图3-2与3-3所示。到这里就可以开始下一步工作了。
关闭串口调试助手(因为共用一个COM口),启动Data Visualizer,,可以看到波形串口和数值窗口的结果,拉动波形窗口的时间轴和纵轴,对数据电平进行详细观察,这里选择的数据格式是ASCII码,所以输出的每一字符都会转换成对应的十进制ASCII码,如图3-4所示,这样在实际的项目进行定量分析,例如采样值106由三个字符“1”、“0”和“6”组成,波形窗口中显示的幅值高度为“49”、“48”和“54”。
实验测试图如图3-5所示。函数发射器产生的波形和采样值还原的波形有两点不一样,一是还原波形最高处削顶了,而是还原波形移相了。削顶可能是因为函数发射器产生的波形幅值超过了VDD+100mV(数据手册参数),也有可能是在参考电压为VDD是,采样的最大幅值不能超过VDD,当然这种可能性不大;至于波形移相是什么原因,还没有想明白,后续还有待研究。
图3-1 串口调试助手数据显示
图3-2 采样点还原波形验证
图3-3 波形分析
图3-4 Data Visualizer波形分析
图3-5 实验实物图
4、实验心得
最开始接触Data Visualizer工具是在几周前的一个Microchip的技术直播中,正好这次申请了ATTiny1627开发板,正好可以结合Data Visualizer工具对ATTiny1627单片机的片内ADC外设进行测评,也算是一种趣事。Data Visualizer工具可能没有MCC工具使用广泛,毕竟MCC在配置各个外设寄存器方面太方便了,不过Data Visualizer可以辅助用户对单片机输出数据进行图形化分析,这一点还是很有用处的,当让ata Visualizer的功能不局限今天测评的这些,后续还有待挖掘。
参考文献
【1】Microchip Technology Inc. Data Visualizer Software User's Guide[DB/OL].(2020-2021)[2021-12-26].https://ww1.microchip.com/downloads/en/DeviceDoc/40001903B.pdf.
【2】Microchip Technology Inc.Data Sheet ATtiny1624/ATtiny1626/ATtiny1627[DB/OL].(2020-2021)[2021-12-26].https://ww1.microchip.com/downloads/en/DeviceDoc/ATtiny1624-26-27-DataSheet-DS40002234A.pdf.
【3】Microchip Technology Inc. ATtiny1627_Curiosity_Nano_design_documentation_release_rev2.pdf[DB/OL].(2020-2021)[2021-12-26].file:///C:/Users/NJAU/Desktop/Atiny/ATtiny1627_Curiosity_Nano_Design_Documentation/PCBA_Rev2/ATtiny1627_Curiosity_Nano_design_documentation_release_rev2.pdf.
|