由于mini OTG口转U盘母座的线没有,一直没测试音频输入输出这块,内存卡倒是有,实在没有也可以拆手机的内存卡顶上。在官方Demo基础上把U盘存读替换为TF卡。学习下测试下录音和WAV音乐播放。先献给同我一样,缺少那根OTG 小口转母座线的同学。从此甩掉U盘和烦人线,以后播自己的MP3,录自己的音。 基于官方DEMO修改,路径:stm32cubef4\STM32Cube_FW_F4_V1.10.0\Projects\STM32469I-Discovery\Applications\Audio 这是移植好SD驱动的DEMO例程,没 使用U盘播放。官方提供的音乐,播放起来音质还不错。 板载的MIC输出数据是PDM(Pulse Density Modulated 脉冲密度调制)类型的,需要软件做数字高通低通滤波,输成16位的音频格式数据。需要用到库文件libPDMFilter_CM4_Keil.lib。相关介绍在 AN3998PDM audio software decoding on STM32 microcontrollers。 连续扑在上面研究的时间不多,挤牙膏一点点学习深入吧。 先添加文件stm32469i_discovery_sd.c 新建组 fatfs/sd并添加文件 去除文件 usbh_diskio.c usbh_conf.c 去除整个组文件 去除整个组文件 在HAL驱动库中,添加库文件 找到stm32f4xx_it.c 文件注释函数 void OTG_FS_IRQHandler(void)。 拷贝目录stm32cubef4\STM32Cube_FW_F4_V1.10.0\Projects\STM32469I-Discovery\Applications\FatFs\FatFs_uSD\Inc下的ffconf.h文件替换工程目录下的。 打开文件 stm32fxx_hal_conf.h 文件 去除注释:#define HAL_SD_MODULE_ENABLED 找到文件explorer.c 做如下修改 //while(USBH_MSC_IsReady(&hUSBHost)) while(1) 在main.c中, 添加头文件 #include "stm32469i_discovery.h" #include "stm32469i_discovery_sd.h"
/* FatFs includes component */ #include "ff_gen_drv.h" #include "sd_diskio.h" 注释: /* Init Host Library */ //USBH_Init(&hUSBHost, USBH_UserProcess, 0);
/* Add Supported Class */ //USBH_RegisterClass(&hUSBHost, USBH_MSC_CLASS);
/* Start Host Process */ //USBH_Start(&hUSBHost);
/* USB Host Background task */ //USBH_Process(&hUSBHost); 在SystemClock_Config中添加SD卡时钟初始化 RCC_PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SDIO | RCC_PERIPHCLK_CK48; RCC_PeriphClkInitStruct.SdioClockSelection = RCC_SDIOCLKSOURCE_CK48; RCC_PeriphClkInitStruct.Clk48ClockSelection = RCC_CK48CLKSOURCE_PLLSAIP; RCC_PeriphClkInitStruct.PLLSAI.PLLSAIN = 384; RCC_PeriphClkInitStruct.PLLSAI.PLLSAIP = RCC_PLLSAIP_DIV8; HAL_RCCEx_PeriphCLKConfig(&RCC_PeriphClkInitStruct); Main.c中定义全局变量 char SDPath[4]; 在AUDIO_InitApplication();后添加代码 if(FATFS_LinkDriver(&SD_Driver, SDPath) == 0) { AppliState = APPLICATION_READY; LCD_UsrLog("sd card is ready.\n"); } else { AppliState = APPLICATION_DISCONNECT; LCD_UsrLog("sd card not ok.\n"); } 这个DEMO就此跑通了,以后分析MIC录音,音乐播放,MP3解码方面多了。
|