i2s

RT600 I2S外设介绍及应用

穿精又带淫゛_ 提交于 2020-02-14 14:48:50
恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作。不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核与高性能Cadence Tensilica HiFi 4 音频DSP内核相结合,适用于32位沉浸式音频播放和视频用户界面应用。i.MX RT600旨在通过安全、功率优化的嵌入式处理器充分挖掘语音辅助终端节点的潜力,因此针对音频数据的采集、传输和处理,i.MX RT600都有丰富的硬件资源进行支持。其中,针对RT600的I2S外设,本文详细地进行了介绍,并基于i.MX RT600 EVK开发板,在RT600的DSP端(HiFi4)实现了一个音频数字回环的demo。 一、I2S介绍 1.1 I2S 接口 I2S总线为数字音频流的传输提供了标准的通信接口,由飞利浦制定。I2S总线规范定义了一种3线串行总线,分别是: 1、串行时钟SCK(也称位时钟BCLK),这是SDA线上数据的位时钟。对应SDA的每一个数据位,SCLK都有产生一个脉冲。 2、帧时钟WS(也称LRCK,或FSYNC),以大多数单一立体声格式的PDM数据来说,WS用于切换左右声道的数据;在DSP或TDM模式下用作帧定界符。此外,I2S的采样频率是由WS频率决定的。 3、串行数据(SDA),就是用二进制表示的音频数据流

I2S 总线学习:2-I2S驱动WM8978

不问归期 提交于 2020-02-14 11:04:23
背景 为了了解I2S总线所对应的硬件设计,下文转载了 《STM32:I2S驱动WM8978》 。 以加深对I2S总线的了解。 正文 最近项目中使用STM32F4驱动音频IC:WM8978。 由于STM32的I2S接口只有一个数据引脚,因此在设计引脚的时候,就需要确定是录音还是放音。 WM8978为DAC+ADC芯片,本身并不具备编解码的功能。 1)WM8978可通过I2S接口接收PCM数据,转为模拟信号输出,此为DAC过程,即放音; 2)WM8978可接收模拟信号转为数字信号,通过I2S接口传输给MCU,此为ADC过程,即录音。 3)WM8978还使用I2C接口配置其工作参数,比如音量,EQ,3D环绕等。WM8978本身可直连1W/8欧的小喇叭。(在下文中没有使用) 1.GPIO配置 我使用的是I2S3,对着硬件工程师给的原理图,再使用STM32CubeMX对照各个管脚看看是否有此映射。不得不说,新版的STM32CubeMX使用起来有些不顺。我只喜欢使用STM32CubeMX查看资源,却不喜欢这个软件的代码,架构有些不合我意。 我使用的还是传统的库,版本为V1.4.0。 GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB |

I2S 总线学习:1-有关概念

ⅰ亾dé卋堺 提交于 2020-02-13 23:41:22
背景 I2S总线 是一种常见的总线,也是需要掌握的。 概念 I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。 I2S的总线规范 I2S有4根线,包括:IISDI(串行数据输入),IISDO(串行数据输出),IISLRCK(左右通道选择),和SCLK(串行位时钟)。 产生 IISLRCK 和 IISCLK 的设备是主设备。 I2S有3个主要信号: 1.串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数。 帧时钟LRCK,(也称WS),用于切换左右声道的数据。LRCK为“1”表示正在传输的是右声道的数据,为“0”则表示正在传输的是左声道的数据。LRCK的频率等于采样频率。 3.串行数据SDATA,即用二进制补码表示的音频数据。(MSB ---> LSB:数据由高位到低位依次传输) 4、一般还有MCLK,主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。 有时为了使系统间能够更好地同步

I2S学习

你说的曾经没有我的故事 提交于 2020-01-31 10:16:36
一. I2S物理接口 SCLK(BCLK) 时钟信号 WS(LRCK) 声道选择,1是左声道,0是右声道 SDATAZ(DOUT) 来传送数据 MCLK MCLK = fs * sample_rate = 三种对齐方式 左对齐 I2S格式 右对齐(日本格式) 总线上只有一个主设备和发设备 采样率 32kHz ,44.1kHz,48kHz,96kHz,192kHz 来源: CSDN 作者: Hao_Zhen 链接: https://blog.csdn.net/Hao_Zhen/article/details/104108092

数字音频接口(I2S,PCM/TDM,PDM)

