Windows 10 ARM工控主板连接I2S音频芯片
在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位GPIO,I2S接口与部分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音频输入/输出
相关文章:
Windows 10 ARM工控主板连接I2S音频芯片
在Windows工控主板应用中,音频功能是一项基本的需求,USB声卡在x86/x64 Windows系统上就可直接免驱使用,但这些USB声卡通常不提供ARM上的Windows系统驱动。本文将介绍如何利用安装在ARM上的Windows工控主板——ESM8400的I2S接口、连接WM8960音…...
单元测试MockitoExtension和SpringExtension
1. MockitoExtension MockitoExtension 是 JUnit 5 提供的一个扩展,用于支持 Mockito 的集成。它可以自动初始化标记为 Mock、InjectMocks 等的 Mockito 对象,而不需要显式调用 MockitoAnnotations.initMocks(this)。 主要特点: 自动初始化 Mock、Spy…...
网络安全 | WAF防护开通流程与技术原理详解
关注:CodingTechWork 引言 随着互联网安全形势的日益严峻,Web应用防火墙(WAF, Web Application Firewall)逐渐成为网站和应用的标准防护措施。WAF能够有效识别和防止如SQL注入、跨站脚本攻击(XSS)、恶意流…...
模型 断裂点理论(风险控制)
系列文章 分享模型,了解更多👉 模型_思维模型目录。设置小损失,防止大风险。 1 断裂点理论的应用 1.1 电路系统中的保险丝应用 背景介绍: 在工程学中,电路系统是现代科技中不可或缺的一部分,广泛应用于各…...
02.MPLS动态LSP配置实验
MPLS动态LSP配置实验 MPLS动态LSP配置实验基本配置MPLS部分查看LDP会话基本信息查看详细信息查看MPLS动态LSP配置实验 基本配置 接口地址和OSPF配置,省略!全网互通! 注意:8.8.8.8和9.9.9.9也要宣告! MPLS部分 [ar1]mpls lsr-id 1.1.1.1 [ar1]mpls Info: Mpls starting,…...
MySQL 中的Buffer Pool
深入解析 MySQL Buffer Pool:优化数据库性能的核心 引言 在关系型数据库管理系统(RDBMS)中,磁盘I/O通常是性能瓶颈之一。为了缓解这个问题,MySQL的InnoDB存储引擎引入了Buffer Pool这一概念。Buffer Pool作为内存中的…...
修复微pe系统uefi引导损坏windows failed to start...
打开微pe,点右下角生成iso镜像 再打开iso镜像,把里面所有文件复制到微pe启动盘的EFI分区(使用diskgenius才能看到该分区) 虚拟机启动测试...
【Vue3中使用crypto-js】crypto-js加密解密用法
目录 1、安装crypto2、创建crypto.js文件3、在main.js主文件中进行引用4、页面中进行使用5、实现效果展示6、加密模式解析以及iv参数使用 1、安装crypto npm install crypto-js 如果是在Typescript版本需要再安装 npm install --save types/crypto-js2、创建crypto.js文件 注…...
JavaWeb开发(九)JSP技术
1. JavaWeb JSP技术 1.1. JSP简介 1.1.1. 什么是JSP JSP全名为Java Server Page 是为了简化servlet的工作而出现的替代品。在JSP中java代码与HTML共同存在,其中HTML代码用于展示静态的内容,java代码用来展示动态的内容。 1.1.2. 为什么出现JSP技术 19…...
PADS Lyout布局布线实战技巧:布线优化及解决碎铜问题
1、通过加过孔 通过过孔复制 复制粘贴 也可以选择网络,选择右键,添加过孔来。 在一些孤铜的地方加过孔,加不了过孔的情况下,怎么办? 2、通过挖掉,不让铜在孤零零的地方。 右键,选择矩形&a…...
上下游服务间解耦的技术与管理
一、解耦为何至关重要 在当今软件研发的复杂生态中,耦合问题如影随形,困扰着众多开发者与企业。当多个模块、系统或团队紧密交织,相互依赖程度不断攀升,仿佛一张错综复杂的网,牵一发而动全身。就拿电商系统来说&#…...
如何解决HTML和CSS相关的问题,什么情况下会导致元素被遮挡?
在开发过程中,HTML 和 CSS 中的元素遮挡问题通常是由于布局、定位、层级等因素导致的。在使用 Vue.js 时,这些问题依然常见,尤其是涉及到动态渲染、条件渲染和组件嵌套的场景。以下是一些常见的导致元素被遮挡的原因,并通过 Vue.j…...
Infineon PSoC 4 CapSense ModusToolbox IDE - 系统生态篇
本文档说明了 ModusToolbox 软体环境的 4 个层面,该环境为 CapSense 设备和生态系统提供支援。本文是 Infineon PSoC 4 CapSense ModusToolbox IDE-系统介绍的延伸篇 (Infineon PSoC 4 CapSense ModusToolbox IDE -系统介绍篇 - 大大通(简体站))。 什么是ModusToolb…...
[算法]布隆过滤器
布隆过滤器(Bloom Filter)是一种空间效率很高的概率型数据结构,它可以用来检测一个元素是否在一个集合中。它的特点是高效地插入和查询,但是有一定的误判率(False Positive)。误判率指的是错误地认为某个元…...
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
作者:陆冬澄、周静 在现代软件研发体系中,.NET 平台由于其强大的功能、灵活性和丰富的开发工具,成为了构建 Windows 应用程序的热门选择。无论是桌面应用、Web 应用还是服务应用,.NET 提供了一系列强大的框架和工具,帮…...
Backend - C# asp .net core
目录 一、各大框架理解 (一)ASP.NET Core (二)ASP.NET Core Web Application (三)ASP.NET Core MVC (四)ASP.NET Core Web API (五)ASP.NET Core 和 EF …...
【合作原创】使用Termux搭建可以使用的生产力环境(九)
前言 在上一篇【合作原创】使用Termux搭建可以使用的生产力环境(八)-CSDN博客中我们讲到了如何安装IDEA社区版,并在Termux中安装VNC服务器,在proot-distro的Debian中启动xfce桌面,并通过这个方式解决了IDEA社区版中无…...
使用Supervisor在Ubuntu中实现后台自启动服务
在Ubuntu系统中,Supervisor是一个非常实用的进程管理工具,它可以让你的应用程序在后台运行,并且在系统启动时自动启动这些应用程序。下面,我将详细介绍如何在Ubuntu中使用Supervisor来实现后台自启动服务,并以一个具体…...
AIDD-人工智能药物设计-人工智能驱动的罕见病药物发现
JCIM | 人工智能驱动的罕见病药物发现 **罕见病(Rare Diseases,RDs)**是全球公共卫生领域的重大挑战,其特点是疾病种类繁多、症状复杂且诊断困难。尽管过去几十年出台了如《孤儿药法案》等法规推动研发,但超过90%的罕…...
安卓硬件加速hwui
安卓硬件加速 本文基于安卓11。 从 Android 3.0 (API 级别 11) 开始,Android 2D 渲染管道支持硬件加速,这意味着在 View 的画布上执行的所有绘图操作都使用 GPU。由于启用硬件加速所需的资源增加,你的应用程序将消耗更多内存。 软件绘制&am…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
