ADSP21489之CCES开发笔记(一)

2148X系列简介
ADSP-2148x SHARC®处理器属于SIMD SHARC系列DSP,
采用ADI公司的Super Harvard架构。该系列处理器与ADSP
-2126x、ADSP-2136x、ADSP-2137x、ADSP-2146x、ADSP
-2147x、ADSP-2116x DSP以及SISD(单指令、单数据)模式的
第一代ADSP-2106x SHARC处理器源代码兼容。ADSP-2148x
处理器为32/40位浮点处理器,针对高性能音频应用进行了
优化,具有大容量片内SRAM,多条内部总线可消除I/O瓶
颈,并且提供创新的数字应用接口(DAI)。
在这里插入图片描述
SHARC内核框图
在这里插入图片描述

一、信号路由单元(SRU)路由
可配置数据、时钟和帧同步输入、输出;其来源包括SPORT、外部引
脚、精密时钟发生器(PCG)、DAI、DPI等,并受SRU控制寄存器的控

二、精密始终发生器(PCG)
由4个单元组成,每个单元均能从一个时钟输入信号产生一对信号(时钟和帧同步)。单元A、B、C、D功能完全相同,彼此独立工作。各单元产生的两个信号一般用作串行位时钟/帧同步对。PCG A和B的输出可以通过DAI引脚路由,PCG C和D的输出可以驱动到DAI和DPI引脚。

三、串行端口(SPORT)
ADSP-2148x具有8个同步串行端口,通过这些端口,处理
器可以低成本地连接到各种数字和混合信号外设,如ADI公司的AD183x系列音频编码器、ADC和DAC。这些串行端口由2条数据线、1条时钟线和1条帧同步线组成。数据线可以编程为发送或接收数据,各数据线有一个专用DMA通道。所有8个SPORT均使能时,最多可以支持16个发送或16个
接收DMA音频数据通道,或者支持每帧128信道的4个全双
工TDM流。
串行端口数据可以通过专用DMA通道自动写入和读取片内
存储器/外部存储器。每个串行端口都可以与另一个串行端
口合作以提供TDM支持。一个SPORT提供两个发送信号,
另一个SPORT提供两个接收信号。帧同步和时钟共享。
串行端口有五种工作模式:
• 标准串行模式
• 多通道(TDM)模式
• I2S模式
• 包装I2S模式
• 左对齐模式

四、数字外设接口(DPI)
ADSP-2148x SHARC处理器具有一个数字外设接口,通过
它可以连接到2个串行外设接口端口(SPI)、1个通用异步接
收器-发送器(UART)、12个标志、1个双线式接口(TWI)、3
个PWM模块(PWM3–1)和2个通用定时器。

五、数字应用接口(DAI)
通过数字应用接口(DAI),各种外设可以连接到任意DAI引
脚(DAI_P20–1)。程序利用信号路由单元(SRU)实现这些连接。
SRU是一个矩阵路由单元(或一组多路复用器),支持DAI提
供的外设在软件控制下互连。因此,与非可配置信号路径
支持的算法集相比,它可以使用更大的算法集,使得更广
泛的应用可以轻松使用DAI相关外设。
DAI包括8个串行端口、4个精密时钟发生器(PCG)、1个
S/PDIF收发器、4个ASRC和1个输入数据端口(IDP)。IDP为
SHARC内核提供额外的输入路径,可配置为8通道的串行
数据或单个20位宽同步并行数据采集端口。每个数据通道
都有自己的DMA通道,它独立于处理器的串行端口。

六、串行外设(兼容)接口(SPI)
SPI是工业标志同步串行链路,支持SPI兼容端口与其它SPI
兼容器件通信。SPI由两个数据引脚组成,一个是器件选
择引脚,一个是时钟引脚。它是一个全双工同步串行接
口,支持主器件和从器件模式。SPI端口可以在多主器件
环境下工作,最多可以与4个其它SPI兼容器件接口;既可
用作主器件,也可用作从器件。SPI兼容外设实现还提供
可编程的波特率和时钟相位/极性。SPI兼容端口利用开漏
驱动器来支持多主器件配置,避免数据竞争。

七、UART端口
处理器提供一个全双工通用异步接收器/发送器(UART)端
口,它与PC标准UART完全兼容。UART端口提供一个简
化的UART接口用于连接其它外设或主机,支持全双工、
DMA、异步串行数据传输。UART使用9位地址检测,具
有多处理器通信能力。因此,它可以用在符合RS-485数据
接口标准的多分支网络中。UART端口还支持5到8个数据
位、1或2个停止位以及无/偶/奇校验。

八、UART设计示例:寄存器详情可查阅ADSP-214xx_hwr_rev1.1文档

1、通过SRU配置DPI,确认输入、输出引脚与UART的路由,如

在这里插入图片描述
2、配置UART0LCR寄存器,使能UARTDLAB位用于可修改波特率,即能访问 UART0DLL和 UART0DLH。
在这里插入图片描述
3、配置UART0DLL和 UART0DLH即表示divisor分频值,UART0DLL存放低位16bit, UART0DLH存放高位16bit;分频值计算公式:时钟频率÷(16*波特率);如波特率256000,时钟频率175M即计算出divisor为42(0x2A);
*pUART0DLL = 0x2A;
*pUART0DLH = 0x00;
4、配置UART0LCR即配置数据位、校验位、停止位;
5、配置UART0RXCTL接收控制使能位。
6、配置UART0TXCTL发送控制使能位。
以上1完成输入、输出引脚配置,2~6完成波特率、数据位、停止位、校验位和UART发送接收使能控制。
7、配置UART0接收中断,如 P13
*pPICR2 &= ~(0x3E0);
*pPICR2 |= (0x13<<5);
*pUART0LCR=0;
*pUART0IER = UARTRBFIE;//中断使能 adi_int_InstallHandler(ADI_CID_P13I,UARTisr,0,true);
8、定义UARTisr接收逻辑接口,Uart0接收数据时中断触发调用该函数。
void UARTisr(void)
{
int value = *pUART0RBR;
while ((*pUART0LSR & UARTTHRE) == 0)
{;
}
queue_en_rx(value);// 将接收数据存放到接收buf中
while ((*pUART0LSR & UARTTEMT) == 0)
{;
}
}

9、定义Uart0发送PutChar逻辑接口
int PutChar(const char cVal)
{
int nStatus = 0;
unsigned int count = 0;
int i=0;
do
{
for(;i<6;i++) asm(“nop;”);
if( (*pUART0LSR & UARTTHRE) )
{
*pUART0THR = cVal;
nStatus = 1;
break;
}
count++;
} while( count < 0x100000 );
return nStatus;
}

参考文档:ADSP-2148x-datasheet、ADSP-214xx_hwr_rev1.1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值