Days 34 ElfBoard 音频接口

音频接口介绍
音频模块采用了 NAU88C22 芯片,芯片数据信号使用 I2S 接口进行通讯,主要信号功能:
SAI_MCLK:音频信号主时钟;
SAI_BCLK:音频信号位时钟;
SAI_SYNC:左右声道控制信号;
SAI_TXD:数据发送信号;
SAI_RXD:数据接收信号。
同时,芯片还使用了一组 IIC 接口,对芯片进行配置,I2C 地址:0x1A,硬件电路如下图所示:


底板提供的 3.5mm 音频插座,有 4 级触片,支持左右双声道播放声音,和 MIC 录音。也就是默认的 3.5mm 音频插座的设计,采用了CTIA (国际标准四段式插针)标准,如果插入 OMTP(非国际标准四段式插针)标准耳机,会有放音和录音功能失效的现象。

音频 接口问题排查思路
(1)首先检查焊接器件是否与设计的底板的原理图一致,音频芯片是否使用同一型号,电阻电容对应;阻值容值如有改动是否会有影响;
(2)检查焊接上是否有问题:是否芯片虚焊空焊,接地是否良好,画器件封装时中心焊盘是否有过孔接地。
确定以上都没有问题后,要分以下两种情况进行问题排查。
核心板不能识别到音频芯片
(1)测量音频芯片的电源脚供电是否正常,是否欠压过压,上电是否有跌坑;
(2)音频芯片通过I2C 通信,检查核心板是否能读到音频芯片(如果有驱动看驱动能否正常加载,没驱动用 I2C tools 看是否挂载到总线上),如果读不到检查数据时钟线是否上拉;
(3)检查芯片是否有工作模式选择引脚上下拉是否选对了。
核心板能识别到音频芯片
(1)音频芯片和接口间电路连接是否正常,耳机座、耳机是否正常;
(2)如果可正常挂载音频芯片,检查 I2S 电平是否匹配,1.8V / 3.3V 是否要加电平转换;
(3)I2S总线在PCB 走线时是否受到电源线等干扰;
(4)检查音频信号波形,先测量音频芯片的输出端,如果正常有波形,则是芯片和音频座连接的问题,如果没有波形,测量 I2S 信号是否给到音频芯片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/475823.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

综合练习

目录 查询每个员工的编号、姓名、职位、基本工资、部门名称、部门位置 确定要使用的数据表 确定已知的关联字段 查询每个员工的编号、姓名、职位、基本工资、工资等级 确定要使用的数据表 确定已知的关联字段 查询每个员工的编号、姓名、职位、基本工资、部门名称、工资…

用Boule绘制地球重力场

文章目录 参考椭球标准重力重力地图 参考椭球 boule中定义了多种参考椭球,可用于表示地球、火星等星体的重力分布。可通过pip安装 pip install boule安装完成后可直接调用 import boule as blboule中已经定义的椭球如下 椭球星体GRS80地球WGS84地球MARS火星MERC…

linux内核模块module_put()函数详解--03

对应module_put()函数详细用法分享。 第一:函数简介 //函数原型 void module_put(struct module * module) //函数功能 该函数功能是将一个特定模块module的引用计数减一 这样当一个模块的引用计数不为0而不能被内核卸载的 时候,可以调用该函数一次或多…

【嵌入式学习】IO网络接口day02.18

1.使用fgets统计给定文件的行数 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("./test1.txt","r"))NULL){perror("错误信息");return -1…

springboot197基于springboot的毕业设计系统的开发

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的毕业设计系统的开发 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 …

Java六种常用线程创建执行方法

目录 方法一&#xff1a;继承Thread类方法二&#xff1a;实现Runnable接口方法三&#xff1a;实现Callable接口方法四&#xff1a;ThreadPoolExecutor执行Runnable任务方法五&#xff1a;ThreadPoolExecutor执行Callable任务方法六&#xff1a;Executors工具类实现线程池 方法一…

【数据结构】12 堆栈应用:表达式求值

表达式类型 后缀表达式 有一个常量表达式的中缀表达式为&#xff1a;5 6 / 2 - 3 * 4&#xff0c;其后缀形式表示为&#xff1a; 5 6 2 / 3 4 -。后缀表达式的特点是运算符位于两个预算数之后。其前缀表达式为&#xff1a; - 5 / 6 2 3 4。 后缀表达式相比于中缀表达式的…

告警能力中台设计与实践(三)——告警通知

一、告警消息与告警通知 1、告警消息 正如笔者在最开始所写的那样&#xff0c;第三方服务通过调用能力中台的OpenAPI实现告警发起&#xff0c;并且每一次的告警请求都会创建、归档为一条告警消息&#xff08;AlarmMsg&#xff09;。 这样的消息是无状态的&#xff0c;并且对…

递归算法与分治思想

递归算法 直接或间接的调用自身的算法称为递归函数,采用栈结构,先调用的最后返回。 主要形式就是先纵后横,一个分支走到底,再退回一个到兄弟节点,依次回退。 列出递归的三种形式:切蛋糕、递推公式、等价转换。 递归要素: 明确递归得到结果是什么提取重复的逻辑,缩小…

Python教程(26)——Python迭代器和生成器详解

迭代器 Python中的迭代器是一种对象&#xff0c;它可以迭代&#xff08;遍历&#xff09;一个可迭代对象&#xff08;比如列表、元组或字符串&#xff09;的元素。迭代器用于实现迭代器协议&#xff0c;即包含 __iter__() 方法和 __next__() 方法。 迭代器的工作原理是每次调…

15.一种坍缩式的简单——组合模式详解

当曾经的孩子们慢慢步入社会才知道&#xff0c;那年味渐淡的春节就像是疾驰在人生路上的暂停键。 它允许你在隆隆的鞭炮声中静下心来&#xff0c;瞻前顾后&#xff0c;怅然若失。 也允许你在寂静的街道上屏气凝神&#xff0c;倾听自己胸腔里的那团人声鼎沸。 孩子们会明白的&am…

【蓝桥杯】算法模板题(Floyd算法)

一.弗洛伊德算法 用途&#xff1a;用来求解多源点最短路径问题。 思想&#xff1a;Floyd算法又称为插点法&#xff0c;是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。 主要步骤&#xff1a; 1&#xff09;初始化&#xff1a;使用邻接矩阵初始化dis…