DSP期末考试题目
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PRAMH0 PAGE 1 : /* SARAM RAMM0 RAMM1
: origin = 0x3f8000, length = 0x001000 */ : origin = 0x000000, length = 0x000400 : origin = 0x000400, length = 0x000400
GpioMuxRegs.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; //初始化系统函数
1.2812 芯片定点 32 位。 2.2000 系列用于自动化的原因功能比较强。 2812 IO 口供电电压 3.3V,内核供电电压 1.8V 或 1.9V 2812 编译时.CMD 是什么文件, .out 是什么文件.obj 是什么文件? .CMD 是链接命令文件, .out 是最终可执行文件,.obj 是目标文件。 2812 3 个通用定时器是多少位,DSP 采用段的概念,各个段的都有什么意思?32 位;已初 始化的断:包含真实的指令跟数据,存放在程序存储空间;未初始化的段:包含变量的地址 空间,存放在数据存储空间。 2812 时钟 150M 时,低速、高速外设时钟是多少 M?低速 37.5M,高速 75M DSP 总线结构是什么样子? 改进型哈弗结构 2812 CPU 的中断有可屏蔽中断和不可屏蔽中断,分别是哪些? 可屏蔽中断:1~14 14 个通用中断;DLOGINT 数据标志中断;RTOSINT 实时操作系统中断。 不可屏蔽中断:软件中断(INTR 指令和 TRAP 指令) ;硬件中断,非法指令陷阱;硬件复位 中断;用户自定义中断。 2812 实际寻址空间是多少? 00000~3FFFF(4M) 2812 1 个事件管理器能产生 8 路 PWM 波。注意老师多半出的 2 个事件管理器 16 路 DSP 有 3 组数据总线,分别是什么?程序数据总线、数据读数据总线、数据写数据总线。 ADC 模块有多少组采样通道? 8*2=16 路 SCI 和 SPI 口哪一个需要设置波特率?SCI 把目标文件下载到实验板怎么操作?File→load program CAN 通讯的最大带宽是多少? 1M 加上看门狗,2812cpu 定时器一共有多少个?3 个通用定时器,4 个事件管理定时器,1 个看 门狗,总共 8 个。 2812DSP 流水线深度为 8。 TI 公司生产的最牛 dsp 是 667x 有 8 个核,320G mac /s。注:mac 是乘法累加 G=109 2812AD 满量程转换时,转换寄存器的值是多少?0xFFF0 2812CPU 最小系统:主芯片,电源模块,时钟电路,复位电路,JTAG。 DSP 生产厂家是 TI 公司,ADI 公司,飞思卡尔公司。 TI 公司的 DSP 芯片类型有 C2000,C5000,C6000。系列 DSP 工程开发,需要编写 4 个文件:头文件,库文件,源文件,CMD 链接文件。 2812 有 2 个事件管理器 EVA、EVB,每一个事件管理器包含哪几个功能?通用定时器;比较 单元;捕获单元;正交编码电路。 2812 通用定时器计数周期怎么算?T=(TDDRH:TDDR+1)*(PRDH:PRD+1) /150 μs 2812 在什么情况下工作于微处理器模式?MP/=1 2812 中断系统有一部分挂在 PIE 上面, 这些都属于可屏蔽中断, 那么能够响应中断的条件是 什么? INTM 置 0 响应总中断, 其他的置 1 响应。 (INTM=0, IFR=1, IER=1, PIEIFR=1, PIEIER=1, PIEACR=1) 2812 在进行引导时第一条程序在什么位置? 0x3FFFC0 注:就是程序运行的起始地址, 2^20byte=1M 2812AD 转换器的输入电压 0~3V。 2812 片内 flash 有 128k*16 位。 2812 的 OTP 模块是可编程模块可以多次擦写吗?不可以,是一次擦写。
/* 外设帧 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) { GpΒιβλιοθήκη BaiduoDataRegs.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 的系统控制模块进行初始化
#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;