系统应包括抗混叠滤波器、数据采集 A/D 转换器、数字信号处理器 DSP、 D/A 转换器和低通滤波器等。 DSP 系统的工作过程: ①将输入信号 x(t)经过抗混叠滤波,滤掉高于折叠频率的分量,以防止信号频谱的混叠。 ②经过采样和 A/D 转换器,将滤波后的信号转换为数字信号 x(n)。 ③数字信号处理器对 x(n)进行处理,得数字信号 y(n)。 ④经 D/A 转换器,将 y(n)转换成模拟信号; ⑤经低通滤波器,滤除高频分量,得到平滑的模拟信号 y(t)。 输 抗混入 放大电叠滤 路 波器
2、dsp系统硬件设计过程都有哪些步骤? 答:第一步:确定硬件实现方案; 第二步:器件的选择; 第三步:原理图设计; 第四步:PCB设计; 第五步:硬件调试;
I/ODS输出 A/D/A平存第九章
工程项目的管理
CCS开发环境对用户系统采用工程项目的集成管理,使用户系统的开发和调试变得简单明了。在开发过程中,CCS会在开发平台中建立不同独立程序的跟踪信息,通过这些跟踪信息对不同的文件进行分类管理,建立相应的文件库和目标文件。
一个工程项目包括源程序、库文件、链接命令文件和头文件等,它们按照目录树的结构组织在工程项目中。工程项目构建(编译链接)完成后生成可执行文件。 9.1 CCS集成开发环境都有哪些功能?
答:CCS集成开发环境。此环境集编辑,编译,链接,软件仿真,硬件调试和实时跟踪等功能于一体,包括编辑工具,工程管理工具和调试工具等。
9.3 在CCS的所有窗口中,都含有一个关联菜单。怎样打开这个关联菜单? 答,只要在该窗口中单击右键就可以打开关联菜单。 9.4 CCS软件为用户提供哪几种常用的工具条?
答:标准工具条,编辑工具条,项目工具条和调试工具条
9.6 CCS软件可为用户提供各种窗口,常用的窗口都有哪些?怎样打开? 答:反汇编窗口,存储器窗口,寄存器窗口,观察窗口,
反汇编窗口:主要用来显示反汇编后的指令和调试所需的符号信息,包括反汇编指令,指令所存放的地址和相应的操作码。当程序装入目标处理器或仿真器后,CCS会自动打开反汇编窗口。存储器窗口:可以直接显示存储器的内容。在调试程序的过程中,可直接观察存储器的内容来确定程序的正确性。
9.7 一个工程项目都包含有哪些文件?怎样建立一个新的工程项目?
答:一个工程项目包括源程序,库文件,链接命令文件和头文件等,它们按照目录树的结构组织在工程项目中。见课本(P358)
9.8 CCS软件为用户构建工程项目提供了哪几种操作?这些操作有什么不同?
答:1,编译文件:编译文件仅完成对当前源文件的编译,不进行链接。2,增加性构建:增加性构建仅对修改的源文件进行编译,先前编译过,没有修改的文件不再进行编译。 3,全部重新构建:是对当前工程项目中的所有文件进行重新编译,重新链接,形成输
11
出文件。4,停止构建:停止当前的构建进程。
9.9 怎样使用CCS软件来调试程序?其都有哪些步骤?
答:CCS开发环境提供了异常丰富的调试手段。当完成工程项目构建,生成目标文件后,就可以进行程序的调试。一般的调试步骤为:1、装入构建好的目标文件;2、设置程序断点,探测点和评价点;3、执行程序;4、程序停留在断点处,查看寄存器和内存单元的数据,并对中间数据进行在线(或输出)分析。 反复上述过程直到程序达到预期的功能为止。
9.10 在CCS软件中,程序运行控制经常需要哪些操作?CCS提供了四种实时运行程序的操作,它们分别是哪些操作?各有什么不同?
答:在调试程序的过程中,经常需要复位,执行,单步执行等操作。1、装载文件2、复位目标处理器3、单步运行4、实时运行 第7章程序
;初始化定时器0
;根据定时长度计算公式:Tt=T* (TDDR+1) * (PRD+1)
;给定TDDR=9,PRD=1599,CLKOUT主频f=4MHz,T=250ns ;Tt=250*(9+1)*(1599+1)=4,000,000(ns)=4(ms) STM #1599,TIM0 STM #1599,PRD0
STM #K_TCR0,TCR0 ;启动定时器0中断 RET
;定时器0的中断服务子程序:通过引脚XF给出周期为8ms的占空比 ;为50%的方波波形
t0_flag .usect “vars”,1 ;当前XF输出电平标志位 ;若t0_flag=1,则XF=1 ;若t0_flag=0,则XF=0 time0_rev: PSHM TRN PSHM T PSHM ST0 PSHM ST1
BITF t0_flag,#1 BC xf_out,NTC SSBX XF
ST #0,t0_flag B next xf_out: RSBX XF
ST #1,t0_flag next: POPM ST1 POPM ST0 POPM T POPM TRN RETE (3)方波发生器程序清单
周期为8ms的方波发生器,定时中断周期为4ms,每中断一次,输出端电平取一次反。 ;abc1.asm
12
;定时器0寄存器地址
TIM0 .set 0024H PRD0 .set 0025H TCR0 .set 0026H
;K_TCR0:设置定时器控制寄存器的内容 K_TCR0_SOFT .set 0b ;Soft=0 K_TCR0_FREE .set 0b ;Free=0 K_TCR0_PSC .set 1001b ;PSC=9H K_TCR0_TRB .set 1b ;TRB=1 K_TCR0_TSS .set 0b ;TSS=0 K_TCR0_TDDR .set 1001b ;TDDR=9
K_TCR0 .set K_TCR0_SOFT| K_TCR0_FREE| K_TCR0_PSC| K_TCR0_TRB| K_TCR0_TSS| K_TCR0_TDDR 周期信号的周期检测
定时器计数器的使用对于周期信号的周期检测,可在信号的每个周期内发出一个脉冲,然后通过程序计算两个脉冲之间的时间来确定信号的周期。
当脉冲来临时触发外部中断INT0外部中断INT0用来记录脉冲定时器0用来记录时间。 为了增加计时长度,可在程序中设置一级计数器。定时器0的寄存器用来记录低位时间,程序中的计数器用来记录高位时间,在外部中断服务程序中读取时间。在定时器0中断服务程序中对计数器加1,实现低位时间的进位。;abc3.asm ;定时器0寄存器地址
TIM0 .set 0024H PRD0 .set 0025H TCR0 .set 0026H TSSSET .set 010H TSSCLR .set 0ffefH
;K_TCR0:设置定时器控制寄存器的内容
K_TCR0_SOFT .set 0b ;Soft=0 K_TCR0_FREE .set 0b ;Free=0 K_TCR0_PSC .set 1111b ;PSC=15 K_TCR0_TRB .set 1b ;TRB=1 K_TCR0_TSS .set 0b ;TSS=0 K_TCR0_TDDR .set 1111b ;TDDR=15
K_TCR0 .set K_TCR0_SOFT| K_TCR0_FREE| K_TCR0_PSC| K_TCR0_TRB| K_TCR0_TSS| K_TCR0_TDDR
t_counter .usect “vars”,1 t_ptr_counter .uset “vars”,1 tim_ptr_counter .usect “vars”,1
tcr_ptr_counter .usect “vars”,1 ;变量定义 t_array .usect “vars”,15 tim_array .usect “vars”,15 tcr_array .usect “vars”,15 .asg AR7,t_ptr .asg AR6,tim_ptr
13
.asg AR5,tcr_ptr _inittime:
;初始化定时器0,定时长度为T*393,216
;定时长度=T*(TDDR+1)*(PRD+1),本程序中TDDR=11,PRD=32767, ;主频为f,T=1/f
STM #32767,TIM0 STM #32767,PRD0 STM # K_TCR0,TCR0 ST #0,*(t_counter)
ST #t_array,*( t_ptr_counter)
ST #tim_array,*( tim_ptr_counter) ST #tcr_array,*( tcr_ptr_counter)
RET;外部中断INT0,在脉冲来时被激活并响应服务子程序,从脉冲响应 ;到响应存在延迟 int0isr:PSHM ST0 PSHM ST1 PSHM t_ptr PSHM tim_ptr PSHM tcr_ptr PSHM AL PSHM AH PSHM AG PSHM BL PSHM BH PSHM BG 中断服务程序:;外部中断INT0中断服务子程序:
INT0ISR: PSHM ST0 ;保存寄存器 PSHM ST1 PSHM BG PSHM BH PSHM BL
PORTR HPIPORT,*(hpi_var) ;读HPI口 STL *(hpi_var),B AND #01B,B
BC IR2,ANEQ ;首先判别是否是IR1, ;是,则执行服务程序, ;否,则跳至对IR2的判断 ;扩展中断IR0的服务程序主体 IR2: STL *(hpi_var),B AND #010B,B
BC INT0END,ANEQ ;首先判别是否是IR1, ;是,则执行服务程序, ;否,则跳转至结束 ;扩展中断IR1的服务程序主体
14
INT0ED: POPM BL POPM BH POPM BG POPM ST1 POPM ST0
;外部中断INT1中断服务子程序:
INT1ISR: PSHM ST0 ;保存寄存器 PSHM ST1 PSHM BG PSHM BH PSHM BL
PORTR HPIPORT,*(hpi_var) ;读HPI口 STL *(hpi_var),B AND #0100B,B
BC IR4,ANEQ ;首先判别是否是IR3, ;是,则执行服务程序, ;否,则跳至对IR4的判断 RETE
;扩展中断IR3服务程序主体 IR4: STL *(hpi_var),B AND #01000B,B
BC INT0END,ANEQ ;首先判别是否是IR4, ;是,则执行服务程序, ;否,则跳转至结束 ;扩展中断IR4的服务程序主体 INT1ED: POPM BL POPM BH POPM BG POPM ST1 POPM ST0 RETE
15