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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是ADSP21489核心定时器中断的CCES代码示例: ``` #include <stdio.h> #include <adi_int.h> #include <sys/platform.h> #include <cdefBF561.h> // 定义中断向量号和优先级 #define TIMER0_IVG 5 #define TIMER0_PRIORITY 10 // 定义定时器参数 #define TIMER_PERIOD 1000 // 定时器周期,单位为微秒 #define TIMER_COUNT (TIMER_PERIOD * 200) // 定义中断处理函数 void Timer0_ISR(void *pArg) { // 清除中断标志 *pTCNTL &= ~BITM_TCTL_OVF; // 处理中断事件 printf("Timer0 ISR triggered\n"); } int main(int argc, char *argv[]) { // 初始化定时器 *pTCNTL = BITM_TCTL_CLK | BITM_TCTL_EN | BITM_TCTL_PRE(0); // 选择时钟源,并启用定时器 *pTPERIOD = TIMER_COUNT; // 设置定时器计数器的上限 // 注册中断处理函数 adi_int_InstallHandler(TIMER0_IVG, Timer0_ISR, NULL, true); // 配置中断优先级 adi_int_SetPriority(TIMER0_IVG, TIMER0_PRIORITY); // 启用定时器中断 *pTCTL |= BITM_TCTL_OVF_IEN; // 等待定时器中断 while(1); return 0; } ``` 在这个例子中,我们使用ADSP21489核心定时器来实现一个简单的定时器中断功能。首先,我们定义了一个中断向量号和优先级,然后定义了定时器的周期和计数器上限。接着,我们实现了一个中断处理函数,用于处理定时器中断事件。在主函数中,我们初始化了定时器,并注册了中断处理函数。然后,我们配置了中断优先级并启用了定时器中断。最后,我们使用一个无限循环语句来保持程序一直运行,直到定时器中断触发。当定时器中断触发时,中断处理函数将被调用,并输出一条消息。 注意,此示例仅用于说明如何使用ADSP21489核心定时器中断。在实际应用中,您需要根据自己的需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值