当前位置:首页 > 电源 > 数字电源
[导读] 引言  I2S(InterIC Sound Bus)是飞利浦公司针对数字音频设备之间的音频数据传输而制定的一种总线标准,采用沿独立的导线传输时钟与数据信号的设计,通过分离数据和时钟信号,避免了时差诱发的失真。I2S总线简单

  引言

  I2S(InterIC 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为“0”表示传输的是左声道的数据,WS为“1”表示传输的是右声道的数据。

  ③ 串行数据信号SD,用于传输二进制补码表示的音频数据。

  I2S格式的信号无论有多少位有效数据,数据位的最高位(MSB)总是被最先传输,1次能够发送的数据决定于I2S格式的有效位数。

  1个典型的I2S信号时序如图1所示


图1  I2S总线典型时序图

  随着技术的发展,在统一的I2S接口下出现了多种不同的数据格式。根据SD信号相对于SCK和WS位置的不同,分为左对齐和右对齐2种格式,如图2和图3所示。


 

图2  16位有效位数的左对齐格式


图3  16位有效位数的右对齐格式[!--empirenews.page--]

  在上面2种数据传输格式中,当WS为“1”时传输的是左声道的数据,当WS为“0”时传输的是右声道的数据。为了保证数字音频信号的正确传输,发送端和接收端必须采用相同的数据格式。

  2  软件模拟I2S

  以太网数字语音广播系统主要是指以以太网为传播介质提供音频服务的广播系统,将语音信号以标准IP包的形式在以太网上进行传送,以实现语音广播功能。该系统在PC机端通过麦克风采集语音数据,然后将采集到的语音数据通过以太网发送给嵌入式终端,嵌入式终端将接收到的语音数据进行数/模转换后进行播放。系统实现框图如图4所示[5]。

 


 

图4  以太网数字语音广播系统框图


图5  LM3S8962与MS6336的连接图

  广播系统终端的MCU LM3S8962将接收到的语音数据通过I2S总线发送给语音解码芯片MS6336进行数/模转换并播放,

  LM3S8962和MS6336的连接如图5所示。为了完整还原出语音信号,需要保证软件模拟I2S信号时序严格精确,高低电平的转换采用延时程序实现。MS6336为16位D/A芯片,其I2S时序如图6所示。


图6  MS6336的典型I2S时序图

  该系统中的语音数据双声道,16位采样,1个采样点的数据为4字节,1个采样点数据通过MCU发送给MS6336,数据发送流程如图7所示。


图7  1个采样点数据发送流程

  软件模拟I2S引脚的定义如下:

  #define I2S_WS GPIO_PIN_5//模拟I2S声道选择时钟控制位

  #define I2S_BCK GPIO_PIN_6//模拟I2S位时钟控制位

  #define I2S_DATA GPIO_PIN_7//模拟I2S数据传送位[!--empirenews.page--]

  根据MS6336的I2S总线格式以及数据发送流程,软件模拟I2S总线的步骤如下:

  ① 根据语音数据采样率及采样位数计算得到SCK的值和WS的值(WS的值等于采样频率)。

  系统采样率为44.1 kHz,则SCK=2×44.1 kHz×103×16=1 411 200 Hz,WS=44 100 Hz。1个SCK时钟周期T=1/SCK=0?7 μs。采用延时程序模拟SCK时钟周期需要应用示波器来精确延时时间。本系统中一个SCK周期的延时为delayI2S(2)。

  ② 将WS、BCK和DATA均置为高电平。

  ③ 选择左右声道。首先发送左声道数据,将WS置低(若发送右声道数据则将WS置高)。

  for(ChannelCnt=0;ChannelCnt<2;ChannelCnt++){//双声道选择播放

  if(ChannelCnt==0){//左声道选择信号为低电平

  HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_WS << 2))) = ~I2S_WS;

  }

  else{//右声道选择信号为高电平

  HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_WS << 2))) = I2S_WS;

  }

  ……

  }

  ④ 选择高低字节。将左声道数据以高低字节的顺序发送,在发送高字节第1位数据之前先发送1个周期的串行时钟。

  for(HorLCnt=0;HorLCnt<2;HorLCnt++){//声道数据高低字节选择

  if(ChannelCnt==0){//左声道

  if(HorLCnt==0){//高字节

  c=*(SampleData+1);//SampleData指向音频数据缓冲区首地址,即左声道低字节

  delayI2S(2);//发送第一个数据位之前需要延迟一个位时钟周期

  }

  else{//低字节

  c=*SampleData;

  }

  }

  ……

  }

  ⑤ 开始传输音频数据(音频数据的传输在SCK下降沿准备数据,在SCK的上升沿发

  送给数据接收端)。将采样点左声道数据的高字节最高位送给SD,设置SCK为低电平,此时为SCK的下降沿,数据准备好。延时半个SCK周期以后将SCK置为高电平,此时SD线上的数据发送给数据接收端,延时半个SCK周期。依次将左声道剩余位数据按照最高位的方式发送出去。

  for(BitCnt=0;BitCnt<8;BitCnt++){//1次传送的数据长度为8位,先传送高字节再传送低字节置时钟线SCK为低,开始准备数据位

  HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_BCK << 2))) = ~I2S_BCK;

  if((c<<BitCnt)&0x80) {

  HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_DATA << 2))) = I2S_DATA;

  }

  else{

  HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_DATA << 2))) = ~I2S_DATA;

  }

  delayI2S(1); //延时半个SCK时钟周期置时钟线为高,开始传输数据位

  HWREG(GPIO_PORTA_BASE + (GPIO_O_DATA + (I2S_BCK << 2))) = I2S_BCK;

  delayI2S(1);//延时半个时钟周期

  }

  ⑥ 当将1个采样点的左声道的数据发送完以后,延时2个SCK周期,然后发送右声道的数据(同左声道数据的发送过程)。

  根据以上的过程对每个采样点的数据进行处理,就可以实现通过软件模拟I2S总线传输音频数据了。以上实现的是典型I2S时序模拟,而左对齐和右对齐2种格式只是时序稍有差异,模拟实现过程同典型I2S总线模拟实现过程基本相同。

  结语

  在以太网数字语音广播系统中应用软件模拟实现I2S总线时序,能够成功地实现语音信号的数据传输,实现语音信号的实时广播,表明了软件模拟实现I2S总线的可行性,为解决不支持I2S总线的MCU和各种I2S总线设备间的通信提供了一种可行的方法。但是,在应用软件模拟实现I2S的以太网数字语音广播系统实时播放语音信号时,存在一些噪声,表明在采用软件模拟实现I2S的时序精确性上存在一些欠缺。


 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Lua RTOS 是一个实时操作系统,设计在嵌入式系统上运行,对 FLASH 和 RAM 内存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平台,并可以轻松移植到其他32位...

