基于PSoC 的触摸屏电子琴系统设计
2015-07-13陈岩朱晓梅
陈岩 朱晓梅
摘要:该文介绍了一种基于可编程片上系统(PSoC)的触摸屏电子琴系统的设计。与传统利用单片机的定时器中断实现的电子琴系统不同,该系统使用低成本低功耗的PSoC4作为主控芯片,利用片内提供的高精度PWM模块进行频率控制,实现了系统的小型化、低能耗化、高精度化,在此基础上还具有易学易玩的特性,可替代普通电子琴完成演奏工作。经过实物测试,该系统乐音纯正且携带方便,颇具应用价值。
关键词:PSoC4;触摸屏;电子琴;PWM;嵌入式
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)13-0213-02
Abstract:The design of electronic organ system with touch screen is presented in this paper, which is based on Programmable System on Chip (PSoC).The system which is far different from the traditional method depending on timers interrupt the MCU provides, select the low-cost and low-power consuming PSoC4 as CPU.Benefiting from that the high precision PWM module PSoC4 integrated internally is used to control the frequency of electronic organ, the system is distinguished for its mini-type , low-power and high-accuracy. In addition to the excellent feature above, the system is accessible to learn and enjoy easily and replace average electronic organ to accomplish meritorious performance. Hardware test shows the system is of great value due to the pure musical quality and portable convenience.
Key words: PSoC4; touch screen; keyboard; PWM; embedded
钢琴一直以来被视为高雅艺术的代名词,然而钢琴昂贵的价格使得很多音乐初学者望而却步。使用价格低廉的集成电路的普通电子琴虽然实现了弥补了声学钢琴价格昂贵的不足,但是一般电子琴的塑料琴键容易磨损,且体积较大不易携带。除此之外,传统的电子琴系统大多利用单片机的定时器中断实现对输出波形的控制,多次中断造成的累计误差不可控制最终在输出级形成一定程度的波形频率误差。近年来随着触屏智能手机的大规模推广,触摸逐渐成为了现代人生活中常用的输入手段。本文提出了一种基于PSoC4平台的触摸屏电子琴系统,该系统充分利用了PSoC4平台处理速度快、控制效果好、编程效率高、硬件能耗低的特性,采用了片内自有的高精度PWM模块对输出波形进行频率控制,实现了低成本高音质的触摸演奏功能。与传统电子琴按压物理按键不同,触摸屏电子琴只需用户动动指尖轻轻按压即可实现演奏,从而大大降低了电子琴损坏的可能。
1 系统整体设计方案
本系统主要由PSoC4主控芯片模块、触摸显示屏模块、蜂鸣器模块三个模块以及各自的外围电路组成,系统整体设计框图如图1所示。
系统工作原理:系统加电后并完成对应模块的初始化工作后,PSoC4控制显示驱动在LCD显示屏上显示电子琴琴键作为用户界面。当检测到用户触摸屏幕后,触摸控制器开始工作,利用内置的A/D完成触摸位置坐标采样,并将采样信息回传给PSoC4。PSoC4处理采样信息得到位置坐标,并检测坐标所属琴键区域,将琴键对应音符的周期信息装入PWM控制器,在指定GPIO口输出占空比为50%的方波以驱动无源蜂鸣器,使得无源蜂鸣器发出对应频率的声音信号并维持一段时间。一次触摸演奏结束后,再循环检测等待下一次屏幕被触摸的信号。
2 系统硬件设计
2.1PSoC4内部资源配置
PSoC即可编程片上系统(Programmable System on Chip),是由美国Cypress公司提供的一套高度整合的嵌入式解决方案。常见的SoC系统需要预先设计好电路,再由指定工厂进行生产,但是定制费用高、设计周期长且需要设计者具有丰富的电路知识。而PSoC由于其内部整合了大量数字和模拟核,吸收了FPGA现场可编程门阵列和ispPAC在系统可编程模拟电路的优点,只需配合专用的PSoC Creator集成开发环境可以由用户根据需要迅速完成系统的定制,极大地提高了开发效率,缩短了开发周期。
本系统选用的PSoC4是PSoC家族的最新成员,性能上介于PSoC3和PSoC5之间,具有比PSoC3更为先进的32位ARM Cortex-M0架构,又具有比PSoC5能耗更低、芯片体积更小的特性。本系统使用的CY8C4245芯片属于PSoC4的入门级芯片,价格上更具优势。
本系统配置使用的PSoC4内部资源包括:1组8位控制寄存器、1个PWM脉冲宽度调制器、1个逻辑低电平发生器、1个时钟发生器以及17个数字信号输出引脚和2个数字信号输入引脚,具体配置情况如图2所示。PWM控制器是本设计使用到的PSoC内部中最为重要的模块,PSoC4通过改变PWM控制器的周期可以轻松实现对方波波形频率的调整。在进行配置前需要根据计算选择合适的时钟输入从而调整PWM控制器的周期范围。
2.2触摸屏模块
本系统使用分辨率为240*320的TFT-LCD液晶屏作为用户界面显示器。其内部集成有系统所需的显示驱动芯片和触摸控制芯片。利用PSoC4的GPIO口与显示驱动芯片建立通信,将系统所需的琴键界面信息由PSoC4的8位并行控制寄存器写入液晶屏显示驱动芯片的数据寄存器,再由显示驱动芯片内部自动写入数据,最终在液晶屏上显示出7个音调的白键以及5个半音调的黑键。用户通过触摸屏幕,经触摸控制器内置的A/D转换器将触摸所得的电压信号转换为坐标信号,方便PSoC4微处理器执行按键区域判断。
2.3蜂鸣器模块
为了降低成本,缩小系统尺寸,本系统使用小功率蜂鸣器作为乐音输出单元。由于PSoC4的GPIO口电流较小,不足以驱动蜂鸣器工作,必须使用一个PNP三极管作为开关控制蜂鸣器的通断。三极管基极通过一个大电阻与PSoC4的GPIO口相连,当GPIO口输出高电平时,三极管导通,蜂鸣器工作。
2.4硬件电路搭建
完成系统总体框图和相关模块分析后,将触摸屏模块和蜂鸣器模块与PSoC4模块连接,完成系统硬件电路的搭建,最终设计的总体电路图如图3所示。
3 系统软件设计
Cypress 公司针对PSoC的特点设计开发了PSoC Creator开发工具。在PSoC Creator集成开发环境中,片上资源均提供了对应的API程序供选用,如需额外实现程序逻辑可以使用C语言编程,设计完成后可以进行线上调试而且能随时中断程序的运行。本系统软件设计使用PSoC Creator3.0集成开发环境,相关程序利用C语言进行编写。
程序逻辑设计:利用显示驱动显示电子琴琴键,根据按下位置的坐标匹配触摸位置所在区域,将该区域对应的音符的周期写入PWM控制器,使其控制蜂鸣器发出对应的乐音。在取得触摸位置坐标的过程中,为了尽可能地排除各类可能的干扰,需要进行软件带通滤波和平均化处理。
具体实现流程:程序首先完成各硬件的初始化,之后显示电子琴的12个琴键,待琴键显示完成后进入主循环。主循环中不断查询笔中断引脚的状态,检测到有触摸信号产生后,利用触摸控制芯片完成A/D转换,之后由SPI串行外围设备接口将采样值传入PSoC4。进行软件带通滤波及平均化处理,得到触摸时刻的位置坐标,再匹配该坐标所属按键区域。匹配成功后,利用写周期函数向PWM控制器模块装入对应琴键周期数据,通过输出的方波控制无源蜂鸣器完成乐音演奏。一次演奏完成后,无条件跳转等待下一次触摸。对应的程序算法流程图如图4所示。
4 系统调试与结果分析
系统PSoC4的片内硬件资源部署以及相关软件程序的下载和调试通过PSoC5 LP编程调试器完成。与以往的PSoC芯片必须使用MiniProg3编程器离线下载程序不同,PSoC4通过PSoC LP编程器可以实现PSoC Creator在线下载与调试。以PSoC5 LP为核心的编程调试器的一端通过SWD串行线调试接口与PSoC4通信,另一端通过MiniUSB接口与计算机建立联系。只需在PSoC Creator中执行Program命令完成程序下载与编译,然后执行Debug命令进入调试模式,直到硬件软件均符合系统设计的逻辑。
在低分贝的安静环境中,将本系统输出的乐音以无损格式录音,通过计算机取得各乐音的实际频率和误差值,详细结果如表1所示。从表1可以看出由该系统生成的乐音频率误差极小,最大误差不足万分之一,在人耳容忍范围内,完全可以满足实际使用的要求。在摄氏25度环境下连续弹奏30分钟,系统无不稳定现象,蜂鸣器温度有上升,但仍在安全温度内,此时乐音频率尚无明显变化。
5 结语
本文设计的系统,解决了普通电子琴体积过大和容易损坏的特点,同时顺应了触摸输入的趋势,采用了PSoC4平台后更大大降低了系统的能耗,而且提升了系统的稳定性和准确度。通过实物测试证明该系统的确是准确可靠的。
参考文献:
[1] 王化格,赵洪亮. 基于PSoC的太阳能路灯控制器设计[J]. 科技信息,2013(5):83-84.
[2] 胡平,何俊. 基于PSoC的移动心电监测系统的设计[J]. 计算机应用与软件,2014, 31(1):249-251.
[3] 徐泽清,高旭东,韩喜春. 基于psoc的电子称设计[J]. 黑龙江工程学院学报,2012, 26(4):48-51.
[4] 潘晓利,陈学煌,祝祥迪. 基于单片机的MIDI电子琴的设计[J]. 电子测量技术,2008(6):174-176.
[5] 王杰,高俊涛,严周颖,孙悦妍,杨广权.基于嵌入式开发板Mini6410的电子琴设计[J]. 实验室研究与探索,2014(1):106-109.
[6] 马志强,王建刚,孙少林,等.基于STM32的PWM音乐播放器应用设计[J].单片机与嵌入式系统应用,2012,(11):63-65.
[7] 翁泰来.“音质”和“音色”[J].电声技术, 2004(6):21-21.
[8] 李雪伟, 张立勋, 唐小景.STM32驱动ILI9325显示字符串的方法[J].煤矿机械, 2011,32(10):263-265.