搜索
您的当前位置:首页正文

DSP期末考试题目修订版.V1.2

来源:二三娱乐
1.2812芯片定点32位。

2.2000系列用于自动化的原因功能比较强。

3.2812 IO口供电电压3.3V,内核供电电压1.8V或1.9V

4.2812 编译时.CMD是什么文件,.out是什么文件.obj是什么文件? .CMD是链接命令文件,.out是最终可执行文件,.obj是目标文件。

5.2812 3个通用定时器是多少位,DSP采用段的概念,各个段的都有什么意思?32位;已初始化的断:包含真实的指令跟数据,存放在程序存储空间;未初始化的段:包含变量的地址空间,存放在数据存储空间。

6.2812 时钟150M时,低速、高速外设时钟是多少M?低速37.5M,高速75M 7.DSP总线结构是什么样子? 改进型哈弗结构

8.2812 CPU的中断有可屏蔽中断和不可屏蔽中断,分别是哪些?

可屏蔽中断:INT1~INT14 14个通用中断;DLOGINT数据标志中断;RTOSINT实时操作系统中断。

不可屏蔽中断:软件中断(INTR指令和TRAP指令);硬件中断NMI,非法指令陷阱;硬件复位中断;用户自定义中断。

9.2812实际寻址空间是多少? 00000~3FFFF(4M)

10.2812 1个事件管理器能产生8路PWM波。注意老师多半出的2个事件管理器16路

11.DSP有3组数据总线,分别是什么?程序数据总线、数据读数据总线、数据写数据总线。 12.ADC模块有多少组采样通道? 8*2=16路 13.SCI和SPI口哪一个需要设置波特率?SCI

14.把目标文件下载到实验板怎么操作?File→load program 15.CAN通讯的最大带宽是多少? 1M

16.加上看门狗,2812cpu定时器一共有多少个?3个通用定时器,4个事件管理定时器,1个看门狗,总共8个。

17.2812DSP流水线深度为8。

18.TI公司生产的最牛dsp是667x有8个核,320G mac /s。注:mac是乘法累加G=109 19.2812AD满量程转换时,转换寄存器的值是多少?0xFFF0

20.2812CPU最小系统:主芯片,电源模块,时钟电路,复位电路,JTAG。 21.DSP生产厂家是TI公司,ADI公司,飞思卡尔公司。 22.TI公司的DSP芯片类型有C2000,C5000,C6000。系列

23.DSP工程开发,需要编写4个文件:头文件,库文件,源文件,CMD链接文件。

24.2812有2个事件管理器EVA、EVB,每一个事件管理器包含哪几个功能?通用定时器;比较单元;捕获单元;正交编码电路。

25.2812通用定时器计数周期怎么算?T=(TDDRH:TDDR+1)*(PRDH:PRD+1) /150 μs 26.2812在什么情况下工作于微处理器模式?MP/MC=1

27.2812中断系统有一部分挂在PIE上面,这些都属于可屏蔽中断,那么能够响应中断的条件是什么? INTM置0响应总中断,其他的置1响应。(INTM=0,IFR=1,IER=1,PIEIFR=1,PIEIER=1,PIEACR=1)

28.2812在进行引导时第一条程序在什么位置?0x3FFFC0 注:就是程序运行的起始地址, 2^20byte=1M

29.2812AD转换器的输入电压0~3V。

————

————

————

30.2812片内flash有128k*16位。

31.2812的OTP模块是可编程模块可以多次擦写吗?不可以,是一次擦写。 32.2812 ROM是不可编程的,flash是可以多次擦写的。

33.2812的供电电压?当时钟频率为135MHz时,内核电压1.8V;时钟频率为150MHz时,内核电压1.9V。

34.memory sections是CMD文件里面的。这2个意思是通过memory伪指令来指示存储空间,通过sections伪指令来分配到存储空间。

35.PIE支持多少个外部中断,实际上使用了多少个?最大支持96个,实际使用45个,其他都保留。

36.看门狗是干什么的?通过软件,给看门狗计数器的密钥周期性的写明哪两个数?为DSP的运行情况进行“把脉”,如果发现程序跑飞或者状态不正常,便立即使DSP复位,提高系统的可靠性,密钥周期性写明0x55,0xAA。

37.SPI口和SCI口是干嘛的?SPI是串行外设接口,是一种高速的,全双工,同步的通信总线。SCI是相对于并行通信的,是串行通信技术的一种总称。SCI口可以设计成rs232接口,也可以设计成rs485接口?对

38.2812有多少个通用IO口?56个 39.2812的乘法器是多少位?32位 40.6000系列更适合处理图像。

41.2812下载的程序是在(片内RAM)跑。

42.CCS用什么命令打开什么窗口显示存储器的数据?view-memory 43.2812的AD的最高的采样速率是多少?12.5M

44.2812有4种工作模式:正常模式;空闲模式;待机模式;暂停模式。最省电的是?暂停模式

45.2812的DSP用多少个字节的地址空间用于存放中断服务程序的地址?4字节 46.CAN的抗通讯距离可以达到多远?10KM

47.CMD文件下面有memory sections,其中memory下面的括号要写什么?PAGE0(程序空间),PAGE1(数据空间)

48.CCS建立工程到下载程序分成哪三步?新建工程→添加源文件、库文件、CMD链接文件→编译

