赞
踩
基于正点原子STM32F407探索者开发板,其中音频部分硬件原理图如下
其中WM8978是一款全功能音频处理器,STM32通过控制WM8978即可实现扬声器/喇叭的音频播放,麦克风的音频录制等功能。
主要控制两个接口
开发板外接了两个晶振
Debug Serial Wire
GENERATE CODE
main.c
main函数
增加WM8978_Init();
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
MX_I2C1_Init();
MX_I2S2_Init();
MX_USART1_UART_Init();
MX_USB_DEVICE_Init();
WM8978_Init();
while (1)
{
}
}
wm8978.c
#define DEVICE_ADDRESS 0x1A
#define WIRTE_ADDRESS (DEVICE_ADDRESS << 1 | 0)
extern I2C_HandleTypeDef hi2c1;
uint8_t WM8978_Write(uint8_t reg_addr, uint16_t data)
{
uint8_t pData[10] = { 0 };
pData[0] = (reg_addr << 1) | ((data >> 8) & 0x01);
pData[1] = data & 0xFF;
return HAL_I2C_Master_Transmit(&hi2c1, WIRTE_ADDRESS, pData, 2, 1000);
}
uint32_t WM8978_Init(void)
{
WM8978_Reset();
WM8978_Write(1, 0x0F); // 模拟放大器使能, 使能输出输入缓存区
WM8978_Write(3, 0x7F); // 使能左右声道和L\ROUT2
WM8978_Write(4, 0x10); // I2S 16bit
WM8978_Write(6, 0x00); // MCU提供时钟
WM8978_Write(10, 0x08); // 输出音质最好
WM8978_Write(43, 0x10); // ROUT2反相
WM8978_VolumeCtl(0x3F);
return 0;
}
uint32_t WM8978_Reset(void)
{
if(WM8978_Write(0, 0)!= HAL_OK)// 软复位
return 1;
HAL_Delay(10);
return 0;
}
AUDIO_AudioCmd_FS
中对应AUDIO_CMD_START
、AUDIO_CMD_PLAY
和AUDIO_CMD_STOP
的操作HAL_I2S_TxCpltCallback
对应传输完成的USB同步操作extern I2S_HandleTypeDef hi2s2;
/**
* @brief Handles AUDIO command.
* @param pbuf: Pointer to buffer of data to be sent
* @param size: Number of data to be sent (in bytes)
* @param cmd: Command opcode
* @retval USBD_OK if all operations are OK else USBD_FAIL
*/
static int8_t AUDIO_AudioCmd_FS(uint8_t* pbuf, uint32_t size, uint8_t cmd)
{
switch(cmd)
{
case AUDIO_CMD_START:
HAL_I2S_Transmit_DMA(&hi2s2, (uint16_t*)pbuf, size);
break;
case AUDIO_CMD_PLAY:
HAL_I2S_Transmit_DMA(&hi2s2, (uint16_t*)pbuf, size);
break;
case AUDIO_CMD_STOP:
HAL_I2S_DMAStop(&hi2s2);
break;
}
return (USBD_OK);
}
void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
{
HalfTransfer_CallBack_FS();
}
void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s)
{
TransferComplete_CallBack_FS();
}
觉得好,就一键三连呗(点赞+收藏+关注)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。