I2S接口是许多音频系统的关键。
XMOS技术非常适合这些应用-支持多种标准接口以及多种
DSP功能。本应用笔记演示了如何使用XMOS I2S库在XMOS多核微
控制器上创建数字音频环回。 本应用笔记中使用的命令将音频编解码器配置为同时发送和接收音频样本。 然后,它使用I2S库环回所有8个
通道。
XMOS I2S库提供软件定义的、行业标准的I2S(集成
芯片间声音)组件,允许您使用xCORE
GPIO端口在设备之间传输音频。I2S是一种特定类型的PCM数字音频通信,使用位时钟线、字时钟线和至少一个多路复用数据线。线库包含功能例如I2S主、I2S从和TDM主组件。本应用说明使用库创建I2S主数字环回。
应用程序框图:
应用程序框图
应用程序完全适合于一个逻辑核心。I2S、GPIO和
I2C驱动程序都与环回应用程序进行时间复用。
I2S loopback demo
1、生成文件
要开始使用I2S,您需要将lib_i2s添加到
MAKEfile中:USED_MODULES = .. lib_i2s ...
该演示还使用了I2C库(lib_i2c)和GPIO库(lib_gpio)。 I2C库用于配置音频编解码器。 GPIO库抽象了使用4位端口来驱动四个独立的端口重置并选择行。 因此,Makefile还包括:
USED_MODULES = .. lib_gpio lib_i2c ..
2、包括
所有声明应用程序main()函数的xC文件都必须包含platform.h。 用于声明和初始化硬件的XMOS xCORE特定定义在xs1.h中定义。
#
include <platform.h>
#include <xs1.h>
I2S库函数在i2s.h中定义。 该标头必须包含在您的代码中才能使用该库。
#include "i2s.h"
#include "i2c.h"
#include "gpio.h"
其他两个包括对本应用笔记所依赖的I2C和GPIO库功能的访问。
3、分配硬件资源
I2S接口需要时钟和数据引脚才能与音频编解码器设备进行通信。在xCORE上,这些引脚由端口控制。 I2S库使用的端口在它们驻留的磁贴上声明,并带有其方向和缓冲性质。 此环回应用程序使用四个1位端口作为输入,另外四个用于输出:
on tile[0]: out buffered port:32 p_lrclk = XS1_PORT_1G;
on tile[0]: out buffered port:32 p_bclk = XS1_PORT_1H;
on tile[0]: in port p_mclk = XS1_PORT_1F;
on tile[0]: out buffered port:32 p_dout[4] = {XS1_PORT_1M, XS1_PORT_1N, XS1_PORT_1O, XS1_PORT_1P};
on tile[0]: in buffered port:32 p_din[4] = {XS1_PORT_1I, XS1_PORT_1J, XS1_PORT_1K, XS1_PORT_1L};
CORE还提供时钟
模块硬件,以有效地生成时钟
信号,该时钟信号可以在端口上被驱除或用于控制端口。 在此应用中,使用了两个时钟块:
on tile[0]: clock mclk = XS1_CLKBLK_1;
on tile[0]: clock bclk = XS1_CLKBLK_2;
I2C库使用声明的其他端口来配置音频编解码器,并通过应用程序来控制复位和芯片选择:
on tile[0]: port p_i2c = XS1_PORT_4A;
on tile[0]: port p_gpio = XS1_PORT_8C;
更多详细内容请下载附件查看