1. 概述¶
1.1. 模块说明¶
音频输出(Audio Output, AO)负责实现数字音频信号到物理设备的输出通路。该模块向下管理音频编解码器、DMA控制器、时钟源等硬件资源,向上为操作系统及应用程序提供参数配置、启用音频输出设备、PCM数据推送、以及音量设置等接口。
关键字说明
-
Device (音频输出设备)
AO的Device指的是audio codec的RDMA。Device是audio3.0对audio codec中DMA的抽象,audio codec中的RDMA和AO Device为一一对应的关系。如AO Device0对应audio codec中的RDMA1,AO Device1对应audio codec中的RDMA2,以此类推。audio3.0的数据流均以DMA为中心进行串接。
audio3.0中还包括另一类Device,即AI设备不经过DMA,直接将数据流送至AO设备,如(Amic→Lineout)。这一类device称为直通通路Device,即Passthrough,目前仅支持MI_AUDIO_PASSTHROUGH_DEV_1。
-
Interface (音频输出外设)
AO的Interface指的是audio codec的音频输出外设接口的抽象,如Speaker/I2S Codec/HDMI等接口。
-
Attach
AO的attach指的是将Interface挂载到RDMA上。对于AO Device而言,Attach是将RDMA的输出信号连接到具体的Interface,使外设输出音频信号。AO Device支持动态Attach。
当同一个AO Interface被Attach到两个AO Device时,AO Interface的输出为两个AO Device输出混音后的结果(Mochi系列支持)。
当使用场景中包含Passthrough时,需要先要attach AI,再attach AO,否则将不能正常使用。
下图是将I2S TX和DAC0/1 Attach到RDMA1的结果,从RDMA1输出的信号经过DPGA做增益调节后,分成3个支路分别到达DAC0、DAC1和I2S TX。Ao Device的Attach就是在设定这些支路的流向。
图1‑1:attach示意图
-
Detach
AO的detach指的是将Interface和RDMA的连接断开。
-
Echo (回声)
AO的Echo指的是AEC的参考数据。由audio codec框图可以看出,SRC的输入是RDMA输出并经过DPGA放大的信号,SRC的输出则是对输入进行重采样后的信号,可通过Multi Channel送进WDMA,作为AEC算法的回声参考数据。
对于AI Device而言,Echo表示audio codec框图中SRC的输出信号。而对于AO Device而言,Echo表示将AO Device的输出连接到SRC的输入。下图以简单框图表示AI Device和AO Device同时使用Echo的数据流情况,应用即可获取到已经对齐的AEC far end和near end的数据。
图1‑2:Echo示意图
-
Sound Mode (声音模式)
AO的Sound Mode指的是音频的声道数,如单声道、立体声。
-
Channel Mode (声道输出模式)
支持静态设置和动态设置Channel Mode,Muffin系列芯片不支持动态Channel Mode设定。
AO的Channel Mode指代的是RDMA通道的输出模式。对于AO Device而言,Channel Mode决定了音频数据的声道和Interface输出左右声道的对应关系。下面结合图示来说明Channel Mode的作用。
-
E_MI_AO_CHANNEL_MODE_STEREO
正常的立体声模式。
图1‑3:STEREO模式示意图
-
E_MI_AO_CHANNEL_MODE_DOUBLE_MONO
Double Mono单声道,左右两个声道输出为同样的单声道数据。
图1‑4:DOUBLE MONO单声道模式示意图
Double Mono立体声,左右两个声道输出为左右声道混音后的数据,左右声道输出相同。
图1‑5:DOUBLE MONO双声道模式示意图
-
E_MI_AO_CHANNEL_MODE_DOUBLE_LEFT
Double Left立体声,左右两个声道输出为左声道数据。
图1‑6:DOUBLE LEFT模式示意图
-
E_MI_AO_CHANNEL_MODE_DOUBLE_RIGHT
Double Right立体声,左右两个声道输出为右声道数据。
图1‑7:DOUBLE RIGHT模式示意图
-
E_MI_AO_CHANNEL_MODE_EXCHANGE
Exchange立体声,左右两个声道输出为左右声道互换数据。
图1‑8:EXCHANGE模式示意图
-
E_MI_AO_CHANNEL_MODE_ONLY_LEFT
Only Left单声道,只有左声道输出为单声道数据。
图1‑9:ONLY LEFT单声道模式示意图
Only Left立体声,只有左声道输出为立体声数据。
图1‑10:ONLY LEFT双声道模式示意图
-
E_MI_AO_CHANNEL_MODE_ONLY_RIGHT
Only Right单声道,只有右声道输出为单声道数据。
图1‑11:ONLY RIGHT单声道模式示意图
Only Right立体声,只有右声道输出为立体声数据。
图1‑12:ONLY RIGHT双声道模式示意图
-
-
Gain
AO的Gain在audio3.0架构上分成两类,一类是与Device相关联的DPGA Gain,即audio codec框图中的DPGA,另一类则是Interface所独有的Gain,即audio codec框图中的IF Gain(也由DPGA实现,仅Interface独有),具体是否支持见框图。
-
Format
Format,即用什么数据形式来表示一个音频采样样本,目前仅支持S16_LE格式(PCM Linear 16bit (Little Endian))。(Pcupid支持S16_LE/S24_LE/S32_LE)
-
Sample Rate
Sample Rate,即播放采样率。
-
Period Size
对于AO Device而言,Period Size表示AO Device默认的起播条件(缓存中的样本数大于Period Size,才会起播)。
-
I2S参数
-
I2S Mode
I2S Mode决定了I2S的工作模式,是标准的I2S模式还是Tdm I2S模式(2Channel或多channel),是Master还是Slave(Master提供同步时钟,Slave接收同步时钟)。一般来说,工作模式没有什么限制,能与外接的Codec时钟匹配上即可。
-
I2S BitWidth
I2S 收发数据的位宽,目前可支持16/32bit,(Souffle系列仅支持16bit)但硬件只能处理16bit,意味着位宽为32bit时,低16bit为无效数据。(Pcupid支持16/24/32bit)
-
I2S Format
I2S的Format即I2S的对齐方式,目前仅支持I2S Philips以及Left-justified对齐。下图分别为这两种格式的波形图。
图1‑13:I2S Philips格式
图1‑14:I2S Left-justified对齐格式
I2S Philips的对齐格式,样本数据的第一个数据位出现在WCLK(即左右通道切换时钟)跳变的第一个BCLK(即串行时钟)后。左对齐格式,样本数据的第一个数据位出现在WCLK(即左右通道切换时钟)跳变的第一个BCLK(即串行时钟)内,且WCLK的极性与I2S Philips的对齐格式相反。
-
I2S Sample Rate
I2S 收发的采样频率。
-
Mclk
Mclk,称为主时钟,也叫系统时钟(System Clock),一般是采样频率的256或384倍,作用是为了使系统间能够更好的同步,并不是必须的。目前支持12.288M,16.384M,18.432M,24.576M,24M,48M等(具体支持哪些MCLK见数据类型)。
-
bSyncClock/4-Wire/6-Wire Mode
SigmaStar的I2S有两种接线方式。一种是4-Wire模式,包括RX_WCK、RX_BCK、RX_SDI、TX_SDO四根线,此模式下,TX没有独立的clock,所有的clock均由RX提供,故在此模式下TX需要依赖RX来使用,没法单独使用TX,且I2S TX的参数需与I2S RX一致。另一种是6-Wire模式,包括RX_WCK、RX_BCK、RX_SDI、TX_WCK、TX_BCK、TX_SDO六根线,此模式下RX和TX各自独立,没有关联。
4-Wire/6-Wire Mode的选择需要根据具体场景来决定。
MI API I2S参数中的bSyncClock为TRUE,则使用4-Wire Mode,FALSE则使用6-Wire Mode,且属于同一组I2S的RX和TX不能一边设置成4-Wire Mode,另一边设置成6-Wire Mode。
-
Slot
Slot表示I2S 传输的声道数,目前I2S模式下支持2slot,Tdm模式下支持4/8/16slot (Mochi系列和Souffle系列支持16slot),但I2S TX的有效数据为2slot,当对I2S TX设置大于2的slot个数时,除了slot0和slot1,其他的均为无效数据。
-
-
PCM
标准I2S(2Chn)协议属于PCM协议里最常用的一种。PCM可以传输多通道数据,如4channel,8channel,16channel等,也就是TDM协议(区别于标准I2S(2chn)协议的特定的格式)。一般用于传输单声道数据也常称为PCM(除过常用的标准I2S、TDM外,其他统称为PCM)。 Sigmastar Audio除过标准I2S(2chn)的设定,其他Timing 包括1Chn PCM的相关设定统一放到TDM的参数中设定。
-
Passthrough (直通通道)
Passthrough指的是不经DMA直接将数据流从AI设备传送到AO设备的通道。以ADC_AB→DAC_AB为例,如下图红色标注的通路:
图1-15:Mochi系列芯片直通通路示意图
Muffin系列芯片仅支持输入设备为ADC_AB到输出设备为DAC_AB的Passthrough。
Mochi系列芯片支持输入设备为ADC_AB/DMIC_A_01/ DMIC_A_23/I2S_A_01/…/ I2S_A_EF到输出设备为DAC_AB/I2S_TX/ HDMI的任意组合Passthrough。Mochi系列芯片目前Passthrough的限制为:仅支持采样率48K; Passthrough Device暂不支持Channel Mode设定; Passthrough + DMA混音场景时,输出设备仅支持DAC_AB。
1.2. 基本结构¶
本文档系针对Pcupid芯片音频子系统的说明,请参考1.2.6. Pcupid系列介绍。
1.2.1. Audio Codec器件说明¶
-
DMA
DMA即Direct Memory Access直接存储器访问,DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。
-
WDMA
WDMA即Direct Memory Access Writer直接存储器访问写入器。
-
RDMA
RDMA即Direct Memory Access Reader直接存储器访问读取器。
-
MUX
MUX即multiplexer 数据选择器,在多路数据传送过程中,能够根据需要将其中任意多路选出来的电路。WDMA前面的Mux为WDMA选择多个数据数据源,可支持选择1/ 2/ 4个数据源(数据源可以相同也可以不同,Souffle系列芯片最大支持选择8个数据源16Chn),每个数据源各有两声道,即选择2/ 4/ 8/ 16个声道的数据由WDMA写到DRAM(除了Souffle系列芯片支持16声道外,其他系列均最大支持8个声道),起到多路开关的作用。而接近输出外设接口(如I2S TX/HDMI/DAC等)的Mux实现的是多选一或一选多的作用。
-
DPGA
DPGA即Digital Programmable Gain Amplifier数字可编程增益放大器,是一种通用性很强的放大器,其放大倍数可以根据需要用程序进行控制。
-
DMIC
DMIC即Digital Microphone Interface 数字麦克风接口,audio codec仅仅提供DMIC接口,并非完整的DMIC。DMIC接口提供DMIC工作所需要的时钟信号,接收从DMIC来的PDM信号
-
ADC
ADC即Analog Digital Conversion 模拟数字转换,将模拟信号转变为数字信号的电子元件。
-
I2S
I2S即Inter—IC Sound 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。Sigmastar的I2S总线仅支持标准I2S数据格式以及左对齐的I2S数据格式。同时也支持TDM即Time-Division Multiplexing 时分复用技术,将不同的信号相互交织在不同的时间段内,沿着同一个信道传输,可同时支持4/8/16通道数据传输。
-
DAC
DAC即Digital Analog Conversion 数字模拟转换,将数字信号转变为模拟信号的电子元件。
-
SRC
SRC即Sample Rate Convert 采样率转换,对语音数字信号进行采样率转换。
-
HDMI
HDMI(High Definition Multimedia Interface,高清多媒体接口),AO输出接口,是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号。
-
Mixer
Mixer,硬件混音,使用线性叠加平均的算法(如果某一路音频的音量特别小,整个混音结果音量会被拉低),混音后可设置输出的采样率。
1.2.2. Muffin系列¶
图1‑16:Muffin系列芯片
Muffin系列芯片的audio codec拥有如下资源:
-
WDMA * 5
-
RDMA * 3
-
DMIC接口 (可支持4Chn DMIC信号) * 1
-
ADC (可支持2Chn Amic/Linein) * 2
-
I2S-TDM RX * 4
-
I2S-TDM TX * 2
-
DAC (可支持2Chn Lineout) * 2
-
SRC * 1
-
HDMI TX * 1
1.2.3. Mochi系列¶
图1‑17:Mochi系列芯片
Mochi系列芯片的audio codec拥有如下资源:
-
WDMA * 3
-
RDMA * 2
-
DMIC接口 (可支持4Chn DMIC信号) * 1
-
ADC (可支持2Chn Amic/Linein) * 2
-
I2S-TDM RX (16 slot) * 1
-
I2S-TDM TX (16 slot,但只有2路有效数据) * 1
-
DAC (可支持2Chn Lineout) * 2
-
SRC * 1
-
HDMI TX * 1
1.2.4. Maruko系列¶
图1‑18:Maruko系列芯片
Maruko系列芯片的audio codec拥有如下资源:
-
WDMA * 1
-
RDMA * 1
-
DMIC接口(可支持6Chn DMIC信号) * 1
-
ADC(可支持2Chn Amic/Linein) * 2
-
I2S RX(2 slot) * 2
-
I2S TX(2 slot) * 1
-
DAC(可支持2Chn Lineout) * 2
-
SRC * 1
1.2.5. Souffle系列¶
图1-19:Souffle系列芯片
Souffle系列芯片的audio codec拥有如下资源:
-
WDMA * 2
-
RDMA * 1
-
DMIC接口(可支持6Chn DMIC信号、DMIC CLK可与I2S_RX BCK共享) * 1
-
ADC(可支持3Chn Amic/Linein Differential Input) * 3
-
I2S RX(16 slot) * 1
-
I2S TX(16 slot) * 1
-
DAC(可支持2Chn Lineout Single Output) * 2
-
SRC(2路物理声道) * 1
1.2.6. Pcupid系列¶
图1‑20:Pcupid系列芯片
Pcupid系列芯片的audio codec拥有如下资源:
-
WDMA * 2
-
RDMA * 3
-
DMIC接口 (可支持8Chn DMIC信号) * 1
-
ADC (可支持2Chn Amic/Linein) * 2
-
I2S-TDM RX * 3
-
I2S-TDM TX * 3
-
DAC (可支持2Chn Lineout) * 2
-
SRC * 2
1.3. 功能介绍¶
Audio Out主要支持以下功能:
-
将数字音频流通过DAC转换为模拟信号输出
-
支持I2S/TDM/SPDIF/HDMI-TX数字音频协议输出
-
可支持通过4路独立SDO实现8声道同步输出
-
提供-64dB~+64dB范围增益控制
-
支持主/从模式切换及外部时钟同步
-
支持16/24/32bit位宽
1.3.1 DMA¶
-
数据位宽:支持16/24/32bit数据存取
-
多声道支持:
- RDMA支持2/6/8声道并行输出
1.3.2 DAC¶
-
DAC 特性:
- 输出模式:2路单端输出
1.3.3 I2S¶
-
I2S 主控接口:
-
发送通道:2通道输出(含多个独立SDO)
-
位宽支持:16/24/32bit
-
采样率范围:
-
TX:8/11.025/12/16/22.05/24/32/44.1/48/96/192KHz
-
工作模式:TX支持master 和 slave 模式 、TDM mode
-
1.3.4. DPGA¶
-
增益范围:-63.875dB ~ +64dB
-
调节精度:0.125dB/Step
-
fading步长:½/4/8/16/32/64/128
1.4. 应用场景¶
MI_AO可应用于以下场景:
-
Pure linux场景
在linux环境下支持基于MI_AI提供的API接口进行开发,同时也兼容标准ALSA接口进行音频开发。ALSA开发请参考Linux开发指南音频相关。
-
Pure rtos场景
在rtos环境下,应用程序可以基于MI_AO提供的API接口进行开发。
-
Dualos场景
在dualos环境下,在linux端或rtos端运行的应用程序均基于MI_AO API开发。
1.5. 芯片差异¶
本文档系针对Pcupid芯片音频子系统的说明,请参考1.5.5. Pcupid系列介绍。
1.5.1. Muffin系列¶
Muffin系列芯片拥有I2S RX * 4,但I2S RX C和I2S RX D有两种模式,一种称为share mode,一种称为slave mode。share mode,I2S RX C和I2S RX A共享I2S Clock(Wck以及Bck),I2S RX D和I2S RX B共享I2S Clock(Wck以及Bck),当需要同时使用I2S RX A和I2S RX C时,两者的I2S 参数必须完全一致,与I2S RX C对接的Codec需要将I2S Clock引脚(Wck以及Bck)与I2S RX A的I2S Clock(Wck以及Bck)相接, Data引脚与I2S RX C的Data相接,硬件接法如下图所示。I2S RX D与I2S RX B的关系也如同I2S RX C和I2S RX A一般。slave mode,I2S RX C和I2S RX D拥有独立的时钟,但只能作为slave使用。这两种模式可以通过dts sound节点下的i2s-rx-mode来设置,0为slave mode,1为share mode。
图1‑21:Muffin I2S 连接
1.5.2. Mochi系列¶
Mochi系列芯片的audio codec拥有如下资源:WDMA * 3, RDMA * 2, DMIC接口(可支持4Chn DMIC信号) * 1, ADC(可支持2Chn Amic/Linein) * 2, I2S-TDM RX(16 slot) * 1, DAC(可支持2Chn Lineout) * 2, SRC * 1, HDMI TX * 1。
Mochi系列芯片I2S支持最大16slot,采样率新增支持96K/192K。注意:在I2S的使用场景中,I2S BCK最大不能超过30MHz(如:BCK=16bit * 16slots * 192K=49.152M 或者 BCK=32bit * 16slots * 192K=98.304M,BCK > 30MHz的使用情况不支持)。
支持两个AO设备混音,在Audio Codec框图中用Mixer表示。混音后可设置输出采样率到8K/16K/32K/48K。
注:Mochi系列芯片Audio Codec框图中ADC_AB_PRE表示未经过DPGA前的音频信号,如图1-17。
1.5.3. Maruko系列¶
Maruko系列芯片,虽然有两组I2S RX,但两组I2S RX无法同时使用。以下是两组I2S RX的使用场景:
-
I2S RX:
-
外接codec传输的为非I2S信号,需要对Wck、Bck做调整,比如接收PCM信号。
-
需要与Dmic share clock,以达到Dmic和I2S RX同步。
-
外接codec工作在master mode。
-
-
I2S TRX:
- 需要使用I2S TX。
两组I2S RX选用哪一组通过dts sound节点下的i2s-pcm来选择,1为I2S RX,0为I2S TRX。另外I2S RX是否与Dmic share clock通过dts中dmic-bck-share来进行配置,1为share clock,0为独立clock。
1.5.4. Souffle系列¶
Souffle系列芯片I2S支持最大16slot,采样率支持96K/192K,支持1Chn PCM,但不支持32bit位宽收发, 相较于旧款SOC,支持输出更多频率的MCLK。
MUX目前最大支持16个声道,支持同时attach 16路音频数据到同一个DMA上。
I2S RX 'BCK'支持与Dmic 'CLK' share clock,I2S RX是否与Dmic share clock通过dmic-bck-share来进行配置,1为share clock,0为独立clock。
I2S支持short FF mode(通过dts中的节点i2s-rx-short-ff-mode/i2s-tx-short-ff-mode来配置),支持WS_DLY=1~3,其中WS_DLY=0即NO short FF mode,下图1-22、1-23分别为normal mode和short-FF-mode对应的时序。
图1‑22:I2S normal mode
图1‑23:I2S short-FF-mode
注意:在I2S的使用场景中,I2S BCK最大不能超过30MHz(如:BCK=16bit * 16slots * 192K=49.152M,BCK > 30MHz的使用情况不支持)。
1.5.5. Pcupid系列¶
Pcupid系列芯片I2S支持最大8slot,采样率支持96K/192K,支持1Chn PCM,支持16/24/32bit位宽收发。
WDMA0目前最大支持16个声道,支持同时attach 16路音频数据到同一个DMA上。 WDMA1目前最大支持8个声道,支持同时attach 8路音频数据到同一个DMA上。
I2S RX0 'BCK'支持与Dmic 'CLK' share clock,I2S RX0是否与Dmic share clock通过dmic-bck-share来进行配置,1为share clock,0为独立clock。
I2S支持short FF mode(通过dts中的节点i2s-rx-short-ff-mode/i2s-tx-short-ff-mode来配置),支持WS_DLY=1~3,其中WS_DLY=0即NO short FF mode。
1.5.6. 差异汇总¶
下表是不同芯片系列硬件差异:
Function | Pcupid | Tiramisu | Mochi | Muffin | Maruko | Opera | Souffle |
---|---|---|---|---|---|---|---|
WDMA | 2 | 2 | 2 | 5 | 1 | 2 | 2 |
ADC | 3 | 3 | 2 | 2 | 2 | 3 | 3 |
I2S_RX | 2 8ch 16/24/32bit 8k~192k | 1 8ch 16bit | 1 8ch 16bit | 3 8ch 16bit | 1 8ch 16bit | 2 16ch 16bit 8/16/32/44.1/48k | 1 16ch 16bit |
SPDIF_RX | 1 24bit 32k~192k | N | N | N | N | N | N |
HDMI_RX | N | N | N | N | N | 1 2ch 16bit 32/44.1/48k | N |
DMIC | 8ch | 4ch | 4ch | 4ch | 6ch | 8ch | 6ch |
RDMA | 3 | 2 | 2 | 3 | 1 | 2 | 2 |
DAC | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
I2S_TX | 3 2ch 16/24/32bit | 1 | 1 2ch 16bit | 3 2ch 16bit | 1 2ch 16bit | 2 2ch 16bit | 1 2ch 16bit |
SPDIF_TX | N | N | N | N | N | 1 | N |
HDMI_TX | N | N | N | N | N | N | N |
ECHO | Y | Y | Y | Y | Y | Y | Y |
1.6. 开发流程¶
1.6.1. 编译配置¶
-
进入alkaid project根目录,make menuconfig
-
回车键进入Sdk Config子选项
-
回车键进入Interface Compile Config子选项
-
空格键选中aio和ao子模块,并重新编译project
编译完成将在sdk/interface/src/ao下生成 mi_ao.ko,在sdk/interface/src/aio下生成 mi_aio.ko。 同时将mi_ao.h,mi_ao_datatype.h和mi_aio_datatype.h release到 project/release 目录, 在pure linux环境下会默认打包进入images。
1.6.2. 设备树¶
1.6.2.1 Linux DTS
Linux设备树用于描述硬件平台及其外设属性,文件位于linux/arch/{arm}/boot/dts/{chipName}.dtsi
, audio相关为sound
:
sound: sound { compatible = "sstar,audio"; interrupts=<GIC_SPI INT_IRQ_BACH IRQ_TYPE_LEVEL_HIGH>; amp-pad = <PAD_UNKNOWN 1 PAD_UNKNOWN 1 PAD_UNKNOWN 1 PAD_UNKNOWN 1>; clocks = <&CLK_au_sys_384>, <&CLK_aupll_384m>, <&CLK_au_sys_dyn_384>; // I2S TX0 TDM i2s-tx0-tdm-mode = <1>; // 1:master 2:slave i2s-tx0-tdm-fmt = <1>; // 1:i2s justify 2:left justify i2s-tx0-tdm-wiremode = <2>; // 1:4wire 2:6 wire i2s-tx0-channel = <2>; i2s-tx0-soundbar-mode = <1>; //0:OFF 1:ON i2s-tx0-tdm-ws-pgm = <0>; // 0: OFF 1: ON i2s-tx0-tdm-ws-width = <0>; // value: 0~31 (width = value + 1) i2s-tx0-tdm-ws-inv = <0>; // 0: normal 1: inverse WCK i2s-tx0-tdm-bck-inv = <0>; // 0: normal 1: inverse BCK i2s-tx0-tdm-ch-swap = <0 0 0 0>; // 0: OFF 1: ON i2s-tx0-tdm-active-slot = <0xFFFF>; // value: 0x00 ~ 0xFF (bit0->slot0, bit1->slot1, ... ) i2s-tx0-short-ff-mode = <0>; i2s-tx0-tx-mode = <1>; // Control the internal i2s clock invert or not debug-level = <0>; status = "okay"; };
设备树配置的属性如下表:
属性 | 描述 | 备注 |
---|---|---|
interrupts | 指定硬件中断号 | 禁止修改 |
clocks | 指定时钟源 | 禁止修改 |
amp_gpio | 指定AMP使能引脚 | 开启Padmux时优先使用Padmux中的设置 |
i2s-tdm-mode | 主从模式 | 1:主模式 2:从模式 |
i2s-tdm-fmt | I2S格式 | 1:标准格式 2:左对齐格式 |
i2s-tdm-wiremode | 配置I2S接线模式 | 1:4线模式 2:6线模式 |
i2s-channel | 配置I2S 通道数 | 取值范围: 1、2、4、8 |
i2s-tdm-ws-pgm | TDM可编程模式 | 0: OFF,width属性不生效,WCK占空比固定为50% 1: ON ,WCK宽度为(width+1)*bclk |
i2s-tdm-ws-width | 配置tdm WCK的宽度 | 0~31 (width = value + 1) |
i2s-tdm-ws-inv | I2S wck翻转 | 0: 不翻转 1: 翻转 |
i2s-tdm-bck-inv | I2S bck翻转 | 0: 不翻转 1: 翻转 |
i2s-tdm-ch-swap | 配置rx i2s通道交换 | <0 0 0 0> <0 1 0 0> <1 0 0 0> <1 1 0 0> |
i2s-short-ff-mode | short FF 模式 | 0: 关闭 1: 开启 |
i2s-tx-soundbar-mode | 配置Soundbar模式 | 1:打开 2:关闭,打开时I2S数据会从SDO0/½/3同时输出音频数据 |
i2s-tx-tx-mode | I2S内部时钟反转 | 0: 关闭 1: 开启 |
i2s-tx-tdm-active-slot | 配置I2S tx 有效通道 | 0x0000 ~ 0xFFFF (bit0->slot0, bit1->slot1, ... ) |
debug-level | 控制打印等级 | 0x00000001 : debug fot test 0x00000002 : 打印dma LOG信息 0x00000004 : 打印模拟部分信息 0x00000008 : 打印I2S信息 0x00000010 : 打印DMIC信息 0x00000020 : 打印中断信息 0x00000040 : 打印延时 0x00000080 : 打印attach路径信息 0x00000100 : 打印电源信息 0x00000200 : 打印Clock信息 0x00000400 : 打印pcm数据 0x00000800 : 打印SPDIF信息 |
1.6.2.2 RTOS SYS
{chipName}_xxx.sys
文件是用于描述外设硬件属性的文件,外设节点中包含的属性值可用于外设的配置,类似Linux的设备树,该文件位于sc/driver/sysdriver/sysdesc/hal/{chipName}/pub
, audio相关为sound
:
<sound> [compatible_str] "sstar,audio"; [interrupts_u8] INT_IRQ_BACH; [camclk_u16] CAMCLK_upll_480m, CAMCLK_bachpll_384m, CAMCLK_aupll_384m; [amp_gpio_u16] PAD_PM_GPIO0, 1, PAD_UNKNOWN, 1, PAD_PM_GPIO0, 1; [debug_level_u32] 0x0000; [i2s_tx0_tdm_active_slot_u32] 0xffff; [i2s_tx1_tdm_active_slot_u32] 0xffff; [i2s_tx2_tdm_active_slot_u32] 0xffff;
2.立即开始
加入Comake开发者社区
主页地址: CoMake开发者社区
SDK下载: CoMake开发者社区
文档中心: CoMake开发者社区
马上购买 : 首页-Comake开发者社区商店