49.2812的DSP可以实现倍频或者分频的是什么?PLL(锁相环)最大倍频系数5

50.2812一个周期内能算多少位的乘法?16x16位能算几个,32x32位能算几个?32位;2个;1个。

51.2812的RAM多大?18K*16位

52.使用厂家的bootloader进行引导时MP/MC应该怎么设置?MP/MC=0

53.SCI口是串口时,地址是什么?0x00007050~0x0000705F,0x00007750~0x0000775F 54.2812的高速外部时钟是不是一定比低速外部时钟快?不一定 55.2812的中断向量的地址是不是不能改变?不是,能改变

56.DSP在编程时流水线是有冲突的。如,下一条指令在用上一条指令的结果时,上一条指令还没有计算完,这就引起了流水线冲突,必须打断。C语言写程序时有流水线冲突吗?C语言写的程序没有流水线冲突,汇编写程序时有流水线冲突。

57.DSP比51快,为什么?因为DSP有改进型哈弗结构,多路数据总线,指令流水线,地址发生器,硬件的乘法器,零开销循环。

————

第一个实验

1.系统初始化函数

*文件名:DSP28_SysCtrl.c

*功 能:对2812的系统控制模块进行初始化 #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;

GpioMuxRegs.GPFMUX.bit.XF_GPIOF14=0; //设置XF引脚为通用数字I/O口 GpioMuxRegs.GPFDIR.bit.GPIOF14=1; //设置XF引脚为输出口 EDIS; }

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; IER=0x0000; //禁止CPU中断 IFR=0x0000; //清除CPU中断标志 InitPieCtrl(); //初始化PIE控制寄存器 InitPieVectTable(); //初始化PIE中断向量表 InitGpio(); //初始化GPIO口 while(1) { GpioDataRegs.GPFCLEAR.bit.GPIOF14=1; //XF引脚输出低电平,D1灯亮 for(kk=0; kk<100; kk++) delay_loop(); //延迟保持 GpioDataRegs.GPFSET.bit.GPIOF14=1; //XF引脚输出高电平,D1灯灭 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 :

PRAMH0 : origin = 0x3f8000, length = 0x001000 PAGE 1 :

/* SARAM */

RAMM0 : origin = 0x000000, length = 0x000400 RAMM1 : origin = 0x000400, length = 0x000400 /* 外设帧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 /* 外设帧 2: */

SYSTEM : origin = 0x007010, length = 0x000020 SPI_A : origin = 0x007040, length = 0x000010 SCI_A : origin = 0x007050, length = 0x000010 XINTRUPT : origin = 0x007070, length = 0x000010 GPIOMUX : origin = 0x0070C0, length = 0x000020 GPIODAT : origin = 0x0070E0, length = 0x000020 ADC : origin = 0x007100, length = 0x000020 EV_A : origin = 0x007400, length = 0x000040 EV_B : origin = 0x007500, length = 0x000040 SPI_B : origin = 0x007740, length = 0x000010 SCI_B : origin = 0x007750, length = 0x000010 MCBSP_A : origin = 0x007800, length = 0x000040 /* 代码安全模块密码区所在位置 */

CSM_PWL : origin = 0x3F7FF8, length = 0x000008 /* SARAM */

DRAMH0 : origin = 0x3f9000, length = 0x001000 }

SECTIONS

{

/* 存放程序: */

.reset : > PRAMH0, PAGE = 0 .text : > PRAMH0, PAGE = 0 .cinit : > PRAMH0, PAGE = 0 /* 存放数据区: */

.stack : > RAMM1, PAGE = 1 .bss : > DRAMH0, PAGE = 1 .ebss : > DRAMH0, PAGE = 1 .const : > DRAMH0, PAGE = 1

.econst : > DRAMH0, PAGE = 1 .sysmem : > DRAMH0, PAGE = 1 /* 存放外设0相关寄存器的结构: */

DevEmuRegsFile : > DEV_EMU, PAGE = 1 FlashRegsFile : > FLASH_REGS, PAGE = 1 CsmRegsFile : > CSM, PAGE = 1 XintfRegsFile : > XINTF, PAGE = 1

CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1 CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1 CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1 PieCtrlRegsFile : > PIE_CTRL, PAGE = 1 PieVectTable : > PIE_VECT, PAGE = 1 /* 存放外设2相关寄存器的结构: */

ECanaRegsFile : > ECAN_A, PAGE = 1 ECanaMboxesFile : > ECAN_AMBOX PAGE = 1 /* 存放外设1相关寄存器的结构: */

SysCtrlRegsFile : > SYSTEM, PAGE = 1 SpiaRegsFile : > SPI_A, PAGE = 1 SciaRegsFile : > SCI_A, PAGE = 1 XIntruptRegsFile : > XINTRUPT, PAGE = 1 GpioMuxRegsFile : > GPIOMUX, PAGE = 1 GpioDataRegsFile : > GPIODAT PAGE = 1 AdcRegsFile : > ADC, PAGE = 1 EvaRegsFile : > EV_A, PAGE = 1 EvbRegsFile : > EV_B, PAGE = 1 ScibRegsFile : > SCI_B, PAGE = 1 McbspaRegsFile : > MCBSP_A, PAGE = 1 /* 代码安全模块密码区所在的位置 */

CsmPwlFile : > CSM_PWL, PAGE = 1 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top