最近调试了I2S。由于芯片里面硬件配置出现了几个错误,着实也把我折腾了一番,不过,最终

还是把它搞定了。为了加深理解,就做个笔记吧,方面以后查找和学习。

定义:I²S或I2S(英语:Inter-IC Sound或Integrated Interchip Sound)是IC间传输数字音频数据

的一种接口标准,采用序列的方式传输2组(左右声道)数据。I2S常被使用在发送CD的PCM音频数据

到CD播放器的DAC中。由于I2S将数据信号和时钟频率信号分开发送,它的抖动(jitter)有损十分地小。

基本概念

I²S由3条传输线组成:

比特时钟频率线(BCLK: bit clock line)

字符选择线(word select line)或左右时钟频率线(left right clock line)(LRCLK)

至少一条复合数据线(SDATA:multiplexed data)

有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。

也有可能找到以下这些线:

主时钟频率:256个典型的左右时钟频率线(MCLK= 256*LRCLK)

上传数据的复合消息(multiplex)线

I²S由前述的比特时钟频率、字符时钟频率和数据三条线所组成。当新的数据被放到数据在线时,比特时钟频率

就会跳动一次。它以数据采样率的64倍速度在运作,诸如CD的采样率为44.1 KHz,要传输它所使用的比特时钟

频率就为2.8224 MHz。I²S的数据线允许两个轨道的数据同时发送,而字符选择时钟频率能让接收设备知道现在

正在发送轨道1或轨道2的数据。每个轨道可传输32位的数据,所以显而易见地,字符选择时钟频率和声音的采

样率时钟频率是相同的。比特时钟频率即是采样率时钟频率的64倍,44.1KHz x 2个声道 x 32位 = 2.8224MHz。

I²S的数据是从高比特(MSB)发送至低比特(LSB),从字符选择时钟频率的左端开始,加上一个比特时

钟频率的延迟,即数据将比字符选择时钟频率要慢一个比特时钟频率。也有左校正(Left Justified)的I²S数据流

,它没有比特时钟频率的延迟,数据和字符选择时钟频率是同步的。右校正(Right Justified)则是数据比字符

选择时钟频率快一个比特时钟频率。

系统配置方法:

要注意master和slave的配置方式是不一样的,slave的配置:

i2sip_w_slave_i2sip(reg_base,HAL_I2S_SLAVE); //配置salve模式

WRITE_REG(0x0,I2S_BASE,0x68); //关闭其他通道。

WRITE_REG(0x0,I2S_BASE,0xa8);

WRITE_REG(0x0,I2S_BASE,0xe8);

定位思路:

A 首先要调试master模式,这种简单,一般通过示波器查看是否有时钟或者数据发出。要看波形,最好在

发送中写入:0x55 (特殊方法,高低高低)

B 其次,调试slave模式的情况下,首先查看是否有软件接收中断,如果有,说明配置正确,如果没有

要查看寄存器配置,确定slave模式是否打开成功。

C 要确定slave模式接收到的数据是否正确,master发送正玄波,固定数等进行测试。

D 一定要确定外边的使用的硬件环境是否OK,具体有几种情况需要确定,线缆,能否发送,能否接收,

今天就遇到一个i2s的线缆接触不良的问题,真是坑人啊。