关键字: Lua RTOS 操作系统 嵌入式系统

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UATR,是一种串行、异步、全双工的收发器。全双工的UART支持同时双向通信,是嵌入式系统必不可少的d...

关键字: 异步收发 传输器 嵌入式系统

上海2022年10月17日 /美通社/ -- 近日,第17届中国研究生电子设计竞赛(下简称:研电赛)全国总决赛评审工作圆满完成。今年,来自全国63个高校的114支参赛队伍报名了TI企业命题,创下历史新高。并且,...

关键字: TI 德州仪器 OS 模拟

Flash Memory 是一种非易失性的存储器。在嵌入式系统中通常用于存放系统、应用和数据等。在 PC 系统中,则主要用在固态硬盘以及主板 BIOS 中。

关键字: Flash 存储器 嵌入式系统

芭比娃娃制造商、全球玩具巨头美泰公司(Mattel)宣布入驻元宇宙平台Roblox,正式进军元宇宙市场。该公司已经在沙盒游戏元宇宙Roblox中为芭比娃娃建造了一个虚拟空间,几个月后将在 Livetopia 中举办「芭比...

关键字: POCKET 模拟 TOP TE

可以有很多种,如果我们随机采访10位业内大佬,也许会得到10种不同的答案。举个例子,按照处理信号方式可分为模拟芯片和数字芯片。按照设计理念可分为可分为通用芯片和专用芯片。

关键字: 模拟 芯片 数字芯片

(全球TMT2022年9月22日讯)OneAsia宣布,推出高性能计算解决方案OAsis,并作为香港首个同类解决方案,赋能针对复杂数据的计算能力和模拟计算能力。 OAsis支持客户将按需计费的敏捷性云服...

关键字: ASIA 高性能计算 数据存储 模拟

泰国曼谷2022年9月21日 /美通社/ -- 华为全联接大会2022泰国曼谷站期间,在"智能云网,引领数字化创新"峰会上,华为围绕客户当前业务场景的最新变化,详细阐述了云园区网络CloudCampu...

关键字: 华为 数字化 Wi-Fi 数据通信

上海2022年9月19日 /美通社/ -- 近日,由全球领先的数字化整合增值服务商 -- 柯尼卡美能达(中国)投资有限公司发起的"握爪之约,追光未来"导盲犬爱心公益活动暨捐赠仪式于广州导盲犬学校举行。...

关键字: CSR 数字化 机电设备 模拟

近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。 嵌入式系统一般由嵌入式微处理器、外...

关键字: 嵌入式 嵌入式系统 计算机

数字电源

15504 篇文章

关注

发布文章

编辑精选

技术子站

关闭