DSP期末考试题目
gs.GPFMUX.bit.XF_GPIOF14=0; GpioMuxRegs.GPFDIR.bit.GPIOF14=1; EDIS; }
//设置 XF 引脚为通用数字 I/O 口 //设置 XF 引脚为输出口
3.主函数 *文件名:GpioLed.c *功 能:使用 XF 引脚作为通用的 I/O 口来控制 LED 灯的闪烁 #include "DSP28_Device.h" #include "DSP28_Globalprototypes.h" void delay_loop(); //延时函数 *名 称:main() *功 能:通过引脚 XF_XPLLDIS 作为 I/O 口来控制 LED 灯的亮和灭 void main() { int kk=0; InitSysCtrl(); DINT; //初始化系统函数
PRAMH0 PAGE 1 : /* SARAM RAMM0 RAMM1
: origin = 0x3f8000, length = 0x001000 */ : origin = 0x000000, length = 0x000400 : origin = 0x000400, length = 0x000400
#include "DSP28_Device.h" *名 称:InitSysCtrl() *功 能:该函数对 2812 的系统控制寄存器进行初始化 void InitSysCtrl(void) { Uint16 i; EALLOW; // 对于 TMX 产品,为了能够使得片内 RAM 模块 M0/M1/L0/L1LH0 能够获得最好的性能,控 制寄存器的位 // 必须使能,这些位在设备硬件仿真寄存器内。TMX 是 TI 的试验型产品 DevEmuRegs.M0RAMDFT = 0x0300; DevEmuRegs.M1RAMDFT = 0x0300; DevEmuRegs.L0RAMDFT = 0x0300; DevEmuRegs.L1RAMDFT = 0x0300; DevEmuRegs.H0RAMDFT = 0x0300; // 禁止看门狗模块 SysCtrlRegs.WDCR= 0x0068; // 初始化 PLL 模块 SysCtrlRegs.PLLCR = 0xA; //如果外部晶振为 30M,则 SYSCLKOUT=30*10/2=150MHz // 延时,使得 PLL 模块能够完成初始化操作 for(i= 0; i< 5000; i++){} // 高速时钟预定标器和低速时钟预定标器,产生高速外设时钟 HSPCLK 和低速外设时钟 LSPCLK SysCtrlRegs.HISPCP.all = 0x0001; // HSPCLK=150/2=75MHz SysCtrlRegs.LOSPCP.all = 0x0002; // LSPCLK=150/4=37.5MHz // 对工程中使用到的外设进行时钟使能 // SysCtrlRegs.PCLKCR.bit.EVAENCLK=1; // SysCtrlRegs.PCLKCR.bit.EVBENCLK=1; // SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1; // SysCtrlRegs.PCLKCR.bit.SCIENCLKB=1; EDIS; } 2.GPIO 初始化函数 *文件名:DSP28_Gpio.c *功 能:2812 通用输入输出口 GPIO 的初始化函数 #include "DSP28_Device.h" *名 *功 称:InitGpio() 能:初始化 Gpio,使得 Gpio 的引脚处于已知的状态,例如确定其功能是特定功能 还是通用 I/O。如果是通用 I/O,是输入还是输出,等等。 void InitGpio(void) { EALLOW;
/* 外设帧 0: */ DEV_EMU : origin = 0x000880, length = 0x000180 FLASH_REGS : origin = 0x000A80, length = 0x000060 CSM : origin = 0x000AE0, length = 0x000010 XINTF : origin = 0x000B20, length = 0x000020 CPU_TIMER0 : origin = 0x000C00, length = 0x000008 CPU_TIMER1 : origin = 0x000C08, length = 0x000008 CPU_TIMER2 : origin = 0x000C10, length = 0x000008 PIE_CTRL : origin = 0x000CE0, length = 0x000020 PIE_VECT : origin = 0x000D00, length = 0x000100 /* 外设帧 1: */ ECAN_A : origin = 0x006000, length = 0x000100 ECAN_AMBOX : origin = 0x006100, length = 0x000100 /* 外设帧 SYSTEM SPI_A SCI_A XINTRUPT GPIOMUX GPIODAT ADC EV_A EV_B SPI_B SCI_B MCBSP_A 2: */ : origin = 0x007010, length = 0x000020 : origin = 0x007040, length = 0x000010 : origin = 0x007050, length = 0x000010 : origin = 0x007070, length = 0x000010 : origin = 0x0070C0, length = 0x000020 : origin = 0x0070E0, length = 0x000020 : origin = 0x007100, length = 0x000020 : origin = 0x007400, length = 0x000040 : origin = 0x007500, length = 0x000040 : origin = 0x007740, length = 0x000010 : origin = 0x007750, length = 0x000010 : origin = 0x007800, length = 0x000040
IER=0x0000; //禁止 CPU 中断 IFR=0x0000; //清除 CPU 中断标志 InitPieCtrl(); //初始化 PIE 控制寄存器 InitPieVectTable(); //初始化 PIE 中断向量表 InitGpio(); //初始化 GPIO 口 while(1) { GpioDataRegs.GPFCLEAR.bit.GPIOF14=1; for(kk=0; kk<100; kk++) delay_loop(); GpioDataRegs.GPFSET.bit.GPIOF14=1; for(kk=0; kk<100; kk++) delay_loop(); } } *名 称:delay_loop() *功 能:延时函数,使得 LED 灯点亮或者熄灭的状态保持一定的时间 void delay_loop() { short i; for(i=0; i<30000; i++) {} } CMD 文件 MEMORY { PAGE 0 : //XF 引脚输出低电平,D1 灯亮 //延迟保持 //XF 引脚输出高电平,D1 灯灭 //延迟保持
2812 ROM 是不可编程的,flash 是可以多次擦写的。 2812 的供电电压?当时钟频率为 135MHz 时,内核电压 1.8V ;时钟频率为 150MHz 时,内 核电压 1.9V。 memory sections 是 CMD 文件里面的。这 2 个意思是通过 memory 伪指令来指示存储空间, 通过 sections 伪指令来分配到存储空间。 PIE 支持多少个外部中断,实际上使用了多少个?最大支持 96 个,实际使用 45 个,其他都 保留。 看门狗是干什么的?通过软件,给看门狗计数器的密钥周期性的写明哪两个数?为 DSP 的 运行情况进行“把脉” ,如果发现程序跑飞或者状态不正常,便立即使 DSP 复位,提高系统 的可靠性,密钥周期性写明 0x55,0xAA。 SPI 口和 SCI 口是干嘛的?SPI 是串行外设接口,是一种高速的,全双工,同步的通信总线。 SCI 是相对于并行通信的,是串行通信技术的一种总称。SCI 口可以设计成 rs232 接口,也可 以设计成 rs485 接口?对 2812 有多少个通用 IO 口?56 个 2812 的乘法器是多少位?32 位 6000 系列更适合处理图像。 2812 下载的程序是在片外 flash 跑。 片内 RAM 18K*16 位 CCS 用什么命令打开什么窗口显示存储器的数据?view-memory 2812 的 AD 的最高的采样速率是多少?12.5M 2812 有 4 种工作模式:正常模式;空闲模式;待机模式;暂停模式。最省电的是?暂停模 式 2812 的 DSP 用多少个字节的地址空间用于存放中断服务程序的地址?4 字节 CAN 的抗通讯距离可以达到多远?10KM CMD 文件下面有 memory sections, 其中 memory 下面的括号要写什么?PAGE0 (程序空间) , PAGE1(数据空间) CCS 建立工程到下载程序分成哪三步?新建工程→添加源文件、 库文件、 CMD 链接文件→编 译 2812 的 DSP 可以实现倍频或者分频的是什么?PLL(锁相环)最大倍频系数 5 2812 一个周期内能算多少位的乘法?16x16 位能算几个,32x32 位能算几个?32 位;2 个; 1 个。 2812 的 RAM 多大?18K*16 位 使用厂家的 bootloader 进行引导时 MP/MC 应该怎么设置?MP/=0 SCI 口是串口时,地址是什么?0x00007050~0x0000705F,0x00007750~0x0000775F 2812 的高速外部时钟是不是一定比低速外部时钟快?不一定 2812 的中断向量的地址是不是不能改变?不是,能改变 DSP 在编程时流水线是有冲突的。如,下一条指令在用上一条指令的结果时,上一条指令还 没有计算完,这就引起了流水线冲突,必须打断。C 语言写程序时有流水线冲突吗?C 语言 写的程序没有流水线冲突,汇编写程序时有流水线冲突。 DSP 比 51 快,为什么?因为 DSP 有改进型哈弗结构,多路数据总线,指令流水线,地址发 生器,硬件的乘法器,零开销循环。 第一个实验 1.系统初始化函数 *文件名:DSP28_SysCtrl.c *功 能:对 2812 的系统控制模块进行初始化