基于STM32的带触摸屏的无线解说器

发布者:书卷气息最新更新时间:2021-06-28 来源: eefocus关键字:STM32  无线解说器 手机看文章 扫描二维码
随时随地手机看文章

本实例是以STM32F103系列单片机作为核心处理器,利用VS1003芯片进行音频解码的一种无线解说器。通过对触摸显示屏的操作,实现手持部分和终端部分二者的无线通讯。系统采用大容量的SD卡作为存储部分,通过SPI将VS1003B与SD卡的数据与STM32进行交互通信。本解说器在播放时没有出现理论上的断续情况,音质较好,占用的软硬件资源也较少,为后续的扩展留下了很大空间。


无线讲解器通常用于工厂、博物馆、景区等室外空旷场所供参观介绍用,通过事先在场所安放无线发射模块,并控制发射模块的工作范围。听众到达景点后,手上的讲解器将自动接收各个地点的无线编码信号,经解码后即可将存储在SD卡中的语音播放,以便清晰地全程收听全部介绍内容。


1 系统总体构成


系统主要器件包括TFT触摸屏、STM32F103RCT6微控制器、SD卡、语音解码芯片VS1003、扬声器。STM32F103RCT6微控制器为系统终端的控制核心,通过它与手持式设备之间进行无线串口通讯,读取SD卡中的音频文件,控制VS1003解码读取的数据,实现声音的播放与控制,该系统主体结构如图1所示。


以单片机为核心处理器 基于STM32的带触摸屏的无线解说器


图1 系统设计框图


2 硬件电路控制


2.1 TFT触摸屏控制电路


单片机芯片STM32F103RCT6工作在8MHz时钟下,RTC工作在32.768kHz时钟下。单片机PA3、PA5、PA6、PA7、与SD卡SD_CS、SPI1_SCK、SPI1_MISO、SPI1_MOSI相连,采用SPI通讯。显示屏接口采用并行总线方式(数据总线D[7:0]、地址总线A[1:0]、片选/CS、读/RD、写/WR),直接与单片机引脚相连,如图2所示。


以单片机为核心处理器 基于STM32的带触摸屏的无线解说器


图2 TFT触摸屏与单片机连接控制原理图


2.2 VS1003音频解码控制电路


语音解码芯片VS1003可解码MP3(MPEG 1&2音频层III)(CBR+VBR+ABR)、WMA 4.0/4.1/7/8/9的所有配置文件(5.384kbit/s的)、WAV(PCM+IMAADPCM)、MIDI/SP—MIDI文件,对话筒输入或线路输入的音频信号进行IMA ADPCM编码,内含高性能片上立体声数模转换器,两声道间无相位差。


以单片机为核心处理器 基于STM32的带触摸屏的无线解说器


图3 音频解码电路原理图


VS1003通过7根引脚(VS RST、VS DREQ、VS_MISO、VS_MOSI、VS_SCK、VS_XDCS、VS_XCS)与主控芯片相连,如图3所示。需要播放音频文件时,首先应复位VS1003(包括硬复位和软复位),让其回到原始状态,准备解码下一个音频文件。接着需配置VS1003相关寄存器,包括VS1003的模式寄存器(MODE)、时钟寄存器(CLOCKF)等。最后向VS1003里写入数据。VS1003会自动识别它所支持的音频格式并进行播放。


3 软件控制设计


3.1 手持设备控制流程


对手持式设备进行软件控制编程时,第一步使用需要对系统时钟进行初始化,需要对外部高速时钟使能,中断向量表配置,锁相环配置等过程。这样系统才能正确执行相关程序。接下来对串口进行初始化,本设计使用的串口一,需要对GPIOA进行初始化,并配置其复用功能,将TXD引脚设置成复用延迟输出,RXD配置成浮空输入。下面设置USAT的波特率、传输字长、有无奇偶校验、数据流控制、收发模式、中断优先级、中断服务函数等。


以单片机为核心处理器 基于STM32的带触摸屏的无线解说器


图4 手持设备控制程序流程图


手持设备上的TFT初始化以后,就可显示初始化界面,接着等待终端设备发送数据显示,手持设备在完成各种初始化工作后与终端设备进行握手连接,握手成功之后便能显示终端设备上发送过来的信息,握手失败后就不停尝试着与终端设备进行握手,直到握手成功。触摸屏点击后进行软件判断得到点击的坐标值,并将坐标值传送至终端设备。


3.2 终端设备程序流程图


终端设备开机后需要设置无线单片机的初始值,初始值为包括解说区域的坐标代码,因此在游览干道旁需每隔约25m设置一个终端,当游人在游览干道上行进,身上的手持设备就可随时和道路旁放置的无线终端相互交换信息,播放需要的解说词。


因此终端流程最开始对所需要的外设进行初始化,确认初始化无误以后进入正弦波测试,如有初始化不成功的程序将不能进入下一个流程。在正弦波测试完之后确定终端设备上的外设运行良好,将SD卡中的音频文件信息解码出来,并发送出去,此时进入串口监控状态,时刻监控串口信息,当收到播放指令时即在SD卡中寻找对应的信息,并从SD卡中将数据读取出来,发送至VS1003进行解码,在播放过程中如接收到新的串口数据,再进行判断,是停止还是暂停或者其他命令,然后执行相应的命令。


