|
C2000系列DSP之间串行数据通讯的软件实现
[复制链接]
软件设计
系统中TMS320C6711通过McBSP将图像处理结果采用主动发送的方式发送给TMS320LF2407,后者通过响应SCI中断的方式接收数据信息。
串行通讯初始化程序
TMS320C6711与TMS320LF2407进行串行通讯的软件设计难点是McBSP与SCI的初始化程序设计。初始化程序包括对芯片的管脚配置、通讯模式配置和中断配置等方面。以下分别给出TMS320C6711的McBSP模块和TMS320LF2407的SCI模块的初始化程序模块。
(1)TMS320C6711的McBSP模块初始化程序
void init_mcbsp0_master(void)
{
MCBSP_Config mcbspCfg0=
{
0x00010001,//配置spcr寄存器
0x000D0000,//配置rcr寄存器
0x00040020,//配置xcr寄存器
0x200000ef,//配置srgr寄存器,
//波特率设定为312.5kb/s
0x00000000,//配置mcr寄存器
0x00000000,//配置rcer寄存器
0x00000000,//配置xcer寄存器
0x00000b0c//配置pcr寄存器
};
hMcbsp0=MCBSP_open(MCBSP_DEV0, MCBSP_OPEN_RESET);
//选用port 0
MCBSP_config(hMcbsp0,&mcbspCfg0);
IRQ_map(IRQ_EVT_RINT0,13);//映射接收中断0为
//13号中断
IRQ_reset(IRQ_EVT_RINT0);
IRQ_enable(IRQ_EVT_RINT0);//开中断
MCBSP_enableRcv(hMcbsp0);
MCBSP_enableSrgr(hMcbsp0);//Handle to SRGR
MCBSP_enableFsync(hMcbsp0);
}
(2)TMS320LF2407的SCI模块初始化程序
void sci_INIT(void)
{
MCRA=MCRA|0x0003; //设置引脚SCITXD/IOPA0和
//SCIRXD/IOPA1为串行通讯功能
PADATDIR=0X0100; //设PA口为输入口
SCICTL1=0x13; //使能接收和发送
SCICTL2=0x02; //禁止发送中断,使能接收中断
SCICCR=0X07; //8位字长,1个停止位,空闲线多处
//理器模式,无奇偶校验
SCIHBAUD=0x00; //波特率设为312.5kb/s
SCILBAUD=0x09;
SCIPRI=0x00; //接收为高优先级中断
SCIRXST=SCIRXST&0xbf;//清除SCI接收中断标志
SCICTL1=0x33; //保存设置
}
利用TMS320C6711的McBSP和TMS320LF2407的SCI可以实现异步串行数据通讯,具有电路简单、设置灵活、数据传输速度快、性能可靠稳定等特点。在此基础上可成功构建主从式双DSP数据处理系统,有效解决单一DSP系统数据处理能力与控制能力难以兼顾的问题。本文所介绍的设计方案已在实际应用系统中采用,并经长时间运行检验。实践证明,此设计方案是一种有效的多DSP数据交换手段。
|
|