刘静波
(南京工程学院 信息与通信工程学院,江苏 南京 211167)
综合电子系统课程设计是让学生综合运用模拟电子技术、数字电子技术、电子线路CAD、传感器应用及单片机技术进行典型综合电子系统的设计、安装和调测,以加深对综合电子设计的方法和技术的理解,提高学生综合知识应用的能力、分析解决问题的能力,培养电子技术实践技能,能够设计小的电子系统、调试电子系统,便于为学生以后的工作打下专业知识应用基础。该课程是电子信息工程专业大三年级下学期开设的一门实践类教学课程,对于学生实践能力和创新能力的培养至关重要,有利于提高学生的创新意识和自主创新能力,是提高教学质量的关键[1]。
在此之前,学生虽然学习了上述提到的课程,但未形成整体的应用意识,知识体系处于零散和碎片化状态[2],面对一般的电子系统设计往往不知所措,不知道如何分解任务、查找资料、科学设计、系统调试等。如何把学到的各门课程通过一个应用项目串接起来,囊括模拟和数字电子技术、信号处理、智能芯片应用、传感器驱动设计、I2C和SPI接口芯片类驱动设计、电路板PCB设计,以及基于云平台的远程数据访问和控制等,这就需要选择合适的应用项目进行项目化教学,以难度适中的电子系统项目为载体,通过对项目分析、项目设计、项目调试、项目总结等方面进行课程设计。在此过程中,帮助学生把理论知识和实际应用能力结合起来,体现了“以学生为中心”的理念[3-4]。
综合电子系统课程设计选择合适的项目作为载体,应该体现综合性。所谓综合性,一方面是包含多门课程的知识,有效把多门课程组合串接起来,通过具体的项目实施,达到不同课程综合应用的能力,例如包含信号调理电路模块、传感器电路设计模块、电路板PCB设计和智能芯片接口设计等;另一方面,综合电子系统课程设计大多是围绕智能芯片的编程应用,因此应用项目综合性还应该考虑综合利用智能芯片的资源,把各知识点贯穿其中,在实际应用中,选择STM32系列单片机作为首选智能芯片应用。充分考虑STM32芯片的资源,制定应用项目,融合STM32芯片的特点,把定时器(含PWM控制)、串口、A/D转换、SPI和I2C接口、DMA功能、外中断等应用在其中体现。
让学生通过具体项目设计,具备根据项目任务选择正确的资源进行合理设计与应用的能力。在实际教学中,初步制定几个项目:基于STM32的音乐频谱显示系统、手势和语音控制的智能台灯控制系统、基于OneNET的多模式远程控制开关系统设计[5]、基于WiFi智能小车的远程温湿度测量系统[6]、多功能桌面天气时钟显示系统等。表1是各项目主要应用知识的大致情况,其中的项目名称以简写形式表示,远程开关控制、智能小车测量、桌面天气时钟结合了WiFi模块远程控制的应用,通过连接云平台实现远程数据传输与控制。
表1 项目与应用知识
培养学生具备一定的综合电子系统设计能力是一个重要的方面,使学生具备设计综合电子系统的基本素质和能力,为学生创新创业打下坚实的基础。大部分学生虽然学习了相关课程,但是很难建立起整体应用能力,不知道如何应用所学知识去实现具体的项目。之前的实践环节多以验证性实验为主,缺少真正意义上的设计电路与系统设计概念[7]。
在综合电子系统课程设计教学实践中,按照项目方案设计、电路硬件设计、软件编程调试、系统整体测试等方面进行任务分解,从而掌握综合电子系统的设计与调试的知识要点。其中,接到任务,进行科学合理的方案设计是比较重要的,也是综合电子系统课程设计应该重点关注的。方案设计的越合理,越有利于实现任务。方案设计不合理,或者盲目设计,只会事倍功半,甚至完全推翻浪费时间。分析项目的任务,根据任务要求制定合理的方案,需要引导学生掌握知识要点。首先,学习资料的查询和已有资源的利用,找到适合项目的资料,或者是项目中需要用到的底层资源,在此基础上建立自己的应用系统;其次,根据任务要求,分析需要哪些必要技术条件,查看自己的方案设计是否能够满足系统设计的要求,要有目的性、具备合理性;最后,对自己设计的方案进行必要的总体评价,再对其进行论证,在充分了解已有资源的前提下,考虑还有哪些技术条件需要进一步研究。重视项目的设计过程,是完成项目的重要条件。
基于STM32的音乐频谱显示系统任务要求实现:当有音频信号时,显示小于5 kHz音频信号的256点频谱显示,无音频信号输入,则转为日期时间显示。DS18B20温度测量显示可添加进系统,作为可选组成部分。图1为系统框图,结合系统框图,根据任务要求进行硬件设计分析。
图1 基于STM32的音乐频谱显示系统组成框图
(1)STM32系列单片机因其资源丰富和足够完善的库函数应用示例成为智能芯片的首选,特别是本项目会涉及A/D转换,实现音频信号的模数转换。采用定时器触发模式控制A/D转换,定时器设定为2倍于5 kHz信号的采样频率(10 kHz),A/D转换结束后采用DMA功能实现数据输出,因此选择STM32F103C8T6作为智能主控芯片。
(2)频谱的种类分为LED点阵、OLED显示屏或LCD液晶显示,考虑到256点频谱显示,优先选择256×64分辨率的OLED作为显示模块,选择3.12寸基于SSD1322驱动的并口OLED显示模组作为本系统显示模块。相比串行数据接口的显示模块[8-9],该显示模块数据线D0~D7是并行数据方式读写数据,刷新速度快,显示分辨率高;控制线分别是RD、RW、DC、RES、CS,系统中STM32F103C8T6的PB端口用以接入OLED模组,PB0~PB7接OLED的D0~D7,其余再分配控制线,满足系统要求。
(3)音频信号采集电路采用运放电路设计,对麦克风采集的音频信号进行放大。采用单电源供电的比例放大电路[8],需要根据实际测试调整放大倍数。单电源供电的情况下,必须施加直流偏置,运放输出带有2.5 V的直流电位,无负电压产生,比较适合单片机进行A/D转换,但在程序里应该考虑减去相应数值。音频采集电路还可以考虑加入二阶有源低通滤波,截止频率设置为5 kHz,选择NE5532双运放,完成信号放大与有源低通电路设计。音频信号采集送至STM32F103C8T6的PA0进行A/D转换。
(4)STM32F103C8T6的PA11和PA12用作I2C接口,接入时钟芯片DS3231和E2PROM芯片AT24C02,满足系统显示时间日期和存储数据功能。PA1接入DS18B20温度传感器,可测量显示温度数据。
(5)SPI接口接入FLASH芯片,可以显示字库数据,实现中文显示。
(6)单片机最小系统设计和电源电路设计,按键和发光管指示设计,代码下载接口设计。
软件设计可以使用STM32F103单片机官方DSP 库[9],采用256 位FFT变换,汇编语言编写代码执行效率高,使用时只要调用接口函数即可。快速傅里叶变换FFT底层应用函数可以应用到本系统中,系统A/D转换结束后,调用其接口函数进行运算处理就可以得到256点对应的幅度,因此把FFT底层函数嵌入到本系统中。软件设计主程序可以两种模式进行控制,模式一是单一频谱显示,即持续显示音乐频谱;模式二是频谱显示和日期时间显示自动切换,主要思路是A/D转换读取音频信号,当系统检测到有音频信号输入时,调用FFT函数得到频谱数值并显示,无音频信号输入时,显示日期时间。这两个模式用按键切换,系统主流程如图2所示。
图2 基于STM32的音乐频谱显示系统主流程
设计过程其实是软硬件互相配合的过程,硬件方面的设计是基础,首先保证其合理性,软件设计需要花费较多的时间,容易出现一些问题,学生在进行综合电子系统课程设计中,一定要掌握必要的方法,特别是软硬件结合的项目,优先保证硬件系统的正确性,有利于软件调试和系统功能的实现。
系统硬件电路部分从原理设计到实物制作比较容易忽视,在实际应用中,应该注意分模块对单片机部分、显示部分、音频放大部分进行单独测试,不同应用项目需要不同的传感器或信号处理单元,这需要区别对待并先进行测试。软件设计要采取分功能单元进行测试,测试定时器触发控制下的A/D转换、DMA功能测试、OLED显示模组驱动、时钟芯片和温度传感器测试等,单元功能软件测试正确后再组合进行系统测试。例如,定时器触发控制下的A/D转换,在无外接显示的情况下,完全可以采用串口打印结果的方法,从而判断A/D转换是否有输出,输出结果是否符合预期,还可以随时改变定时器的定时时间,用以辅助判断该部分功能是否正常。所有子单元模块验证完成后,项目整体功能相对更容易实现。图3所示为最后运行时分别显示的频谱和日期时间。
图3 两种模式下分别显示频谱和日期时间
表1列出的各个应用项目,作为综合电子系统课程设计的项目化教学实践的组成部分,在设计时也考虑了拓展性。在设计时留出了数字接口,包括I2C和SPI接口,这些接口可以接多个传感器和其他模块。留出多个外接串口,例如多功能桌面天气时钟显示系统采用STM32F103VET6,外接串口数量达到3组,进一步拓展了功能,尝试了接入语音识别模块和语音播报模块,根据不同的语音识别提示,播报显示当前天气、现在时间等内容。智能小车远程控制项目可以选择不同的传感器测量不同的数据,进一步拓展应用功能。项目的拓展应用有利于学生举一反三,建立模块化概念,以及建立多任务实现的可能性。
从应用项目设计到最后调试完成,应该有总结和分析的过程。总结与分析包含两个方面,首先是总结取得的成果与经验,总结软硬件设计经验,为以后的设计做积累。分析出现的问题,以及如何解决问题,解决问题的过程中是否有收获和体会,以及造成问题的原因。其次,总结综合电子系统设计中的一般方法,硬件电路的设计与制作方法,单片机系统的应用模式与电路设计,只要是相同系列的单片机系统,就具有相同的单片机电路应用结构,这些逐步成为成熟的应用而慢慢积累下来。软件设计中,单总线、I2C、SPI、串口、A/D转换、定时器(PWM控制)、DMA、外中断等,每一个子模块都可以保留并得到后续利用,应该把这些软件单元封装为成熟的软件包,不断充实到自己的仓库中去。表2是常用软件接口和一些芯片对应说明,包括存储AT24C02、时钟DS3231、外接A/D转换AD7705(16位)、温湿度HDC1080、FLASH存储W25Q64和字库芯片、语音识别模块LD3320、智能语音SU-03T、手势控制PAJ7620等。
表2 软件接口与芯片示例
综合电子系统课程设计的教学要求,通常包含模拟和数字电子技术应用、传感器应用、单片机技术应用等重要单元,重点对基于STM32的音乐频谱显示系统作了详细应用设计分析,并根据自己的教学实践总结了综合电子系统课程设计的软硬件知识。以若干个项目作为载体,进行模块化、项目化、推进化教学实践,在综合性、设计性、拓展性等方面进行了分析,以满足实践教学和启发创新的要求,培养具备复合型、创新型、开放型知识与能力的应用型人才[10]。项目化教学以完整的项目成果展示在学生面前,激发了学生的学习兴趣,培养了学生的自主设计能力,提高了学生的动手能力、创新能力和解决问题的能力。之后应该不断优化项目类型,设计并制定出不同方面的应用项目,丰富教学内容,进一步提高学生的工程应用能力。