用I2C tools來檢查CODEC裡register的值

S32K144(14)ADC 1、简介 开发板S32K144+S32DS+JLINK,裸机版的程序编写 S32K14x包含两个12位ADC模块,ADC0和ADC1 应用程序可能需要ADC的连续采样(4K采样/秒),这可能对CPU有相当大的负载。虽然使用可编程延迟块(PDB)来触发ADC可能会减少一些CPU负载,但当ADC以非常高的速率采样或PDB被绕过时,ADC支持DMA请求功能以获得更高的性能。ADC可以在转换完成时触发DMA(通过DMA请求)。TRGMUX会根据不同的应用需求,使用软件为用户提供更灵活的DMA触发方案,例如,可 阅读详情

 

在處理音訊相關的問題時,我通常會找個方法來讀寫codec中register的值。幸好linux上也有這樣的工具 – i2c tools。先到lm-sensors下載soure code,然後cross compile成arm的執行檔,就可以放到板子來試試看了。
i2c-tools中含有四個執行檔

  • i2cdetect – 用來列舉I2C bus和上面所有的裝置
  • i2cdump – 顯示裝置上所有register的值
  • i2cget – 讀取裝置上某個register的值
  • i2cset – 寫入裝置上某個register

以下是我用beagleboard得到的結果

root@android:/temp # ./i2cdetect -l
i2c-1 i2c OMAP I2C adapter I2C adapter
i2c-2 i2c OMAP I2C adapter I2C adapter
i2c-3 i2c OMAP I2C adapter I2C adapter

原來beagleboad上有三組I2C bus。
i2cdetect也可以用來看bus上有那些裝置

root@android:/temp # ./i2cdetect -y -r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU UU UU UU -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

