DSP片内外设及应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BX BR TI IN IN IN IN IN N T2 T1 T0 T0 T0 T 0 5 4 3 2 1 0
第15,14位:保留位,总是0 第6位:DMA通道0中断标志 第13位:DMA通道5中断标志 第5位:缓冲串口发送中断0标志 第12位:DMA通道4中断标志 第4位:缓冲串口接收中断0标志 第11位:缓冲串口发送中断1标志 第3位:定时器中断0标志 第10位:缓冲串口接收中断1标志 第2位:外部中断2标志 第9位:HPI中断标志 第1位:外部中断1标志 第8位:外部中断3标志 第0位:外部中断0标志 第7位:定时器中断1标志
INTR指令中断? 否 压栈PC指针
INTM置为1
关闭所有可屏
1、PC指针指向中 运行中断服务程序 断向量地址 2、再由中断向量地址中 的代码转向中断服务 返回指令将PC指针还原 程序 继续主程序
********************************** ; 中断矢量表程序段 _c_int00 B start nop nop NMI rete ;非屏蔽中断 nop nop nop SINT17 .space 4*14*16 ;各软件中断 INT0 rsbx intm ;外中断0中断 rete nop nop .space 4*2*16 TINT: B timer ;定时器中断向量 nop nop SINT6 .space 4*8*16 ;软件中断 ******************************************
X X 0 0 1 1
0~14 15 0~14 15 0或偶数 奇数
表、PLL的乘系数
8.4 定时器/计数器编程 [例] 设时钟频率为16.384MHZ,在TMS320C5402的XF端输出一 个周期为2S的方波,方波的周期由片上定时器确定,采用中断 方法实现
解:CPU时钟内部PLL设置为1。(1)软件可编程CKLMD:0X0007h (2)分析:主频F为16.384MHZ,则时钟周期T=1/F=1/16.384MHZ=61ns 最大定时时间t=T x (1+TDDR) X ( 1+PRD )=61 X 16 X 32768 ns=63.96ms
PLLCOUNT PLL ON/OFF PLLNDIV PLL STATUS PLL PLL PLL /
PLL
PLL
PLL
乘 数
除 数
计 数 器 值
通 断 位
时钟方式寄存器CLKMD的功能
PLLNDIV 0 0 1 1 1 1
PLLDIV PLLMUL
时 钟 发 生 选 择 位
的 状 态 位
乘系数 0.5 0.25 PLLMUL+1 1 (PLLMUL+1)/2 PLLMUL/4
定时器周期寄存器,当TIM减为0后, CPU自动将PRD的值装入TIM
Hale Waihona Puke Baidu
定时器控制寄存器,包含定时 器的控制和状态位
它有3个存储器映象寄存器:TIM、PRD和TCR
定时器预定标 分频系数
定时器预定标 计数器
图8-1
定时器组成框图
表8-2
定时器控制寄存器(TCR)的功能
定时器中断的周期 = Tclockout X
;定时器0中断服务子程序 timer: ADDM #-1,*(t0_cout) ;计数器减1 CMPM *(t0_cout),#0 ;判断是否为0 BC next,NTC ;不是0,退出循环 ST #1000,*(t0_cout) ;为0,设置计数器, ;并将XF取反 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: RSBX INTM RETE .end
用内部振荡器PLLX5
用外部时钟源PLLX1.5 用外部时钟源PLLX4.5 用外部时钟源频率除2 用内部振荡器频率除2 外部时钟源PLLX1 用外部时钟源频率除2 用内部振荡器频率除2 外部时钟源PLLX1
停止方式
停止方式
表8-5
时钟方式寄存器CLKMD各位域功能
15~12
11
10~3
2
1
0
PLLMUL PLLDIV
第八章
TMS320C54X片内外设及其应用
中断是由外部设备(如:A/D)向CPU传送数据,或 者由外部设备(如:D/A)向CPU提取数据产生的,可以 用于发送信号,表明一个特别事件(例如定时器完成计 数)的开始和结束 8.1.1中断请求 1、 不可屏蔽中断 共有16个 :两个可以通过硬件控制的不可屏蔽中断 分别是中断优先级最高(1级)的复位中断RS以及优 先级为2的NMI 其他14个只能通过软件控制
STACK t0_cout t0_flag
TVAL
TIM0 PRD0 TCR0 TIMES
.text ********************************** ; 中断矢量表程序段 _c_int00 b start nop nop NMI rete nop nop nop SINT17 .space 4*17*16 TINT: B timer nop nop .space 4*8*16
4.汇编源程序如下:
.mmregs .def _c_int00 .usect "STACK",100h .usect "vars",1 ;计数器 .usect “vars”,1 ;当前XF输出电平标志。 ;t0_flag=1,则XF=1 ;t0_flag=0,则XF=0 .set 1639 ;16401061=1ms ;因中断程序中计数器初值 ;t0_cout=1000,所以定时时间:1ms1000=1s .set 0024H ;定时器0寄存器地址 .set 0025H .set 0026H .data .int TVAL ;定时器时间常数
表 C5402中断源的中断向量及硬 件中断优先权
中断屏蔽寄存器IMR是用于屏蔽外部和内部的硬件中断。通过 读IFR可以检查中断是否被屏蔽,在IMR位置0,则屏蔽该中断 中断屏蔽寄存器IMR
D D 保 M M A C 留 A C 5 5 1514 13 D M A C 4 D D BR HP BX TI M IN M IN IN IN N A T3 A T1 T1 T T1 C C 0 0 12 11 10 9 8 7 6
;非屏蔽中断
;各软件中断 ;定时器中断向量
;其他未使用中断
start:
LD #0,DP STM #STACK+100h,SP STM #07FFFh,SWWSR STM #1020h,PMST ST #1000,*(t0_cout) ;计数器设置为 1000(1s) SSBX INTM ;关全部中断 LD #TIMES,A READA TIM0 ;初始化 TIM,PRD READA PRD0 STM #669h,TCR0 ;初始化TCR0 STM #8,IMR ;初始化 IMR, 使能 timer0 中断 RSBX INTM ;开放全部中断 WAIT: B WAIT **************************************
时钟方式的配置方法
引脚状态
CLKMD1 CLKMD2 CLKMD2
时钟方式 选择方案1
用外部时钟源PLLX3 用外部时钟源PLLX2
选择方案1
用外部时钟源PLLX5 用外部时钟源PLLX4
0 1 1 0 0 1 1 0
0 1 0 1 0 1 0 1
0 0 0 0 1 1 1 1
用内部振荡器PLLX3
例:已知中断号INT0= 16 ,状态寄存器PMST=0X00a5H , 求中断向量地址
INT0 = 10 H IPTR=0 0000 0001H 左移2位后 INT0=40H 向 量 0 0 0 0 指 位 15 14 13 12 针 向量地 0 址
0 0 0 0 11 10 9 8
1 1 0 0 7 6 5 4
(TDDR+1) X (PRD+1)
=1 / CPU主频 X (TDDR+1) X (PRD+1)
1 TINT的频率 Tclockout (TDDR 1) ( PRD 1)
8.3.
时钟电路
X1 X2/CLKIN C1 C2
X1 X2/CLKIN VDD 外部时钟
目前C54X系列有两种锁相环电路: 硬件配置PLL和软件可编程PLL
(3)设置定时控制寄存器TCR: 15~12位设置为0000 11 位(soft)=0和10位(free)=1 9~6位预定标计数器PSC=TDDR=1001 5位定时器重新加载控制位,TRB=1 4位定时器停止控制位:TSS=0,定时器启动开始工作 3~0预标定分频系数:TDDR=1001H
最后程序中设置 TCR = 669H
0 0 0 0 3 2 1 0 0
0
C
图、中断向量地址形成
8.2 定时器 C54X片内定时器是软件可编程,用于周期地产生中断和周期输出.
表8-1 Timer0 地址 0024H 0025H 0026H Timer1 地址 0030H 0031H 0032H 定时器的三个寄存器 寄存 器 TIM PRD TCR 说明 定时器寄存器,每计数一次自 动减1
将定时器设置为1ms,中断服务程序中计数期设置为1000, 则在计数1ms X 1000=1s 输出取反一次,得到一个周期为2S的方波
为将定时器设置为1ms,设定TDDR=9 ,则:
设置周期寄存器PRD:
t 1103 PRD 1 1639 9 T (1 TDDR ) 6110 (1 9)
中断标志寄存器IFR
当CPU接收到可屏蔽中断请求时,IFR相应的位置1,直 到中断得到处理为止.
图7-2
中断标志寄存器(IFR)结构图
接收中断请求
IFR的相应位置位 否 可屏蔽 中断 不可屏 蔽中断
否
中断可屏蔽? 是
图 、 中 断 操 作 流 程
INTM=0? 关闭所有可屏 是 开放所有可屏 IMR屏蔽位为1? 中断是否被屏蔽 否 是 中断被响应 IACK中断信号产生 是
5.链接命令文件 times.cmd如下:
MEMORY {PAGE 0: RAM1: origin =1000h ,length =500h PAGE 1: SPRAM1: origin=0060h,length=20h SPRAM2: origin=0100h,length=200h } SECTIONS { .text :>RAM1 PAGE 0 .data :>RAM1 PAGE 0 vars :>SPRAM1 PAGE 1 STACK :>SPRAM2 PAGE 1 }