网站产品数据库,网站每年费用,东莞网站优化方法,个人建立一个网站要多少钱在Windows工控主板应用中#xff0c;音频功能是一项基本的需求#xff0c;USB声卡在x86/x64 Windows系统上就可直接免驱使用#xff0c;但这些USB声卡通常不提供ARM上的Windows系统驱动。本文将介绍如何利用安装在ARM上的Windows工控主板——ESM8400的I2S接口、连接WM8960音…在Windows工控主板应用中音频功能是一项基本的需求USB声卡在x86/x64 Windows系统上就可直接免驱使用但这些USB声卡通常不提供ARM上的Windows系统驱动。本文将介绍如何利用安装在ARM上的Windows工控主板——ESM8400的I2S接口、连接WM8960音频芯片实现音频的输入与输出。
ESM8400是预装正版Windows 10 IoT企业版操作系统的工控主板具有名片尺寸、超低功率、无需散热风扇、能在-40℃~80℃的环境温度下稳定工作等诸多优点ESM8400设计时已经预留了I2S接口用于连接I2S音频芯片。
1. 硬件连接
ESM8400总有32位GPIOI2S接口与部分GPIO复用对应关系如下 ESM8400 GPIO I2S信号名称 I2S信号说明 GPIO0 I2S_MCLK I2S系统时钟由ESM8400对外提供 GPIO3 I2S_RXD ADC串行数据输入 GPIO4 I2S_LRCLK (WS)帧同步信号指示当前传输的是左声道还是右声道音频 GPIO5 I2S_TXD DAC串行数据输出 GPIO14 I2S_SCK (BCLK)同步音频数据传输的位时钟信号
除I2S信号外WM8960还需要一组I2C信号和两个额外的IO信号用于配置 ESM8400引脚 缺省功能 系统支持音频时的复用功能 B12 TSC_SCL WM8960 I2C接口 B13 TSC_SDA WM8960 I2C接口 D3 GPIO2 AUD_INTn D16 GPIO15 AUD_PWR_EN
ESM8400连接WM8960的原理图如下 在ESM8400开发评估底板上连接WM8960音频模块 2. WM8960音频芯片的自动识别
为了满足不同应用的需求我们在系统UEFI中增加了WM8960芯片自动识别的功能ESM8400的I2S接口缺省配置为GPIO当在UEFI中通过I2C识别到WM8960芯片时才切换为I2S功能。I2C的识别代码特别简单通过I2C操作WM8960的复位寄存器I2C操作成功即表示连接了WM8960芯片然后将对应的GPIO切换为I2S状态。WM8960自动识别代码如下
RegAddr (0xf 1);
Data 0x01;
Status iMXI2cWrite(Wm8960I2cConfig, RegAddr, Data, 1);
if(Status RETURN_SUCCESS)
{// Mux the SAI3 pins to wm8960 codecIOMUXC_SW_MUX_CTL_PAD_SAI3_TXFS IOMUXC_MUX_ALT0;IOMUXC_SW_MUX_CTL_PAD_SAI3_TXC IOMUXC_MUX_ALT0;IOMUXC_SW_MUX_CTL_PAD_SAI3_TXD IOMUXC_MUX_ALT0;IOMUXC_SW_MUX_CTL_PAD_SAI3_RXD IOMUXC_MUX_ALT0;IOMUXC_SW_MUX_CTL_PAD_SAI3_MCLK IOMUXC_MUX_ALT0;IOMUXC_SW_PAD_CTL_PAD_SAI3_TXFS SAI_PAD_CFG_OUT;IOMUXC_SW_PAD_CTL_PAD_SAI3_TXC SAI_PAD_CFG_OUT;IOMUXC_SW_PAD_CTL_PAD_SAI3_TXD SAI_PAD_CFG_OUT;IOMUXC_SW_PAD_CTL_PAD_SAI3_RXD SAI_PAD_CFG_IN;IOMUXC_SW_PAD_CTL_PAD_SAI3_MCLK SAI_PAD_CFG_OUT;IOMUXC_AUDIOMIX_SAI3_RXDATA_SELECT_INPUT_0 IOMUXC_MUX_ALT1;DebugPrint(0xffffffff, Find the audio codec.\n );
} ESM8400 ARM Windows工控主板实现WM8960 I2S音频输入/输出