python 开发板 i2s_嵌入式小系统I2S接口调试总结相关推荐

  1. 构建一个适合stm32mp157系列开发板的嵌入式Linux系统

    在线课堂:https://www.100ask.net/index(课程观看) 论  坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taoba ...

  2. python 开发板 i2s_[Craftor原创] I2S总线接口设计(Verilog)

    本文有Craftor原创,转载请保留出处. I2S是数字音频的接口,这里不用多说,请读者自己查阅相关资料. 本文中要设计的是FPGA与数字音频芯片的I2S接口时序.简单点说,就是通过FPGA向音频芯片 ...

  3. 在ARM开发板的嵌入式linux系统上运行的QT程序,必须得要在linux里用QT编吗

    https://blog.csdn.net/weixin_36060730/article/details/78359300

  4. 嵌入式系统实验 构建嵌入式Linux系统,《嵌入式系统与开发》构建嵌入式Linux系统-实验报告.doc...

    <嵌入式系统与开发>构建嵌入式Linux系统-实验报告 <嵌入式数据库sqlite移植及使用> 实验报告 学生姓名: 陈 彤 学 号: 1座机电话号码 专业班级: 130044 ...

  5. STM32F103RCT6Mini开发板搭建指纹识别系统

    STM32F103RCT6Mini开发板搭建指纹识别系统 导读 模块和工具的准备 接线 1.44寸液晶屏电源接线 液晶屏数据线接线 液晶屏控制线接线 指纹识别模块AS608接线 实物图: 接线图: 移 ...

  6. 从0到1使用python开发一个半自动答题小程序

    从0到1使用python开发一个半自动答题小程序 前言 最近每天都有玩微信读书上面的每日一答的答题游戏,完全答对12题后,可以瓜分无限阅读卡.但是从小就不太爱看书的我,很难连续答对12道题,由此,产生 ...

  7. Python 开发接豆人小游戏 TurnipBit

    Python 开发接豆人小游戏 TurnipBit 最近入手了一款MicroPython的开发板-TurnipBit,这个板子比较适合单片机入门,以及青少年编程,因为它有配备的在线图形编程. 官网地址 ...

  8. android开发板那种好,学嵌入式用哪个开发板好?嵌入式开发板推荐

    学习嵌入式,必不可少的工具就是一块开发板.对新手而言,学嵌入式用哪个开发板好,下面为大家推荐一款比较好的嵌入式开发板. 嵌入式开发板要推荐的是:fs4412开发板,是当前前沿的ARM Cortex-A ...

  9. python 开发板-MicroPython:STM32 上 的 Python 开发

    虽然Python在国外是一门非常火的语言,在黑客界更是赫赫有名,然而中国的大学却极少开设 Python 课程,故而国内 Python 程序员多属自学.而一个没有MCU编程经验的初学者,要想让芯片跑起来 ...

最新文章

  1. php No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax跨域访问解决方法
  2. OSError: image file is truncated (28 bytes not processed)
  3. write up杂项:想蹭网先解开密码
  4. 使用JUnit 5在Mockito中方便地进行模拟–官方方式
  5. python编程工时计算_Python编程题:两个日期间的天数统计(附代码)
  6. 【Elasticsearch】将 term查询的 integer 字段改成 keyword之后, must 再改成 filter,就造成query_cache剧降
  7. 使用$.post和action或servlet交互 URL出现 http://localhost:8080/../[object%20Object] 错误的问题解决
  8. 市政管理学考试复习资料
  9. Linux delete folder
  10. Excel如何在不同日期后面插入空行
  11. java画图板可选颜色,java学习——画图板
  12. 安全多方学习开源框架调研
  13. 常用的几种数据库介绍
  14. 一条简单的sql语句导致的系统问题(r4笔记第51天)
  15. 苹果机型中最具经典的三款机型
  16. 时间序列预测-深度学习方法
  17. 【解决方案】解决ImportError: Library “GLU“ not found.问题
  18. 卡罗拉 (COROLLA) - 灯光开关
  19. 寻路算法 --- 广度寻路算法
  20. Mac OS X窗口操作快捷键

热门文章

  1. debian10 简单的bash脚本监控apache运行状态
  2. 【VB】学生信息管理系统4——数据库的发展
  3. SpringCloud Alibaba微服务实战(一) - 基础环境搭建
  4. MindSpore应用目标
  5. TensorFlow基础剖析
  6. 客快物流大数据项目(四十九):开发环境初始化
  7. 2021年大数据Flink(四十四):​​​​​​扩展阅读 End-to-End Exactly-Once
  8. LookupError: unknown encoding: uft-8
  9. java.io.FileNotFoundException: /storage/emulated/0/one.mp4 (Permission denied)
  10. greendao3出现 Error:Execution failed for task ':app:greendao'