ADSP21489之CCES开发笔记(三)

34 篇文章 25 订阅
本文详细介绍了如何配置ADSP21489的音频系统,包括精密时钟发生器PCG的帧同步、控制寄存器和脉宽设置,信号路由单元SRU的音频输入输出配置,以及SPORT串行端口的I2S输入输出配置。通过精确的寄存器设置,实现了3.072MHz帧时钟和48kHz帧同步,为48kbps、24bit的I2S音频传输提供了基础支持。
摘要由CSDN通过智能技术生成

ADSP21489的音频输入输出驱动配置,涉及精密时钟发生器PCG、数字应用端口DAI、串行端口SPORT、信号路由单元SRU。

一、PCG提供寄存器有帧同步寄存器PCG_SYNCx,控制寄存器PCG_CTLAx,脉宽寄存器PCG_PW。
1、PCG_SYNCx可为PCGA\PCGB\PCGC\PCGD,One Shot 模式时,配置外部帧同步,高或低电平有效,本例配置为0.
*pPCG_SYNC2 = 0
*pPCG_SYNC1 = 0
2、PCG_CTLAx中FSxDIV的20Bit(0-19)位设置帧同步A/B/C/D的除数,0为bypass模式,>1为一般模式,FSxPHASE_HI(20-29)Bit位配置相位(值:FSxDIV/2),ENFSx帧同步使能,ENCLKx时钟使能,本例配置帧时钟位3.072MHz,不使能帧同步,不使能时钟。
unsigned int CLKA_DIVIDER = 8;
*pPCG_CTLD1 = CLKA_DIVIDER | ((CLKA_DIVIDER/2)<<20);
*pPCG_CTLD0 = ENFSA | ENCLKA | (FSA_DIVIDER);
3、PCG_PWx的脉冲宽度是帧同步的输入时钟周期数输出高,脉冲宽度应小于帧的除数同步,如果脉冲宽度控制寄存器(PCG_PW,PCG_PW2)重置为0,然后输入直接传递到帧同步根据INVFSA、INVFSB和INVFSC,PW和PCG_ PW2寄存器的INVFSC和INVFSD位,本例配置为0.
*pPCG_PW = 0;
*pPCG_PW2 = 0;
二、SRU信号路由单元,如PCG配置时钟来源脚,Sport的音频输入输出脚,而这些引脚都是DAI数字应用端口。
1、PCGD输出的帧时钟给到ADI01,位时钟给到ADI02, SRU配置如下
SRU (HIGH, PBEN01_I); //BCLK
SRU (HIGH, PBEN02_I); //LRCLK
SRU (PCG_CLKD_O, DAI_PB02_I);
SRU (PCG_FSD_O, DAI_PB01_I);
2、Sport3音频输入来源DAI03,DAI12,SRU配置(SPORT时钟来源PCG)如下
SRU (LOW, PBEN12_I); //tdm_tx0 output
SRU (LOW, PBEN03_I); //tdm_tx1 output
SRU (DAI_PB02_O, SPORT3_CLK_I);
SRU (DAI_PB01_O, SPORT3_FS_I);
SRU (DAI_PB12_O, SPORT3_DA_I);
SRU (DAI_PB03_O, SPORT3_DB_I);
3、Sport4音频输出到DAI16,DAI19,SRU配置(SPORT时钟来源PCG)如下
SRU (HIGH, PBEN16_I); //ch0 MIC output
SRU (HIGH, PBEN19_I); //ch1 MIC output
SRU (DAI_PB02_O, SPORT4_CLK_I);
SRU (DAI_PB01_O, SPORT4_FS_I);
SRU (SPORT4_DA_O, DAI_PB16_I);
SRU (SPORT4_DB_O, DAI_PB19_I);
以上一、二配置好时钟来源、音频输入输出路由等等。
三、 SPORT串行端口,8组。
SPORT3配置I2S输入:
*pSPCTL3 = 0 ;
*pSPMCTL3 = 0;
*pCPSP3A = ((unsigned int) TCB_Block_ADC1_I2S_In[0] + 3) & 0x7FFFF | (1<<19);
*pCPSP3B = ((unsigned int) TCB_Block_ADC2_I2S_In[0] + 3) & 0x7FFFF | (1<<19);
*pSPCTL3 = (OPMODE | SLEN24 | L_FIRST | SPEN_A | SCHEN_A | SDEN_A | SPEN_B | SCHEN_B | SDEN_B);
SPORT4配置I2S输出:
TCB_Block_DAC1_I2S_Out[0][0] = (int)TCB_Block_DAC_I2S_Out[1] + 3;
TCB_Block_DAC1_I2S_Out[0][1] = sizeof(Block_DAC_I2S_Out[0]);
TCB_Block_DAC1_I2S_Out[0][2] = 1;
TCB_Block_DAC1_I2S_Out[0][3] = (unsigned int)&Block_DAC_I2S_Out[0][0] - OFFSET ;
TCB_Block_DAC2_I2S_Out[1][0] = (int)TCB_Block_DAC_I2S_Out[0] + 3;
TCB_Block_DAC2_I2S_Out[1][1] = sizeof(Block_DAC_I2S_Out[1]);
TCB_Block_DAC2_I2S_Out[1][2] = 1;
TCB_Block_DAC2_I2S_Out[1][3] = (unsigned int)&Block_DAC_I2S_Out[1][0] - OFFSET ;
*pSPMCTL4= 0;
*pSPCTL4 = 0 ;
*pCPSP4A = ((unsigned int) TCB_Block_DAC1_I2S_Out[0] + 3) & 0x7FFFF | (1<<19);
*pCPSP4B = ((unsigned int) TCB_Block_DAC2_I2S_Out[0] + 3) & 0x7FFFF | (1<<19);
*pSPCTL4 = (SPTRAN | OPMODE | SLEN32 | L_FIRST | SPEN_A |SCHEN_A | SDEN_A | SPEN_B | SCHEN_B | SDEN_B);

注:以上举例相关如下
1、晶振24.576MHz,采样率48kbps,采样精度24bit,I2S格式音频传输,则21489芯片配置位时钟为3.072MHz,帧时钟为48kHz.
2、#include “def21489.h”
#include “Cdef21489.h”

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值