(1)初识TMS320C5410
第一讲 初识TMS320C5410
潮风工作室 吴宏伟 2012.11.10
本人今年大四,学校开设了DSP的课程,于是开始跨入DSP领域,学校配的设备是北京百科融创的实验箱RC-DSP-II+,里面即有C2000系列的TMS320LF2407,主要用在控制方面;也有TMS320C5410,主要用在音频处理和通讯。结合自身的兴趣爱好,于是决定学习C5000系列。
这里的DSP是Digital Signal Processor数字信号处理器,它可以算是功能超强的单片机,然而学习起来却十分复杂,本人虽有较强的单片机功底,刚开始学的时候也是云里雾里,加之无导师指导,学习之路可谓十分艰苦,于是在图书馆借了N多书,看了网上的N多教程,摸爬滚打两个月之后,才渐渐有了些小领悟。
学习之前肯定要对芯片有一定的了解,可以网上介绍文章都是泛泛而谈,很少谈到重点,下面是我自己对这块芯片(TMS320C5410)的认识:
(1) 16位定点DSP芯片,总线结构为改进的哈佛结构,内部有1个17X17位的乘法器;
(2) 外接晶振最大为40MHz,通过PLL倍频最高主频为160MHz;
(3) 片内ROM大小为16K×16bit , DARAM大小为8K×16bit, SARAM大小为56K×16bit;
(4) 3组多通道缓冲串行口(McBSP),DMA,主机接口HPI
(5) 通用IO引脚(BIO与XF),外部中断引脚INT0,INT1,INT2,INT3与NMI
有了以上基础知识,我们就可以来做我们的第一个实验:利用通用IO引脚XF来控制LED灯的亮与灭。拿到一块开发板,一般DSP的XF引脚都会连接一个LED灯,方便我们程序调试时用作指示灯,我们查看原理图,就可以看到类似如下的图:
图1.XF引脚与LED灯相连
那么,我们只要把XF引脚电平置0,即可点亮LED灯;置1即可熄灭LED灯。那怎么控制它呢?查看芯片的参考手册[ TMS320C54x DSP参考1(CPU and Peripherals) ],可以看到有这么一段:
图2. XF引脚的说明
大致意思是XF是状态寄存器ST1中的一位,而我们可以用SSBX指令来将XF置1,RSBX指令将XF清0。
下面就来建我们的第一个工程吧,我们的开发环境为CCS2.20,仿真器为XDS510,目标板为TMS320C5410,新建工程名为“1-LED_Control",并新建一个文件“main.c”,编写代码如下:
/** @file main.c * @brief 利用XF引脚控制LED灯 * * @author 潮风工作室 吴宏伟 * @date 2012-11-10 */ void delay(unsigned int n) { while(n--); } void main() { int i; while(1) { asm(" RSBX XF"); for(i=0;i<10;i++)delay(60000); asm(" SSBX XF"); for(i=0;i<10;i++)delay(60000); } }
写好之后,连同“vector.asm"(即中断向量表),"5410.cmd" (存储器配置文件),"rts.lib"(C语言运行时库)文件一直添加到工程中去,编译,下载,运行,即可看到开发板上的LED开始一闪一闪的效果。置于中断向量表的编写与存储器如何配置,我将在第二讲详细介绍。
图3.总体工程图
图4.效果图1(灯亮)
图5.效果图2(灯灭)
参考资料:
1.TMS320C54x DSP 参考1(CPU and Peripherals).pdf
2.TMS320VC5410 Fixed-Point DSP (Rev. E).PDF
工程文件:1-LED_Control.zip