第五十六章 USB声卡实验 上一章我们向大家介绍了如何利用STM32的USB来做一个USB读卡器,本章我们将利用STM32的USB来做一个声卡。本章分为如下几个部分: 56.1 USB读卡器简介 56.2 硬件设计 56.3 软件设计 56.4 下载验证 <div style="layout-grid: 15.6pt none">56.1 USB声卡简介 ALIENTEK战舰STM32板载了一个PWM DAC电路,可以用来做DAC输出,通过和STM32的USB和定时器配合,我们就可以实现一个USB声卡。 本章我们还是通过移植官方的USB Mass_Storage例程来实现,该例程在MDK的安装目录下可以找到(..\MDK\ARM\Examples\ST\STM32F10xUSBLib\Demos\Audio_Speaker)。 ST提供的例程实现了一个22Khz采样率、8位的单声道USB声卡,通过STM32的PWM输出,经过RC滤波得到音频信号(对STM3210B-EVAL平台)。我们在该例程基础上,只需要修改定时器和其输出通道,使之满足战舰STM32开发板的硬件即可。 战舰STM32的PWM DAC部分,我们在第二十五章(PWM DAC实验)已经有过详细介绍,并且知道我们的PWM DAC部分截止频率为33.8Khz,而本例程的音频采样率为22Khz,所以使用该PWM DAC电路来做音频输出是合适的。 本章,我们采用TIM4的通道1(PB6)输出PWM,因为我们的音频信号是8位的,所以设置ARR寄存器值为0XFF,这样,我们可以得到TIM4_CH1的输出频率(不分频)为72Mhz/256=281.250Khz,然后我们通过定时器7的中断来更新TIM4_CH1的输出,TIM7的中频率就是我们音频信号的采样率:22Khz。这样,我们就可以使PWM DAC输出22Khz,8位音频信号了。 56.2硬件设计 本节实验功能简介:开机的时候先显示一些提示信息,之后开始USB配置,在配置成功之后就可以在电脑上发现多出一个USB声卡。我们用DS1来指示USB是否连接成功,并在液晶上显示USB连接状况,如果成功连接,我们可以将耳机插入开发板的PHONE端口,听到来自电脑的音频信号。同样我们还是用DS0来指示程序正在运行。 所要用到的硬件资源如下: 1) 指示灯DS0 、DS1 2) 串口 3) TFTLCD模块 4) USB接口 5) PWM DAC 6) 74HC4052 7) TDA1308 这几个部分,在之前的实例中都已经介绍过了,我们在此就不多说了。这里再次提醒大家,P13的连接,要通过跳线帽连接PA11和D-以及PA12和D+,另外,由于本章用到PWM DAC,还需要通过跳线帽将多功能端口P3的AIN和PDC连接,如图56.2.1所示: 图56.2.1 PWM DAC硬件连接示意图56.3软件设计 本章,我们在第二十五章实验 (实验20 )的基础上修改,先打开实验20 的工程,在HARDWARE文件夹所在文件夹下新建一个USB的文件夹,然后在USB文件夹下面新建LIB和CONFIG文件夹,分别用来存放与USB核相关的代码以及配置部分代码。这两部分代码我们也不细说(详见光盘本例程源码),其中USB文件夹里面的代码同上一章的一模一样,而CONFIG文件夹里面的源码则来自MDK自带的Audio_Speaker例程: X:\Keil3.80A\ARM\ Examples\ST\STM32F10xUSBLib\Demos\Audio_Speaker下的source和include文件夹(X为你安装MDK的磁盘)。 然后,我们在工程文件里面新建USB和USBCFG组,分别加入USB\LIB下面的代码和USB\CONFIG下面的代码。然后把LIB和CONFIG文件夹加入头文件包含路径。 本章,我们还需要通过音频选择电路和耳机驱动电路来推动耳机输出,所以还需要加入音频选择部分的驱动,我们将第四十章实验(实验35)的AUDIOSEL文件夹拷贝到本工程的HARDWARE文件夹下,将audiosel.c加入HARDWARE组下,并将AUDIOSEL文件夹加入头文件包含路径。 最后在test.c里面,我们修改main函数如下: //设置USB 连接/断线 //enable:0,断开 // 1,允许连接 void usb_port_set(u8 enable) { RCC->APB2ENR|=1 |
stm32 USB的CDC类传输掉数据
STM32F105 USB接收数据不断进入中断,出现“死机”现象
关于STM32CubeMX配置的USB例程电脑无法识别问题
STM32F407 USB-HS-OTG是否不外接PHY可以做虚拟串口?
如何做一个USB从机键盘用stm32f407
用STM32F4 Cube MX生成的USB Device C代码的BUG
USB Device + FatFS + SDIO 模拟U盘意外只读问题
USB Device + FatFS + SDIO 问题
STM32H7配置成USB DEVICE时,连接电脑时不进入中断
STM32F446 USB和串口1 冲突
RE:【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十六章 USB声卡实验
RE:【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十六章 USB声卡实验