其他分享
首页 > 其他分享> > 2021年全国大学生电子设计竞赛——信号失真度测量装置(A题)——设计过程分享(1)

2021年全国大学生电子设计竞赛——信号失真度测量装置(A题)——设计过程分享(1)

作者:互联网

一、前言
       这边来分享一下这次国赛的A题软硬件设计过程,本次分享会拆分成几篇博客进行分享,这几篇博客大体会采用时间顺序来进行,来纪念这次国赛的经历,博客里面会涉及本次参赛的软硬件设计思路和原理,尽可能详细的记录自己的设计过程。

二、电赛第一日
硬件电路图

图1 硬件电路图

       我本次硬件设计的主题是围绕了VCA810芯片进行的设计,这是一个压控增益运放,0V到-2V的电压控制-40dB到40dB的增益,改运放的其他指标均可满足本题的信号处理要求。有了这个运放那么硬件设计的难度将会大大降低(开赛第一天我就是这么想的,但是使用了这个运放为我后面的硬件隐患埋下了伏笔,这个容我慢慢道来。),于是围绕了这个运放我很快的就设计好了最初的硬件方案。由于题目要求必须使用TI的MCU和MCU内部的ADC,所以需要将交流信号进行抬升,也就是U3A运放组成的一个加法电路,实现一个交流信号和直流电压1+1的效果。(最终的信号叠加是3Ui+1Udc,这个修改是有原因,和前面的VCA810有关。后续会讲到,现在就先按照最初的思路慢慢的进行。)现在交流信号已经可以通过电压进行控制幅值,并且通过加法器已经可以直接送入到MCU里采集了,由于我选择的MCU是TM4C123GH6PM这个芯片没有DAC外设,所以需要使用PWM来模拟DAC,将PWM进行二阶RC滤波然后经过一个反相器得到一个VCA810的控制电压,也就是U1运放部分电路。(-2V到0V控制VCA810)
       然后其他的就是一些接口以及去耦电容加指示灯了,这里我的显示方案采用了大彩的串口屏来显示,这样可以较为方便的实现波形的显示,上位机通信采用蓝牙方式,采用蓝牙的好处是即使自己无法编写上位机APP(后面确实没写出来,没写过APP的我最后连环境都没搭建明白。),也可以使用市面上的通用蓝牙串口助手来显示一些文字信息拿一些分数。
       敲定完整体的方案和硬件电路图之后就开始用洞洞板焊接了一个进行测试,毕竟这道题的主要难点在于软件部分,之前我也没接触过TM4C123G这个芯片,必须尽快拿出一个可以测试的硬件来进行测试。这边简单介绍一下TM4C123G的软件环境搭建,由于这个芯片是cortex-m4f的内核的可以直接使用keil5-mdk进行开发(直接放弃CCS,不然别人代码都写完了,你工程还没建立。就是这么心酸),然后点击这个图标在这里插入图片描述进行芯片包的安装,在左边栏找到对应的芯片包(图2),点击Tiva C Series后就可以在右边栏进行install了。
Tiva C芯片包

图2 芯片包安装

       然后就是建立一个芯片工程,工程建立之后就是在keil里面的Manage Run-Time Environment(图3)添加启动文件和库(这里就不详细讲了,网络上应该比较多的文章介绍。)。
在这里插入图片描述

图3 管理运行环境

       经过一些操作和排错之后一个基本的工程模板就建立好了,可以直接编写裸机程序了,于是我就写了个点灯程序烧写进去看了看,成功运行没问题。然后很快的编写了PWM驱动、串口驱动,然后开始进行最重要的ADC驱动的编写了。当时的软件设计思路如下,TIM4C123G的ADC最大转换速率为1Mbps,由于采样信号的频率最大为100K,需要计算出5次谐波的分量,因此1Mbps是最低的门槛了(根据奈奎斯特采样定理),必须让ADC全速运行,然后使用DMA进行数据的搬运,这样才能保证ADC的采样是等间隔的1us,计划是采样1024个点然后进行计算FFT。因此ADC触发DMA采样的驱动就是很关键了,这个不能解决一切白谈。
       当我开始编写ADC触发DMA采集时刚刚下午五点左右(吃饭时还和做另一题的同学说我们硬件搭完了,软件进度也很快,然后现实就给我上了一课。),由于这个芯片的资料比较少,例子一般都需要去官方下载和参考手册进行编写,然后试来试去一直到了下半夜也没有搞定这个驱动,一直弄到两点钟才把这个驱动搞定,结合DMA的ping-pong模式才可以实现需要的功能,真是山重水复疑无路,柳暗花明又一村。就这样最基本也是最重要的驱动可以使用了,然后就是添加CMSIS-DSP库进行FFT的测试了,由于我添加的库源码,因此使用AC5进行编译的时候优化等级不能是0,不然会造成编译器报空间不够,这个库需要120K的flash来放置一些数组,使用的时候需要注意空间的分配。
       这时时间已经是凌晨3点钟了,准备休息几个小时再开始下步工作。

三、电赛第一日总结
       第一题早上定完题目之后,白天迅速的定完方案和硬件之后,在晚饭前有搭好了测试硬件并且建立了软件工程,代码也跑起来了,总体进度还是比较快的,但是ADC的驱动确实费了很大的功夫,中间一度信心动摇,但是最后的结果还是可以接受的。第一日完成基本的硬件设计,软件的驱动代码编写,准备开始下面的业务代码编写。

标签:失真度,芯片,硬件,2021,驱动,编写,进行,电子设计,ADC
来源: https://blog.csdn.net/weixin_43980908/article/details/121873340