以单片机为核心处理器 基于STM32的带触摸屏的无线解说器


图5 终端设备程序流程图


4 结论


本文所设计的无线解说器以STM32F103系列单片机作为核心处理器,处理速度快且性价比高。利用VS1003解码芯片控制音频解码文件,选用合适的通讯方式,严格把控时序,确保播放声音的清晰与真实。通过对触摸显示屏的操作,实现手持部分和终端部分二者的无线通讯,确保游人在指定地点接收到相应解说词,本系统经过实际使用,通信效果良好,播放的解说词流畅,音质较好。在后期设备升级中,可考虑采用高速DSP作为中央控制芯片,即可无需解码芯片,且更好地将系统嵌入到DSP为核心的产品中,从而更加人性化。


关键字:STM32  无线解说器 引用地址:基于STM32的带触摸屏的无线解说器

上一篇:基于STM32的EMS液晶显示触摸屏设计方案
下一篇:STM32与SD卡通信问题详解

推荐阅读最新更新时间:2024-10-30 11:39

STM32全球唯一ID读取方法
产品唯一的身份标识非常适合: ● 用来作为序列号(例如USB字符序列号或者其他的终端应用) ● 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。 ● 用来激活带安全机制的自举过程 96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。 这个96位的产品唯一身份标识,按照用户不同的用法,可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。 基地址:0x1FFF F7E8 每个CPU 出厂的时候都 配置的一个ID,96 位的.这个唯一码可以利用作软件加密....... stat
[单片机]
关于STM32 的 硬件IIC和 模拟IIC理解学习
1. 硬件 IIC 用法比较复杂,模拟IIC的流程更清楚一些。 2. 硬件IIC速度比模拟快,并且可以用DMA 3. 模拟IIC可以在任何管脚上,而硬件只能在固定管脚上。 软件i2c是 程序员 使用程序控制SCL,SDA线输出高低电平,模拟i2c协议的时序。一般较硬件i2c稳定,但是程序较为繁琐,但不难。 硬件i2c程序员只要调用i2c的控制 函数 即可,不用直接的去控制SCL,SDA高低电平的输出。但是有些单片机的硬件i2c不太稳定,调试问题较多。
[单片机]
stm32 直接操作寄存开发环境配置
操作stm32 有使用官方库函数(参见 stm32 开发环境MDK+库文件配置 )和 直接操作寄存器的方法 直接操作寄存器的方法 会比库函数的方法效率更高 而且代码量会比较少 例如 在库函数下 配置一个GPIO口 需要 GPIO_InitTypeDef GPIO_InitStructure; //结构体 初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPI
[单片机]
<font color='red'>stm32</font> 直接操作寄存<font color='red'>器</font>开发环境配置
stm32 中DMA的stream和channel关系
问:STM32(意法)DMA中的stream和channel到底什么关系和区别? 答:拿stm32的DMA1做例举。DMA1中总共有8个stream,而每个stream可以配置成不同的传输源和目的地址,这就是channel。1个不同的源和目的就叫1个channel。如下图所示: 上图中stream0可以被配置成channel 0、1、2、3、4、6。配置成channel0时用spi3_rx功能,配置channel1时是i2c1_rx功能,但是stream0只能配置其中的1个channel,因为同一个stream不可能给外设1传输数据的同时又个外设2传输数据。具体配置在DMA_SxCR寄存器的CHSEL域配置
[单片机]
<font color='red'>stm32</font> 中DMA的stream和channel关系
STM32学习笔记(1):GPIO口的使用
实验平台清单如下: 开发板:奋斗STRIVE V3 核心芯片: STM32F103VET6 开发环境: RealView MDK-ARM Version:3.50 PC操作系统: Windows 7家庭普通版 仿真器: SEGGER J-Link 其中,STM32F103VET6芯片是基于ARM Cortex-M3内核的,具体技术参数请参考ST公司给出的芯片资料( http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00191185.pdf )。关于该芯片的其他资料,可以在 http://www.st.com/cn/
[单片机]
关于STM32中断向量表的位置 、重定向问题
首先我们需要跳到main函数,这个就不多说了。那么,中断发生后,又是怎么跑到中断入口地址的呢? 从stm32f10x.s可以看到,已经定义好了一大堆的中断响应函数,这就是中断向量表,标号__Vectors,表示中断向量表入口地址,例如: AREA RESET, DATA, READONLY ; 定义只读数据段,实际上是在CODE区(假设STM32从FLASH启动,则此中断向量表起始地址即为0x8000000) EXPORT __Vectors IMPORT OS_CPU_SysTickHandler IMPORT OS_CPU_PendSVHandler __Vectors DC
[单片机]
关于<font color='red'>STM32</font>中断向量表的位置 、重定向问题
STM32之Flash
1. 在默认情况下,只有执行FLASH设置(延迟,预取指,半周期)的函数式允许执行的。 如果想要执行FLASH编写/擦除/保护函数,必须在文件“stm32f10x_conf.h”中定义_FLASH_PROG如下: #define _FLASH_PROG 2.按照不同容量,存储器组织成32个1K字节/页(小容量)、128个1K字节/页(中容量),万利板子是中容量 #define FLASH_PAGE_SIZE ((u16)0x400) //一页为1024个字节 3. /* Get pages write protection status */ WRPR_Value = FLASH_GetWriteProte
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved