1、DSP 最小系统设计报告一、系统设计原理本次设计采用 TI 公司生产的 DSP 芯片 TMS320F2812 和键盘扫描电路进行按键。TMS320F2812 系列 DSP(数字信号处理器)是 TI 公司最新推出的数字信号处理器,该系列处理器是基于 TMS320C2xx 内核的定点数字信号处理器。器件上集成了多种先进的外设,为电机及其他运动控制领域应用的实现提供了良好的平台。同时代码和指令与 F24x 系列数字信号处理器完全兼容,从而保证了项目或产品设计的可延续性。与 F24x 系列数字信号处理器相比,F2812 系列数字信号处理器提高了运算的精度(32 位)和系统的处理能力(达到 150MIP
2、S)。该系列数字信号处理器还集成了 128KB 的 Flash 存储器,4KB 的引导 ROM,数字运算表以及 2KB 的 OTP ROM,从而大大改善了应用的灵活性。两个事件管理器模块 EVA、EVB 为电机及功率变换控制提供了良好的控制功能。16 通道高性能 12位 ADC 单元提供了两个采样保持电路,可以实现双通道信号同步采样。TMS320F2812 系列 DSP 有以下特点:TMS320F2812 有 3 个独立的片选信号,并且读/写时序可编程,兼容不同速率的外设扩展;通过配置外部接口寄存器,TMS320F2812 在访问外部设备时不必额外增加延时等待,既提高了程序的实时性又减少了代码
3、量。TMS320F2812 是 TI 公司 2000 系列中功能最为强大的 DSP 芯片。它是一种32 位 DSP,片内有 128K 的 FLASH,18K 的 SRAM, DART. 56 个 I/0,12MAD+l6 路输入,指令处理速度高达 150MPIS。TMS320F2812 的时钟频率是 150MHz,即时钟周期是 6.67ns。有众多的外设接口,GPIO, SPI, SCIA, SCIB, McBSP, eCAN, SRAM. FLASH, EVA,EVB, ADC。这些外设模块使 TMS320F2812 很适用于控制领域。二、设计思路 最小系统加上外设电路,外设电路中包含 16
4、 盏 LED 灯和 2 个按键。通过按键来控制 LED 亮灯的左移和右移。三、最小系统电路模块 2.1 电源电路TMS320F2812 芯片工作时需要的电压有两个部分:+3.3V 的 Flash 电压和+1.8V 的内核电压。TMS320F2812 对电源很敏感,所以在此可以用电压精度比较搞得电源芯片 TPS767D301 或者 TPS767D319。TPS767D301 输入电压为+5V,芯片起震,正常工作之后,能够产生 3.3V 和 1.8V 两种电压工 DSP 使用。2.2 晶振电路DSP 的时钟使用内部振荡器,在 X1/XCLKIN 和 X2 两个引脚之间连接一个石英晶体。2.4 TM
5、S320F2812 四、外设电路 3.1 按键电路S1 按键接 GPIOB0,S2 按键接 GPIOB1。S1 亮灯右移,S2 亮灯左移。3.2 流水灯电路流水灯电路接 GPIOA。五、部分程序/*SRAM.cmd*/MEMORYPAGE 0 : PRAMH0 : origin = 0x3f8000, length = 0x001000 PAGE 1 : /* SARAM */ RAMM0 : origin = 0x000000, length = 0x000400RAMM1 : origin = 0x000400, length = 0x000400/* Peripheral Frame 0
6、: */DEV_EMU : origin = 0x000880, length = 0x000180FLASH_REGS : origin = 0x000A80, length = 0x000060CSM : origin = 0x000AE0, length = 0x000010XINTF : origin = 0x000B20, length = 0x000020CPU_TIMER0 : origin = 0x000C00, length = 0x000008CPU_TIMER1 : origin = 0x000C08, length = 0x000008 CPU_TIMER2 : ori
7、gin = 0x000C10, length = 0x000008 PIE_CTRL : origin = 0x000CE0, length = 0x000020PIE_VECT : origin = 0x000D00, length = 0x000100/* Peripheral Frame 1: */ECAN_A : origin = 0x006000, length = 0x000100ECAN_AMBOX : origin = 0x006100, length = 0x000100/* Peripheral Frame 2: */SYSTEM : origin = 0x007010,
8、length = 0x000020SPI_A : origin = 0x007040, length = 0x000010SCI_A : origin = 0x007050, length = 0x000010XINTRUPT : origin = 0x007070, length = 0x000010GPIOMUX : origin = 0x0070C0, length = 0x000020GPIODAT : origin = 0x0070E0, length = 0x000020ADC : origin = 0x007100, length = 0x000020EV_A : origin
9、= 0x007400, length = 0x000040EV_B : origin = 0x007500, length = 0x000040SPI_B : origin = 0x007740, length = 0x000010SCI_B : origin = 0x007750, length = 0x000010MCBSP_A : origin = 0x007800, length = 0x000040/* CSM Password Locations */CSM_PWL : origin = 0x3F7FF8, length = 0x000008/* SARAM */ DRAMH0 :
10、 origin = 0x3f9000, length = 0x001000 SECTIONS/* Allocate program areas: */.reset : PRAMH0, PAGE = 0.text : PRAMH0, PAGE = 0.cinit : PRAMH0, PAGE = 0/* Allocate data areas: */.stack : RAMM1, PAGE = 1.bss : DRAMH0, PAGE = 1.ebss : DRAMH0, PAGE = 1.const : DRAMH0, PAGE = 1.econst : DRAMH0, PAGE = 1 .s
11、ysmem : DRAMH0, PAGE = 1/* Allocate Peripheral Frame 0 Register Structures: */DevEmuRegsFile : DEV_EMU, PAGE = 1FlashRegsFile : FLASH_REGS, PAGE = 1CsmRegsFile : CSM, PAGE = 1XintfRegsFile : XINTF, PAGE = 1CpuTimer0RegsFile : CPU_TIMER0, PAGE = 1 CpuTimer1RegsFile : CPU_TIMER1, PAGE = 1 CpuTimer2Reg
12、sFile : CPU_TIMER2, PAGE = 1 PieCtrlRegsFile : PIE_CTRL, PAGE = 1 PieVectTable : PIE_VECT, PAGE = 1/* Allocate Peripheral Frame 2 Register Structures: */ECanaRegsFile : ECAN_A, PAGE = 1 ECanaMboxesFile : ECAN_AMBOX PAGE = 1/* Allocate Peripheral Frame 1 Register Structures: */SysCtrlRegsFile : SYSTE
13、M, PAGE = 1SpiaRegsFile : SPI_A, PAGE = 1SciaRegsFile : SCI_A, PAGE = 1XIntruptRegsFile : XINTRUPT, PAGE = 1GpioMuxRegsFile : GPIOMUX, PAGE = 1GpioDataRegsFile : GPIODAT PAGE = 1AdcRegsFile : ADC, PAGE = 1EvaRegsFile : EV_A, PAGE = 1EvbRegsFile : EV_B, PAGE = 1ScibRegsFile : SCI_B, PAGE = 1McbspaReg
14、sFile : MCBSP_A, PAGE = 1/* CSM Password Locations */CsmPwlFile : CSM_PWL, PAGE = 1/*文件名:DSP28_SysCtrl.c*功 能:对 2812 的系统控制模块进行初始化*/#include “DSP28_Device.h“/*名 称:InitSysCtrl()*功 能:该函数对 2812 的系统控制寄存器进行初始化*/void InitSysCtrl(void)Uint16 i;EALLOW;SysCtrlRegs.WDCR= 0x0068; / 禁止看门狗模块/ 初始化 PLL 模块,如果外部晶振为 30M,则 SYSCLKOUT=30*10/2=150MHzSysCtrlRegs.PLLCR = 0xA; for(i= 0; i1;GpioDataRegs.GPADAT.all=led;void delay(unsigned int t)while(t0)t-;