您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > 《DSP控制器原理及应用技术》第4章基本外设及其应用开发
第四章基本外设及其应用开发工信部十二五规划教材《DSP控制器原理与应用技术》编写组第4章基本外设及其应用开发4.1通用数字输入/输出模块4.2中断管理系统4.3CPU定时器4.1.1GPIO模块结构与工作原理4.1通用数字输入/输出(GPIO)模块GPIO:GeneralPurposeInput/Output,通用数字量输入输出88个引脚,分为3个32位的端口:PortA、B、C每个引脚最多可复用4种功能:GPIO和外设1、2、3。端口A复用控制寄存器GPAMUX1南航自动化学院DSP技术应用实验室GPAMUX1控制位000110111,0GPIO0(I/O)EPWM1A(O)3,2GPIO1(I/O)EPWM1B(O)ECAP6(I/O)MFSRB(I/O)5,4GPIO2(I/O)EPWM2A(O)7,6GPIO3(I/O)EPWM2B(O)ECAP5(I/O)MCLKRB(I/O)9,8GPIO4(I/O)EPWM3A(O)11,10GPIO5(I/O)EPWM3B(O)MFSRA(I/O)ECAP1(I/O)13,12GPIO6(I/O)EPWM4A(O)EPWMSYNCI(I)EPWMSYNCO(O)15,14GPIO7(I/O)EPWM4B(O)MCLKRA17,16GPIO8(I/O)EPWM5A(O)CANTXB(O)ADCSOCAO(O)19,18GPIO9(I/O)EPWM5B(O)SCITXDB(O)ECAP3(I/O)21,20GPIO10(I/O)EPWM6A(O)CANRXB(I)ADCSOCBO(O)23,22GPIO11(I/O)EPWM6B(O)SCIRXDB(I)ECAP4(I/O)25,24GPIO12(I/O)TZ1(I)CANTXB(O)MDXB(O)27,26GPIO13(I/O)TZ2(I)CANRXB(I)MDRB(I)29,28GPIO14(I/O)TZ3(I)/XHOLD(I)SCITXDB(O)MCLKXB(I/O)31,30GPIO15(I/O)TZ4(I)/XHOLDA(O)SCIRXDB(I)MFSXB(I/O)4.1.2GPIO寄存器端口A方向/数据/上拉禁止/置位/复位/取反/低功耗模式选择寄存器方向寄存器GPADIR数据寄存器GPADATGPIOx=0:相应引脚为输入相应引脚为低电平1:输出高电平上拉禁止/置位/复位/取反/低功耗模式选择寄存器GPIOx=0:无影响1:执行相应操作GPIO7作为输出控制发光二极管循环点亮。#includeDSP2833x_Device.h#include“DSP2833x_Examples.h”voidmain(void){//Step1.初始化系统控制、PLL/看门狗,允许外设时钟InitSysCtrl();//Step2.初始化GPIO:描述如何将GPIO设置为初始状态InitGpio();//Step3.清除所有中断;初始化PIE向量表DINT;//禁止CPU中断//Step4.初始化所有的外设:本例中不需要4.1.3GPIO模块应用示例//Step5.用户特定代码EALLOW;//宏指令,允许访问受保护寄存器GpioCtrlRegs.GPADIR.bit.GPIO7=0x1;//GPIO7作为输出GpioDataRegs.GPADAT.bit.GPIO7=0x1;//GPIIO7数据EDIS;//宏指令,恢复寄存器的保护状态//Step6.进入循环,实现特定功能while(1){EALLOW;GpioDataRegs.GPATOGGLE.bit.GPIO7=0x1;EDISDELAY_US(0x40000);}4.2.1中断管理系统概述1.中断的概念4.2中断管理系统2.中断源3.三级中断管理问题:CPU直接响应有限解决方法:PIE集中化扩展。PIE(PeripheralInterruptExpansion):外设中断扩展。三级中断:外设级、PIE级和CPU内核级。外设级中断管理:具体外设中断源的允许与禁止PIE级中断管理:对外设级中断分组并按照优先级管理;CPU内核级中断:处理直接向CPU申请的中断请求。1.17个CPU级中断:非屏蔽NMI+可屏蔽:INT1~INT14、RTOSINT和DLOGINT。RTOSINT:实时操作系统中断;DLOGINT:数据日志中断。一、CPU内核级中断及其管理4.2.2各级中断及其管理2.中断控制寄存器中断确定:IFRBit=1中断未确定:IFRBit=0允许:SetIERBit=1禁止:ClearIERBit=0中断全局使能使能:INTM=0;禁止:INTM=1DINT/EINT,禁止/允许中断二、PIE级中断及其管理PIE控制寄存器PIEIFRx和PIEIER(x=1-12)中断响应寄存器(PIEACK)PIECTRL寄存器PieCtrlRegs.PIEIFR1.bit.INTx4=1;//manuallysetIFRforXINT1inPIEgroup1PieCtrlRegs.PIEIER3.bit.INTx5=1;//enableEPWM5_INTinPIEgroup3PieCtrlRegs.PIEACK.all=0x0004;//acknowledgethePIEgroup3PieCtrlRegs.PIECTRL.bit.ENPIE=1;//enablethePIEF28335PIE中断分配表三、外设级中断及其管理•由PIE管理的外设中断事件产生时,外设级中断标志置位;•若允许该中断,则向PIE控制器发出中断请求。•7个外部中断:~7,1个非屏蔽中断XNMI。•外部中断可选择不同GPIO引脚作触发源。XINT1•XINTnCR的位分布•Polarity中断产生时刻:x0(00或10)-下降沿;01-上升沿;11-上升沿和下降沿•Enable为中断允许位:0-禁止该中断;1-允许该中断。4.2.3中断响应过程4.2.4中断向量表及其映射与描述一、中断向量表及其映射1.复位时默认中断向量表2.PIE向量表映射(ENPIE=1)CPU向量重新映射于数据空间0x000D00PIE向量空间-0x000D00–256字,映射于数据空间INT130x000D1AXINT13/CPU-Timer1VectorINT140x000D1CTimer2–RTOSVectorDatalog0x000D1DDataloggingvector………………USER110x000D3EUserdefinedTRAPINT1.10x000D40PIEINT1.1interruptvector………………………………INT12.10x000DF0PIEINT12.1interruptvectorINT1.80x000D4EPIEINT1.8interruptvectorINT12.80x000DFEPIEINT12.8interruptvector………………PIEvectoraddressPIEvectorDescriptionNotused0x000D00ResetVectorNeverFetchedHereVectornameINT10x000D02INT1re-mappedbelow………………re-mappedbelowINT120x000D18INT12re-mappedbelowRESET和INT1-INT12向量位置被重映射1.中断向量表的硬件抽象层描述与外设寄存器类似二、中断向量表的描述与使用2.重新射中断服务函数入口地址//中断函数声明Interruptvoidcpu_timer0_isr(void);Main(){…EALLOW;PieVectTable.TINT0=&cpu_timer0_isr;//重新映射本例中使用的中断向量,使其指向中断服务程序.EDIS;…}4.3CPU定时器3个32位的CPU定时器:2——实时操作系统;0、1——用户。4.3.1CPU定时器结构与工作原理T=(TDDRH:TDDR+1)*(PRDH:PRD+1)*TSYSCLKOUT。TINT0中断属于INT1.74.3.2CPU定时器的寄存器TIMERxTCR:控制寄存器TIMERxTIM:计数器低16位TIMERxTIMH:计数器高16位TIMERxPRD:周期寄存器低16位TIMERxPRDH:周期寄存器高16位TIMERxTPR:低8位是TDDR(预定标分频系数),高8位是PSC(预定标计数器)TIMERxTPRH:低8位是TDDRH,高8位是PSCH定时器控制寄存器TCRTIF:中断标志(写1清零)TIE:中断允许FREE、SOFT:仿真模式TRB:定时器重装载(写1自动装载周期寄存器和预定标寄存器的值)TSS:定时器停止位(写1停止,写0启动)4.3.3CPU定时器中断示例#includeDSP2833x_Device.h#includeDSP2833x_Examples.hinterruptvoidcpu_timer0_isr(void);//声明中断服务函数voidmain(void){//Step1.初始化系统控制:InitSysCtrl();//Step2.初始化GPIO(描述如何将GPIO设置为初始状态)InitGpio();//Step3.清除所有中断;初始化PIE向量表:DINT;//禁止CPU中断InitPieCtrl();//将PIE控制寄存器初始化至默认状态(禁止所有中断,清除所有中断标志)//CPUTimer0每1s中断一次4.3.3CPU定时器中断示例IER=0x0000;//禁止CPU中断IFR=0x0000;//清除所有CPU中断标志InitPieVectTable();//初始化PIE向量表,允许访问PIE向量表EALLOW;PieVectTable.TINT0=&cpu_timer0_isr;//重新映射本例中使用的中断向量,使其指向中断服务程序.EDIS;//Step4.初始化本例中使用的外设模块:InitCpuTimers();//本例中仅初始化CPU定时器//配置CPU定时器0:150MHz频率,周期为1秒ConfigCpuTimer(&CpuTimer0,150,1000000);CpuTimer0Regs.TCR.all=0x4001;//允许定时器中断,且设置TSS为0启动定时器工作4.3.3CPU定时器中断示例//Step5.用户特定代码:IER|=M_INT1;//允许CPU的INT1中断,该中断连接至TINT0PieCtrlRegs.PIEIER1.bit.INTx7=1;//PIE中断组1中允许TINT0中断EINT;//清除全局屏蔽位INTM以允许可屏蔽中断ERTM;//允许调试模式DBGM//Step6.空循环,等待中断for(;;);}//Step7.用户自定义函数:interruptvoidcpu_timer0_isr(void){CpuTimer0.InterruptCount++;PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;//清除PIE中断组1的应答位,以便CPU可再次响应该中断。}第四章TheEND《DSP控制器原理与应用技术》课件制作组:姚睿、付大丰、储剑波
本文标题:《DSP控制器原理及应用技术》第4章基本外设及其应用开发
链接地址:https://www.777doc.com/doc-2835909 .html