倖福魔咒の 提交于 2019-12-27 16:15:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 概述 数字音频接口 DAI ,即Digital Audio Interfaces,顾名思义,DAI表示在板级或板间传输数字音频信号的方式。相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DAI在音频电路设计中得到越来越广泛的应用。 图1 和 图2 对比传统的音频信号和数字音频信号链的区别。 在传统的音频电路( 图1 )中有麦克风、前置放大器、模/数转换器ADC、数/模转换器DAC、输出放大器,以及扬声器,它们之间使用模拟信号连接。随着技术的发展和对性能考虑,模拟电路逐渐被推到链路的两端(集成到设备内部),信号链中各集成电路间将出现更多的数字接口形式。DSP通常都是数字接口的;换能器(Transducers, i.e. Mic & Speaker)、放大器一般而言只有模拟接口,但现在也正在逐渐集成数字接口功能。 目前,集成电路设计人员正在将换能器内的ADC、DAC和调制器集成到信号链一端,这样就不必在PCB上走任何模拟音频信号,并且减少了信号链中的器件数量。 图2 给出了一个完整数字音频接口的例子。 图1. 传统的音频信号链路 图2. 数字音频信号链路 数字音频信号的传输标准,如 I2S 、 PCM (Pulse Code Modulation) 和 PDM (Pulse Density

alsa声卡驱动分析总结(一)

落花浮王杯 提交于 2019-12-04 03:40:13
alsa声卡驱动分析总结 分析只列出部分重要代码,具体请参考 linux3.0 内核代码。 Alsa 架构整体来说十分复杂,但对于驱动移植来说我们仅仅只需要关心 ASOC 就足够了。 在学习 asoc 之前我们先了解一些专业术语: ASoC currently supportsthe three main Digital Audio Interfaces (DAI) found on SoC controllers and portable audio CODECs today, namelyAC97, I2S and PCM. ASoC 现在支持如今的SoC 控制器和便携 音频 解码器上的三个主要数字音频接口,即AC97 ,I2S,PCM(与pcm音频格式注意区分,前者是一种音频接口,后者是一种输入声卡的音频格式)。 AC97 AC97 ==== AC97 is a five wire interface commonly found on many PC soundcards. It is now also popular in many portable devices. This DAI has a reset line and time multiplexes its data on its SDATA_OUT (playback) and SDATA_IN

I2S总线

匿名 (未验证) 提交于 2019-12-03 00:30:01
转自:https://blog.csdn.net/greston/article/details/8076584 引言 I2S(In te rIC Sound Bus)是飞利浦公司针对数字音频设备之间的音频数据传输而制定的一种 总线 标准,采用沿独立的 导线 传输时钟与数据信号的设计,通过分离数据和时钟信号,避免了时差诱发的失真。I2S 总线 简单有效,可以有效提升输出数据的质量,在各种嵌入式音频系统中有广泛应用。但是在嵌入式音频系统设计中,并不是所有的 MCU 都支持I2S总线格式,再加上I2S还没有统一的 接口 标准,不同的厂家生产的设备接口也是五花八门,采用软件模拟实现I2S总线可有效解决在不支持其的MCU和设备之间通过I2S总线实现数据传输时出现的问题。 本文通过在以太网数字语音广播系统中软件模拟I2S总线实现语音数据传输,给出了软件模拟实现I2S总线的方法。 1 I2S总线规范 I2S为三线总线,3个信号分别为: ① 串行时钟SCK,也叫位时钟(BCK)。即每发送1位数字音频数据,SCK上都有1个脉冲。SCK的频率=2×采样频率×采样位数。在数据传输过程中,I2S总线的 发送器 和 接收器 都可以作为系统的主机来提供系统的时钟频率。 ② 帧时钟WS,即命令(声道)选择,用于切换左右声道的数据。WS的频率等于采样频率,由系统主机提供。WS为“1”表示传输的是左声道的数据

程序卡在 while(SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_TXE) == RESET) 处

匿名 (未验证) 提交于 2019-12-02 23:59:01
stm32 SPI1,发现程序卡在 while(SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_TXE) == RESET); 解决方式: 1、检查RCC时钟配置 参考链接:12楼 http://bbs.21ic.com/icview-440361-1-1.html 2、更改检查方式 while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET); 参考链接: https://blog.csdn.net/baiyibin0530/article/details/53064575 来源:博客园 作者: sethnie 链接:https://www.cnblogs.com/sethnie/p/11482011.html

第17章Linux音频设备驱动之Linux ASoC音频设备驱动

匿名 (未验证) 提交于 2019-12-02 21:59:42
17.5 Linux ASoC音频设备驱动 17.5.1 ASoC(ALSA System on Chip) 驱动的组成 ASoC(ALSA System on Chip) 是 ALSA 在 SoC 方面的发展和演变,ASoC在本质上仍然属于ALSA,但是在 ALSA 架构基础上对 CPU 相关的代码和 Codec 相关的代码进行分离。其原因是,采用传统 ALSA 架构的情况下,同一型号的 Codec 工作于不同的 CPU 时,需要不同的驱动,这不符合代码重用的要求。 对于目前嵌入式系统上的 声卡驱动 开发,建议读者尽量采用 ASoC 框架 ,ASoC 主要由 3 部分组成。 (1) Codec 驱动 。这一部分只关心 Codec 本身,与 CPU 平台相关的特性不由此部分操作。 (2) 平台驱动 。这一部分只关心 CPU 本身,不关心 Codec。主要处理两个问题:DMA 引擎和 SoC 集成的 PCM、I 2 S 或 AC 97 数字接口控制。 (3) 板驱动(称为 machine 驱动) 。这一部分将平台驱动和 Codec 驱动绑定在一起,描述板一级的硬件特征。 在以上 3 部分中,1 和 2 基本都可以仍然是通用的驱动,Codec 驱动认为自己可以连接任意 CPU,而 CPU 的 I 2 S、PCM 或 AC 97 接口对应的平台驱动则认为自己可以连接任意符合其接口类型的

audio write pcm ioctl - SNDRV_PCM_IOCTL_WRITEI_FRAMES

痴心易碎 提交于 2019-12-02 12:50:09
http://androidxref.com/9.0.0_r3/xref/external/tinyalsa/pcm.c#535 http://androidxref.com/kernel_3.18/xref/sound/core/pcm_native.c#2745 https://blog.csdn.net/Vincentywj/article/details/77849442 对于回放的情形,PCM 数据流向大致是: copy_from_user DMA I2S DAC ^ ^ ^ ^ +---------+ | +----------+ | +-----------+ | +-----+ | +------+ |userspace+-------->DMA Buffer+------->I2S TX FIFO+------->CODEC+------->SPK/HP| +---------+ +----------+ +-----------+ +-----+ +------+ 来源: https://blog.csdn.net/chenqiang0721/article/details/102761326