转自:http://blog.chinaunix.net/uid-26895763-id-3478882.html

在處理音訊相關的問題時,我通常會找個方法來讀寫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://3sec.kilab.tw/?p=260

本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/6035641.html,如需转载请自行联系原作者

Linux I2C工具查看配置I2C设备【转】相关推荐

  1. linux下kvm设备配置,Linux下为KVM 配置桥接设备

    还原原始配置 [root@master ~]# route delete default            //删除默认网关 [root@master ~]# route -n Kernel IP ...

  2. Linux命令之查看所有块设备信息lsblk

    概述 lsblk 命令可以列出所有可用块设备的信息,块设备包括光盘.硬盘等.lsblk 是 list block 的缩写. 关于显示的各列信息说明如下: NAME:块设备名. MAJ:MIN:主要和次 ...

  3. linux nm工具 查看静动态库导出函数

    查看动态导出函数 方法一 nm -D  **.so 但这样能看到所有的导出,乱七八糟的很多,筛选用: nm **.so | grep XX 方法二 objdump -tT **.so 查看静态导出函数 ...

  4. linux自带i2c工具使用

    导读 I2C总线被全球超过50个公司的1000+个ICs所使用,已然是一个世界标准.另外,I2C总线与多种不同的控制总线是兼容的,比如SMBus(系统管理总线),PMBus(电源管理总线),IPMI( ...

  5. 启明云端分享|Linux系统下如何调试I2C设备

    提示:Linux系统中,一些传感器通常挂载在I2C总线上,比如RTC和CSI等.我们在调试这些设备的时候,就需要了解Linux系统中操作I2C总线的方法.本文将详细介绍在Linux系统中如何调试I2C ...

  6. 使用海思自带的i2c工具访问i2c设备

    1 前言   linux下开发i2c设备驱动,一般分为两个阶段,第一阶段是驱动实现,第二阶段是调试.驱动实现即是对i2c设备的正确访问,包括读.写.控制.而第二阶段,一般用于需要调整参数的i2c设备, ...

  7. Linux I2C核心、总线与设备驱动(二)

    从上面的分析可知,虽然I2C硬件体系结构比较简单,但是I2C体系结构在Linux中的实现却相当复杂.当工程师拿到实际的电路板,面对复杂的 Linux I2C子系统,应该如何下手写驱动呢?究竟有哪些是需 ...

  8. Linux I2C核心、总线与设备驱动(一)

    本章导读 I2C总线仅仅使用SCL.SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用.因此,I2C总线被非常广泛地应用在EEPROM.实时钟.小型LCD等设备与 ...

  9. linux pcie命令,setpci命令_Linux setpci 命令用法详解:查询和配置PCI设备的使用工具...

    setpci命令是一个查询和配置PCI设备的使用工具. 语法setpci(选项)(参数) 选项-v:显示指令执行的细节信息: -f:当没有任何操作需要完成时,不显示任何信息: -D:测试模式,并不真正 ...

最新文章

  1. web.config中配置Session
  2. dllinject使用
  3. 2022年美国大学生数学建模竞赛常见问题汇总
  4. Bug测试报告--在线考试系统--金州勇士
  5. css规则可以放在云上,CSS中!important规则的使用方法
  6. 2019 CCPC - 网络选拔赛 A题^^
  7. PCA与SVD的数学原理
  8. python与线性代数 矩阵与方程组
  9. 介绍Angular的注入服务
  10. 蓝桥杯 ADV-202算法提高 最长公共子序列(动态规划)
  11. DSP之通信之MMC控制器
  12. 16. JavaScript Boolean(逻辑)对象
  13. 自己动手写CPU之第七阶段(2)——简单算术操作指令实现过程
  14. 李峋同款的C语言动态爱心代码(终于不是html的啦)
  15. 计算机机房网络布线方案,计算机机房布线方案与机房的环境要求
  16. java并行计算π_3月14日圆周率日—使用并行计算求圆周率π
  17. 一套完整仿拉勾网HTML静态网页模板(含38个独立HTML)
  18. 迅雷 11 11.1.3.1122 ,主界面蜕变为简洁清爽的风格
  19. QQ分享功能实现-Android
  20. 荐书一本-----《天才在左,疯子在右》

热门文章

  1. 【物联网】NB-IoT简介
  2. python实现matlab中的diff,Python实现matlab数据绘制
  3. redis del清除缓存java_删除redis缓存报错
  4. antirecall怎么打开_QQ/微信防撤回工具 — Anti recall
  5. 怎么锁定电脑屏幕_和平精英怎么在电脑上玩?匹配手机最简单的方式玩你值得拥有...
  6. Java项目:医院分诊挂号住院管理系统(java+SpringBoot+FreeMarker+Mysql)
  7. php 变更 obj,PHP: 不向后兼容的变更 - Manual
  8. mysql类exadata功能_几类关系型数据库的数据解决方案
  9. 字节跳动java笔试题目_牛客网--字节跳动面试题--特征提取
  10. 【基础知识】win10常用快捷键