這表示bus上有四備裝置,位址分別是0×48, 0×49, 0x4a, 0x4b。
我們要找的是codec,beagleboard上的codec是TI的TPS65950,從technical reference manual可以得知codec在I2C上的位址是0×49。
然後用i2cdump來看codec中所有register的值
[

root@android:/temp # ./i2cdump -f -y 1 0x49
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 00 00 00 00 00 00 00 0f 0f 0f 0f 00 00 ..........????..
10: 3f 3f 3f 3f 25 00 00 00 00 32 32 32 32 00 00 55 ????%....2222..U
20: 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 ...........?....
30: 13 00 00 00 00 79 11 00 00 00 06 00 44 69 02 00 ?....y?...?.Di?.
40: 00 00 00 00 32 00 00 00 00 00 00 00 00 00 00 1b ....2..........?
50: 00 00 03 f0 05 00 00 00 1a 1a 00 e1 93 00 00 00 ..???...??.??...
60: 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?...............
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
80: 00 00 00 00 00 2f 00 09 10 ff ff ff ff ff ff ff ...../.??.......
90: ff 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 ........?.......
a0: 00 00 00 00 00 00 00 00 00 00 04 18 50 01 44 05 ..........??P?D?
b0: 00 00 00 00 fe ff 03 00 00 00 ff ff 03 00 00 00 ....?.?.....?...
c0: 03 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 ?....?..........
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

再來我用i2cset來改變headset gain看看會不會改變播放的音量。先用以下的指令來播放wav檔,我是用sample rate 44.1k的檔案,其它sample rate的wav可能無法播放。

root@android:/temp # ./tinymix 13 1
root@android:/temp # ./tinymix 45 1
root@android:/temp # ./tinymix 48 1
root@android:/temp # ./tinyplay 440.wav
Playing sample: 2 ch, 44100 hz, 16 bit

headset gain的register的位址是0×23,在播放的過程中打開另一個adb shell,用i2cset來增加gain

root@android:/temp # ./i2cset -f -y 1 0x49 0x23 5

音量果然變大了!

i2cget的用法類似i2cget,這裡就不多做說明了。

相关: http://www.lm-sensors.org/wiki/i2cToolsDocumentation
ad5764的spi菊花链通信 有一个模拟板子上有4个dac芯片,2颗ad5762和2颗ad5764,最终使用了mcu的硬件spi做菊花链通信。 可以看到mcu的spi sdo进入到u29 ad5762的sdin后,u29 ad5762的sdo进入到u57 ad5762的sdi,依次类推,最后从u69 ad5764的sdo进入到mcu的sdin中,完成一个环。而ad5762与ad5764的所有LDAC都是并联的,公用mcu上的一个pin脚。 菊花链的部分还是要多看芯片手册。 这里可以看到有一个t15时间,极短,但是很重要。还有 阅读详情

相关推荐

TI C5517 DSP EVM启动配置与镜像烧录实战指南

在嵌入式系统开发中,启动配置是确保处理器从复位状态正确加载并执行应用程序代码的关键环节。其核心原理在于,处理器上电后,内部的Bootloader会根据预先设定的硬件引脚状态(启动模式),从指定的非易失性存储器(如SPI Flash、SD卡)中读取二进制镜像文件,并加载到RAM中执行。这项技术的价值在于,它决定了系统能否可靠地从“裸机”状态进入用户定义的软件环境,是产品功能实现的基础。在音频处理、语音识别和便携式设备等对功耗和实时性要求较高的应用场景中,德州仪器(TI)的C5000系列低功耗定点DSP,尤其是

weixin_34228387的博客 336

Audio codec FPGA 验证时I2C读写寄存器小结

Audio codec由于涉及到D/A,A/D等模拟相关的操作,所以在FPGA上无法实现其功能,但是其内部的寄存器,是可以通过I2C对其读写的。 ZX2000内置CODEC是挂在芯片的I2C2上,所以第一步需要在dts中添加I2C2,注意zx2000内置audio codec的i2c slave addr为0x8。 zx2000.dtsi:   i2c2: i2c@d83a0000 {

u012769691的博客 3241

LPC4350双核MCU实战:异构架构、低功耗与核间通信详解

在嵌入式系统设计中,微控制器(MCU)的架构选择直接影响着系统的实时性、能效与处理能力。非对称多处理(AMP)架构通过将高性能内核与低功耗内核相结合,实现了计算密集型任务与实时响应任务的并行处理,这一原理为复杂嵌入式应用提供了高效的解决方案。其技术价值在于,既能满足数字信号处理(DSP)、浮点运算等复杂算法的高性能需求,又能确保对外部事件的确定性低延迟响应,从而显著提升系统整体效率。这种设计思想广泛应用于需要实时处理的场景,例如音频处理、电机控制和物联网边缘计算节点。本文以恩智浦LPC4350系列微控制器为

weixin_30482181的博客 436

alsa驱动:codec配置通信接口实现(i2c)

Alsa驱动snd_soc_read的底层实现: 在分析snd_soc_codec_driver的结构体时,发现有些芯片的驱动中定义了字段reg_word_size, reg_cache_size, reg_cache_default,但没有定义read/write,如wm8993: static struct snd_soc_codec_driver soc_codec_dev_wm8993 = { .probe = wm8993_probe, .remove = wm89

qq_38350702的博客 1061

I2C配置IDT286代码

一个实际验证过的I2C master代码,顶层配置了IDT286芯片,使其输出156.25M的时钟,使用的时候记得修改分频系数,FPGA时钟/(2*100k)-1,100K为I2C速率

RegisterCode

Readme:RegisterCode

Linux 音频 (三)Codec驱动

一般就是用于 A/D 与 D/A转换编解码等等。

Terrble_liar的博客 2253

【HarmonyOS 5】鸿蒙APP使用【团结引擎Unity】开发的案例教程

以下是基于团结引擎开发鸿蒙Unity应用的详细案例教程,整合环境配置、工程适配、跨语言通信等核心环节。

2201_75709314的博客 2482

i2c命令使用

在處理音訊相關的問題時,我通常會找個方法來讀寫codec中register的值。幸好linux上也有這樣的工具 – i2c tools。先到lm-sensors下載soure code,然後cross compile成arm的執行檔,就可以放到板子來試試看了。 i2c-tools中含有四個執行檔 i2cdetect – 用來列舉I2C bus和上面所有的裝置 i2cdump – 顯示

edmond999的专栏 8629

【ORB-SLAM3】使用安卓手机的摄像头运行ORB3

使用安卓手机的摄像头运行ORB-SLAM3单目

caiqidong321的博客 4993

Unity中5自由度机械臂运动控制与夹爪交互仿真实践

本文详细介绍了在Unity中实现5自由度机械臂运动控制与夹爪交互仿真的完整流程。从模型导入、物理组件配置到关节运动控制算法(包括逆运动学IK),再到夹爪抓取逻辑和工业分拣案例实战,提供了可落地的代码示例与性能优化方案,助力开发者快速掌握机械臂仿真核心技术。

weixin_29021757的博客 446

Linux 驱动研究 —— I2C (4)

深入剖析 Linux I2C 子系统核心层(i2c-core)的设备节点创建机制。本文结合内核源码,纵向打通了从 I2C 控制器平台驱动触发,到 i2c_register_adapter 铺设总线网络,再到顺藤摸瓜通过 of_i2c_register_devices 解析设备树、实例化从机 i2c_client 的全套底层闭环流程。

kdxiaojie的博客 531

Air780E模组AT指令实战:5分钟搞定MQTT连接EMQX服务器(附完整代码)

本文详细介绍了如何使用Air780E 4G模组通过AT指令快速连接MQTT服务器。从硬件接线、网络注册到MQTT连接配置,提供了完整的实战步骤和代码示例,帮助开发者快速实现物联网设备的数据上报与远程通信。

wdx012345的博客 741

ESP32-C6终极配置指南:如何为AI语音助手打造WiFi6高性能平台

还在为传统WiFi模块的功耗和性能瓶颈而烦恼?ESP32-C6作为乐鑫首款支持WiFi 6的物联网芯片,为xiaozhi-esp32项目带来了革命性的网络性能提升。本文将为你提供完整的ESP32-C6配置指南,助你快速构建高性能AI语音交互设备。 xiaozhi-esp32是一个基于MCP协议的AI聊天机器人项目,支持138种不同的开发板和171个发布变体。通过本文,你将掌握ESP32-C6在A

gitblog_00187的博客 1052

紫光同创PGL50H开发板实战:盘古50KN网口板的高速通信与数据处理

本文详细介绍了紫光同创PGL50H开发板(盘古50KN网口板)在高速通信与数据处理领域的实战应用。文章从开箱、核心芯片解析、开发环境搭建入手,重点讲解了如何配置与测试其8路千兆以太网接口和SFP光纤接口,并深入探讨了FPGA与DDR3协同进行多路数据汇聚处理的系统架构与调试方法,为网络通信与高速数据处理系统开发提供了宝贵的实践经验。

weixin_28256233的博客 450

鸿蒙5应用真机调试超详细教程

本文详细介绍了鸿蒙5应用的真机调试全流程,包括开发环境搭建(安装DevEcoStudio、配置SDK)、真机调试准备(开启USB调试、配置自动/手动签名)、调试实战(生成HAP包、断点调试技巧)以及多设备协同调试方法。文中提供了设备连接、签名配置等常见问题的解决方案,并包含示例代码展示分布式设备联动功能。通过本教程,开发者可快速掌握鸿蒙5应用的调试技能,建议结合官方文档深入学习高级调试技巧。

2301_79392153的博客 2196

Debugging Embedded Linux

Section #6. Debugging Embedded Linux From a device driver perspective, embedded software developers often face interfaces not commonly found on conventional computers. Figure 1.3 shows a hypothetical...

mounter625的专栏 1161

【人工智能】《Deep Dive into LLMs like ChatGPT 》—— Andrej Karpathy 第三阶段:强化学习(Reinforcement Learning, RL)

摘要:强化学习(RL)阶段通过让模型自主生成并验证答案,突破SFT阶段的模仿局限,使其在数学、代码等领域形成独特的推理路径。RL流程包括批量生成解答、自动批改筛选正确路径,并采用PPO/GRPO算法优化模型。模型会自发涌现自我检查、回滚等策略,显著提升正确率(如AIME竞赛准确率从15%升至56%)。与SFT模型相比,RL模型具备主动链式思维、验算能力,响应时间更长但效果更优,形成真正的“思考模型”。三阶段对比显示,RL通过可验证题的对错奖励机制,赋予模型超越人类范式的推理能力。

奶爸的编程之路,也就一周冷个三天 147

RT-Thread Radio开发套件深度解析:从硬件选型到内核调试

实时操作系统(RTOS)是嵌入式系统的核心软件平台,它通过任务调度、内存管理和进程间通信等机制,为资源受限的微控制器提供多任务并发执行能力。其技术价值在于能够高效管理硬件资源,确保关键任务的实时响应,从而广泛应用于物联网设备、工业控制和消费电子等领域。本文以RT-Thread Radio网络播放器开发套件为具体案例,深入剖析了其基于STM32F103的硬件架构设计,包括网络、音频、存储等关键外设的协同原理。同时,重点探讨了如何利用RT-Thread内置的Finsh Shell工具进行动态系统状态诊断和实时调

weixin_30947043的博客 403

第1.2章 机器人SLAM计算机基础总结(二):VSCode教程及 AI等效率插件推荐

如何高效编写代码?怎样快速调试程序?**别担心,今天就给大家带来一款超强大的编程神器 ——VSCode,以及能让编程之路 “一马平川” 的实用插件推荐,无论你是新手小白还是资深大神,都能从中受益!

行知SLAM 1859

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TWEN-ASR ONE开发板入门:从环境搭建到离线语音识别程序实战

语音识别技术通过将人类语音转换为文本或指令,实现了人机交互的自然化。其核心原理涉及信号处理、特征提取和模式识别,在嵌入式领域,离线语音识别技术因其低延迟、高隐私性和强实时性而备受青睐。这项技术的价值在于为智能家居、工业控制和语音遥控等场景提供了本地化、低功耗的交互解决方案。TWEN-ASR ONE开发板集成了专用AI处理单元(NPU)和麦克风阵列,是实践嵌入式语音识别的理想平台。本文以该开发板为例,详细解析了从开发环境搭建、硬件连接到第一个语音识别程序编译、烧录与调试的全流程,涵盖了交叉编译工具链配置、CM

weixin_34355559的博客 381

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

边缘AI语音交互革命:基于MCP协议的开源硬件抽象架构

在传统嵌入式系统开发中,硬件适配往往成为技术创新的最大瓶颈。每个新的硬件平台都需要重新编写驱动代码、调整通信协议、适配外设接口,这种重复劳动严重制约了边缘AI应用的快速迭代。小智AI聊天机器人项目通过创新的MCP协议和硬件抽象层设计,实现了70+硬件平台的无缝适配,为开源语音交互系统提供了全新的技术范式。 ## 核心理念:从垂直集成到水平抽象 传统边缘AI系统通常采用垂直集成的开发模式:硬件驱

gitblog_00166的博客 477

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

匠芯创 D211 SerDes Kit — Bring-Up 指南(AI开发笔记)

板级层— 时钟、引脚复用、DDR、分区布局Bootloader— 裸机 SPL,加载 OS应用— RT-Thread 应用,打印启动成功信息构建系统:OneStep 工作流、defconfig 管理、SDK 修改定义 NAND flash 的物理参数和分区布局,每个分区有明确的用途。分区大小用途spl1 MB存放 Bootloader 镜像(),芯片上电后 ROM/PBP/SPL 从这里加载env256 KB。

iloveluoluo一个小白程序员 477

Linux asoc codec驱动调试小结

本篇记录下自己在调试codec驱动时的经验及注意事项,这里主要是放音playback调试 需要什么: 标准的linux codec驱动,如何编写驱动以后有时间再写一篇吧 原理图,需要查看对应的引脚,I2S的clck和data脚以及是否有reset pin脚和pdn引脚等 步骤: 1.编写好驱动,更改相关目录makfile和kconfig确认驱动可以编译通过并能编译进内核之中。 2.根据...

和大伙儿去乘凉 2588

camera和codec调试利器–i2c tool

最近调试codec的驱动调试郁闷了,一次又一次的重新编译内核,一次又一次的烧写。于是想能不能简单的修改寄存器参数呢?经过google后果然有,那就是i2c-tool ,这一系列工具。 下载 http://dl.lm-sensors.org/i2c-tools/releases/ 编译 1.解压到i2c tool目录。 2.进入i2c tool,修改Make

#维多利亚的秘密# 1303
上一篇: Redhat查看系统信息的方法
下一篇: 路由器处理ARP包过程(ZZ)
evenness
博客等级 码龄15年 99粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值