1、第6章 利用DSP实现外部控制与通信 6.1 通用输入通用输入/输出端口输出端口(GPIO)6.2 多通道缓冲串口多通道缓冲串口(McBSP)6.3 通用异步接收通用异步接收/发送器发送器 6.4 本章小结本章小结习题与思考题习题与思考题一个DSP系统一般都需要对外部的设备进行一些控制或者与外部设备之间进行通信来达到系统设计的要求。在本章里,我们介绍DSP是如何通过通用输入/输出端口(GPIO)、EMIF来实现对外部的控制的,以及多通道缓冲串口(McBSP)和通用异步串口(UART)的一些知识。5509A提供8个专门的通用输入/输出管脚,分别是GPIO0GPIO7。每个管脚可以通过I/O方向寄
2、存器(IODIR)被独立设置为输入或者输出。I/O数据寄存器(IODATA)在管脚被设置为输入状态时用来监测管脚逻辑电平的变化,在管脚被设置为输出状态时用来控制输出的逻辑状态。IODIR的地址为0 x3400,IODATA 的地址为0 x3401。IODIR寄存器的描述如图6-1所示,IODATA寄存器的描述如图6-2所示。6.1 通用输入通用输入/输出端口输出端口(GPIO)图6-1 IODIR寄存器图6-2 IODATA寄存器将IODIR寄存器的对应位清0,可以将对应的GPIO管脚设置为输入,其输入可以从IODATA寄存器相应的位读出。反之,将IODIR寄存器的对应位置1,可以将对应的GP
3、IO管脚设置为输出,其输出可以通过IODATA寄存器相应的位设置。除了上述的专门的GPIO管脚之外,EMIF的地址总线A150、增强主机接口(EHPI)、McBSP的部分管脚也可以被设置为GPIO功能。TMS320C55X DSP提供了多个高速的多通道缓冲串口(McBSP),使得TMS320C55X DSP可以直接和其他的C55X DSP、多媒体数字信号编解码器以及系统中的其他设备接口。6.2 多通道缓冲串口多通道缓冲串口(McBSP)6.2.1 同步串行通信基础知识同步串行通信基础知识在介绍McBSP之前,我们先来回顾一下同步串行通信的基础知识。根据信息的传送方向,串行通信可以分为单工、半双
4、工和全双工三种。信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。串行通信又分为异步通信和同步通信两种方式。串行通信中发送器将并行数据逐位移出成为串行数据位流,接收器将串行数据位流逐位接收组合成并行数据,串行数据位流以一定时序和一定格式呈现在连接收/发器的数据线上。串口通信有以下一些基本概念:(1)帧同步:串行数据位流起始条件。(2)位时钟:每个串行数据位持续的时间。(3)数据元:一次串并变换所产生的串行数据位流长度,是串行通信最基本的数据单位,以数据位长度为单位,一般为8、12、16、20、24、32位。(4)数据相:由多个数据元组成的一串
5、连续不间断的串行数据位流,以数据元个数为单位。在数据相中每个数据元的数据位长度均相同。(5)数据帧:由多个独立的数据相组成的一串连续不间断的串行数据位流。以数据相的个数为单位。在数据帧中不同数据相所包含的数据元的个数和数据元的数据位长度可以不同。(6)同步串行通信:发送器和接收器以统一的位时钟工作。同步串行通信接口信号有:(1)位时钟:CLKR(CLKX)。(2)帧同步:FSR(FSX)。(3)串行数据:DR(DX)。同步串行通信标准如下:(1)串行数据流位起始条件称为帧同步事件。帧同步事件由位时钟采样帧同步信号给出。(2)串行数据位流长度:串行传输的数据流位数达到设定的长度后(由数据元、数据
6、相和数据帧设定),结束本次传输,等待下一个帧同步信号达到时,再发起另一次串行传输。(3)串行数据流传输速度:即每一个串行位的持续时间,由位时钟决定。(4)接口信号及其极性、帧同步事件、帧同步与串行位流起始时刻的关系、串行数据位流的格式(数据元、数据相和数据帧的格式)、串行数据位流传输速率等的不同,构成多种不同的同步串行通信标准。(5)常见的同步串行通信标准有:SPI、IIS、T1/E1、ST-BUS等。6.2.2 TMS320C55X DSP的的McBSP 1.McBSP的特点的特点McBSP是Multichannel Buffered Serial Port的缩写,即多通道缓冲型串行接口,是
7、一种多功能的同步串行接口,具有很强的可编程能力,可以配置为多种同步串口标准,直接与各种器件高速接口。McBSP可以配置为以下串口标准:T1/E1标准:通信器件;MVIP和ST-BUS标准:通信器件;IOM-2标准:ISDN器件;AC97标准:PC Audio Codec器件;IIS标准:Codec器件;SPI:串行A/D、D/A,串行存储器等器件。如果采用特殊配置再配合软件,McBSP就可与特殊器件接口。如将McBSP引脚配置为通用I/O引脚,可用软件实现I2C标准;将McBSP引脚进行特殊连接,结合DMA与软件编程,可方便实现UART。McBSP与DMA控制器配合,达到数据缓冲的目的。接收/
8、发送的单个数据单元由DMA控制器写/读接收/发送缓冲器;接收/发送一批数据后,再申请CPU服务,处理这批接收/发送的数据。2.McBSP的工作的工作McBSP包括一个数据流通路和一个控制通路,通过7个引脚与外部设备连接,如图6-3所示。图6-3 McBSP的模块示意图图中McBSP的模块的各引脚功能如下:CLKX:串行发送器位时钟引脚,也可设置为通用输入/输出引脚;FSX:串行发送器帧同步引脚,也可设置为通用输入/输出引脚;DX:串行发送器数据引脚,也可设置为通用输出引脚;CLKR:串行接收器位时钟引脚,也可设置为通用输入/输出引脚;FSR:串行接收器帧同步引脚;DR:串行接收器数据引脚,也可
9、设置为通用输入引脚;CLKS:外部位时钟输入引脚,也可设置为通用输入/输出引脚。数据通路寄存器如下:RSR:接收移位寄存器;RBR:接收缓冲寄存器;Expand:A律、律扩展;DRR:数据接收寄存器;DXR:数据发送寄存器;Compress:A律、律压缩;XSR:发送移位寄存器。控制寄存器如下:PCR:引脚控制寄存器。它可配置引脚的功能、极性和方向。SPCR:串口控制寄存器。它可配置McBSP串行收/发器的状态和中断;SRGR:采样率发生器寄存器。它配置内部产生的位时钟,配置内部产生的帧同步时钟。RCR、XCR:接收/发送控制寄存器。它们可配置接收/发送的数据相个数,配置接收/发送的数据元个数
10、和位数。如图6-3所示:通过McBSP与外部设备的数据交换,由DX引脚发送数据,RX引脚接收数据。通信的时钟和帧同步信号由CLKX(发送时钟)、CLKR(接收时钟)、FSX(发送帧同步)以及FSR(接收帧同步)引脚来控制。DSP的CPU或DMA控制器与McBSP的通信,通过16 bit寄存器访问内部的外设总线来实现。发送时,CPU或DMA控制器将数据写到数据发送器(DXR1、DXR2)。写给DSR的数据,通过发送移位寄存器(XSR1、XSR2)移位输出到DX。同样,McBSP通过DR引脚接收数据,移位存储到接收移位寄存器(RBR1、RBR2)。然后,再由(RBR1、RBR2)复制到DRRs,由
11、CPU或DMA控制其读取。这样,就可以进行内部和外部的数据通信了。以下是数据从DR引脚传输到CPU或者DMA控制器的说明:(1)McBSP等待内部FSR上接收帧同步脉冲信号。(2)帧同步脉冲信号到达时,McBSP根据RSR2中RDATDLY bit的设置,插入适当的数据延迟。在前面的时序里,选择了1 bit的数据延迟。(3)McBSP接收DR引脚上的数据bit,并将其移送到接收移位寄存器。如果字长等于或小于16 bit,则只用RSR1;如果字长大于16 bit,则要使用RSR1和RSR2,且RSR2中是高位数据。(4)当接收了一个完整的字,如果RSR1为空,McBSP将接收移位寄存器的内容复制
12、到接收缓冲寄存器。(5)如果DRR1没有被前面的数据占满,McBSP将接收缓冲寄存器的值,复制到数据接收寄存器。当DRR1收到新的数据,SPCR1里的接收就绪bit置位,表示接收数据已经准备好被CPU或者DMA控制器读取。(6)CPU或者DMA控制器从数据接收寄存器读取数据。当DRR1被读取,RRDY清0,开始下一个从RBR到DRR的复制。以下是数据从CPU或者DMA控制器传输到DX引脚的说明:(1)CPU或者DMA控制器将数据写到数据发送寄存器。数据写到DXR1后,SPCR2中的发送就绪bit清0,表示DXR1不能接收新的数据。如果字长大于16 bit,则要使用DXR1和DXR2,且DXR2
13、中是高位数据。(2)DXR1接收到一个新的数据,McBSP将发送寄存器中的值复制到发送移位寄存器。发送就绪bit(XRDY)置位,表示发送器已经准备好从CPU或DMA控制器接收数据。如果字长大于16 bit,则要使用XSDXR1和XSR2,且XSR2中是高位数据。(3)McBSP等待FSX引脚上的发送帧同步脉冲。(4)McBSP根据XCR2中XDATDLY bit的设置,在帧同步脉冲后插入相应的周期,设置了1 bit延迟。(5)McBSP将发送移位寄存器的数据移位到DX引脚。3.McBSP寄存器寄存器1)数据接收寄存器(DRR2和DRR1)CPU和DMA控制器从DRR2和DRR1读取接收数据。
14、如果字长不超过16 bit,则只需使用DRR1;如果字长超过16 bit,则要使用DRR1和DRR2。每个接收的帧可以有一段或两段,每段的字长可以不同。DRR2和DRR1如图6-4所示。图6-4 数据接收寄存器(DRR2和DRR1)DRR1和DRR2是I/O映射寄存器,可以通过访问I/O空间来访问该寄存器。当串行字长不超过16 bit时,DR引脚上的接收数据移位到接收移位寄存器1(RSR1),然后复制到接收缓冲寄存器(RBR1)。RBR1的数据再复制到DRR1,CPU或DMA控制器从DRR1读取数据。当串行字长超过16 bit时,DR引脚上的接收数据移位到接收移位寄存器1和2(RSR2、RSR
15、1),然后复制到接收缓冲寄存器(RBR2、RBR1)。RBR2和RBR1的数据再复制到DRR2和DRR1,CPU或DMA控制器从DRR2和DRR1读取数据。如果从RBR1复制到DRR1的过程中,使用压缩扩展(RCOMPAND=10b或11b),RBR1中的8 bit压缩数据扩展为16 bit左校验数据。如果未使用压缩扩展,RBR1,2根据RJUST的设置,将数据填充后送到DRR1,2。RSRs和RBRs不是I/O映射寄存器,用户不能访问这几个寄存器。2)数据发送寄存器(DXR2和DXR1)发送数据时,CPU或DMA控制器将数据写到数据发送寄存器。如果字长不超过16 bit,只用DXR1;如果字
16、长超过16 bit,需要使用DXR2和DXR1,DXR2中为高位数据。McBSP发送的数据帧可以有一段或两段,每段的字长可以不同。DXR1和DXR2是I/O映射寄存器,可以通过访问I/O空间来访问。DXR2和DXR1如图6-5所示。图6-5 数据发送寄存器(DXR2和DXR1)当串行字长不超过16 bit时,CPU或DMA控制器写到DXR1上的数据,复制到发送移位寄存器1(RSR1),然后再复制到发送缓冲寄存器1(XSR1)。然后,每个周期移位1 bit数据到DX引脚。当串行字长超过16 bit时,DXR1和DXR2的数据复制到发送移位寄存器(XSR2、XSR1),再移位到DX引脚。如果从DX
17、R1复制到XSR1的过程中,使用压缩扩展(XCOMPAND=10b或11b),DXR1中的16 bit数据压缩为8 bit 律或A律数据后,送到XSR1;如果未使用压缩扩展,DXR(s)的数据直接复制到XSR(s)。DXRs不是I/O映射寄存器,用户不能访问。3)串口控制寄存器(SPCR1和SPCR2)如图6-6所示,每个McBSP有两个串口控制寄存器:SPCR1和SPCR2。表6-1和表6-2分别说明SPCR1和SPCR2中的bit。这两个寄存器都是I/O映射寄存器,它们的功能如下:(1)选择不同的McBSP模式,即数字回环模式(DLB)、接收数据的符号扩展和校验模式(RJUST)、时钟停止
18、模式(CLKSTP)、中断模式(RINTM和XINTM)、仿真模式(FREE和SOFT)。(2)使能或禁止DX引脚数据延迟器(DXENA)。(3)检测接收和发送数据的状态(RSYNCERR、XSYNCERR、RFULL、XEMPTY、RRDY、XRDY)。(4)将McBSP各个部分复位(RRST、XRST、FRST、GRST)。图6-6 串口控制寄存器(SPCR1和SPCR2)表表6-1 SPCR1寄存器寄存器续表表6-2 SPCR2寄存器寄存器续表4)接收控制寄存器(RCR1和RCR2)如图6-7所示,McBSP有两个接收控制寄存器:RCR1和RCR2。表6-3和表6-4分别描述了RCR1和
19、RCR2寄存器的各个bit。这两个寄存器都是I/O映射寄存器,通过这两个寄存器,用户可以进行如下设置:(1)接收帧为单段还是双段(RPHASE)。(2)定义段1和段2的字长(RWDLEN1、RWDLEN2)以及每个段的长(RFRLEN1、RFRLEN2)。(3)选择对接收数据的压缩扩展模式。(4)使能或禁止忽略接收帧同步信号功能(RFIG)。(5)设置接收数据延迟(RDATDLY)。图6-7 接收控制寄存器(RCR1和RCR2)表表6-3 RCR1寄存器寄存器表表6-4 RCR2寄存器寄存器续表5)发送控制寄存器(XCR1和XCR2)如图6-8所示,McBSP有两个发送控制寄存器:XCR1和X
20、CR2。表6-5和表6-6分别说明了XCR1和XCR2寄存器的各个bit。这两个寄存器都是I/O映射寄存器,通过这两个寄存器,用户可以进行如下设置:(1)设置发送帧为单段还是双段(XPHASE)。(2)定义段1和段2的串行字长(XWDLEN1、XWDLEN2),以及每个段的字数(FRLEN1、XFRLEN2)。(3)选择对发送数据的压缩扩展模式。(4)使能或禁止接收帧同步信号忽略功能(FIG)。(5)设置接收发送延迟(XDATDLY)。图6-8 发送控制寄存器(XCR1和XCR2)表表6-5 XCR1寄存器寄存器表表6-6 XCR2寄存器寄存器续表6)采样率发生器寄存器(SRGR1和SRGR2
21、)如图6-9所示,McBSP有两个采样率发生器寄存器:SRGR1和SRGR2。表6-7和表6-8分别说明了SRGR1和SRGR2寄存器的各个bit。这两个寄存器都是I/O映射寄存器,通过这两个寄存器,用户可以进行如下设置:(1)为采样率发生器选择输入时钟源(PCR中的CLKSM和SCLKME bit一起控制)。(2)选择CLKG的分频系数(CLKGDV)。(3)选择产生内部发送帧同步信号的信号源是由FSG产生,还是由FSGM产生。(4)设置帧同步信号的宽度(FWID)和周期(FPER)。当采样率发生器的时钟源为外部信号时(通过CLKS、CLKR或CLKX引脚):(1)如果CLKS引脚提供输入时
22、钟,RGR2中CLKSP bit允许选择是在CLKS的上升沿还是下降沿触发CLKG和FSG;如果使用CLKX/CLKR引脚的输入信号,PCR中的CLKXP/CLKRP选择输入时钟的极性。(2)设置SRGR2中的GSYNC bit使CLKG和外部帧同步信号同步,同时也和输入时钟同步。图6-9 采样率发生器寄存器(SRGR1和SRGR2)表表6-7 SRGR1寄存器寄存器表表6-8 SRGR2寄存器寄存器7)多通道控制寄存器(MCR1和MCR2)如图6-10所示,McBSP有两个多通道控制寄存器:MCR1和MCR2。MCR1中是多通道模式下接收串口的控制位和状态位(前缀为R)。MCR2中是多通道模
23、式下发送串口的控制位和状态位(前缀为X)。表6-9和表6-10分别说明寄存器MCR1和MCR2的各个bit。通过使能这两个I/O映射寄存器,用户可以进行如下设置:(1)使能所有通道,或只选部分通道用于接收数据(RMCM)。(2)使能/禁止和屏蔽/不屏蔽发送通道(XMCM)。(3)作两个分区(32通道)或8个分区(128通道)。(4)使用两个分区时,给分区A和B分配16个通道的块(RPABLK和RPBBLK用于接收,XPABLK和XPBBLK用于发送)。(5)判断哪16个通道的块正在传输数据。图6-10 多通道控制寄存器(MCR1和MCR2)表表6-9 MCR1寄存器寄存器续表 续表 表表6-1
24、0 MCR2寄存器寄存器续表 续表 8)引脚控制寄存器(PCR)如图6-11和表6-11所示,每个McBSP都有一个引脚控制寄存器:PCR。通过该I/O映射,用户可以进行如下设置:(1)执行IDLE指令,使McBSP进入低功率模式。对于TMS320VC5509/5510芯片,通过PCR来实现。对于TMS320VC5501/5502芯片,通过外设IDLE控制寄存器(PICR)来实现。(2)在接收器和/或发送器复位时,可将McBSP引脚用作通用I/O引脚。(3)选择发送器和接收器的帧同步模式。(4)选择发送器和接收器的时钟模式。(5)为采样率发生器选择输入时钟源。(6)当CLKS、DX和DR引脚配
25、置为通用I/O引脚时,读写数据。(7)选择帧同步信号是高电平有效还是低电平有效。(8)指定是在时钟的上升沿还是下降沿对数据采样。图6-11 引脚控制寄存器(PCR)表表6-11 PCR寄存器寄存器续表一 续表一 续表二 9)接收通道使能寄存器如图6-12和表6-12所示,McBSP有8个接收通道使能寄存器:RCERA、RCERB、RCERC、RCERD、RCERE、RCERF、RCRG、RCERH。每个对应A、B、C、D、E、F、G和H分区中的一个。这几个I/O映射寄存器,只有当接收器配置为各通道可以单独使能或禁止时(RMCM=1),才可以使用。图6-12 接收通道使能寄存器在选择多通道时,将
26、通道分配给RCERs,是32个通道还是128个通道单独可选,由RMCME bit定义。表6-13说明了在这两种情况下,如何将块分配给每个RCERs,以及每个bit对应哪个通道。表表6-12 接收通道使能寄存器接收通道使能寄存器表表6-13 RCERs块分配块分配续表 10)发送通道使能寄存器如图6-13和表6-14所示,MCBSP有8个发送通道使能寄存器:XCERA、XCERB、XCERC、XCERD、XCERE、XCERF、XCERG、XCERH。每个对应A、B、C、D、E、F、G和H分区中的一个。这几个I/O映射寄存器,只有当发送器配置为各通道可以单独使能/禁止或屏蔽/非屏蔽(XMCM非零
27、)时,才可以使用。图6-13 发送通道使能寄存器表表6-14 发送通道使能寄存器发送通道使能寄存器在选择多通道时,将通道分配给XCERs,是32个通道还是128个通道单独可选,由XMCME bit定义。表6-15说明了在这两种情况下,如何将块分配给每个XCERs,以及每个bit对应哪个通道。表表6-15 XCERs块分配块分配续表 注意:当XMCM=11b(对称的发送和接收)时,发送器使用接收通道使能寄存器(RCERs)来使能通道,使用XCERS来解除发送通道的屏蔽。4.McBSP引脚用作通用引脚用作通用I/O引脚引脚本章的任务主要是将McBSP引脚用作通用I/O引脚。表6-16说明了如何将M
28、cBSP引脚用作通用I/O引脚。其中,除XRST和RRST bit为串口控制寄存器bit以外,其他所有的bit都位于引脚控制寄存器中。表表6-16 如何将如何将McBSP引脚用作通用引脚用作通用I/O引脚引脚要将接收串口引脚CLKR、FSR和DR用作通用I/O引脚,需作以下设置:(1)接收串口复位(SPCR1中RRST=0)。(2)将McBSP引脚设置为通用I/O引脚(PCR中XIOEN=I)。CLKR和FSR引脚可以分别通过CLKRM和FSRM被置为输入或输出。DR只能作为输入引脚。表6-16说明了PCR中哪些bit用于读写这些引脚的数据。图6-14 通用输入/输出管脚扩展原理图要将发送串口
29、引脚CLKX、FSX和DX用作通用I/O引脚,需作以下设置:(1)接收串口复位(SPCR2中XRST=0)。(2)将McBSP引脚设置为通用I/O引脚(PCR中RIOEN=1)。CLKX和FSX引脚可以分别通过CLKXM和FSXM被置为输入或输出。DX只能作为输入/输出引脚。表6-16说明了PCR中哪些bit用于读写这些引脚的数据。对于CLKS,所有的复位和I/O使能条件都必须满足:(1)串口的接收和发送引脚复位(RRST=0和XRST=0)。(2)对于接收器和发送器,通用I/O使能(RIOEN=1和XIOEN=1)。CLKS引脚只能作为输入引脚。可以通过读PCR的CLKSSTAT bit来读
30、取CLKS的状态。注意:当McBSP的引脚配置成通用输入引脚时,没有对CLKRP、CLKXP、CLKSP、FSRP 和FSXP作写保护,如果要写这些bit,要到相关引脚的状态下一次自动改变时,才能写入。TMS320VC5509/5510中,这些bit每个CPU时钟周期更新一次。一、任务目的一、任务目的通过任务学习使用5509A DSP的通用输入/输出管脚直接控制外围设备的方法。任务任务11 通用输入通用输入/输出管脚应用输出管脚应用二、所需设备二、所需设备(1)PC兼容机一台,操作系统为Windows 2000(或Windows NT、Windows 98、Windows XP,以下假定操作系
31、统为Windows 2000)。Windows操作系统的内核如果是NT的应该安装相应的补丁程序(如:Windows 2000为Service Pack3,Windows XP为Service Pack1)。(2)ICETEK-VC5509-A-USB-EDU试验箱一台。三、相关原理三、相关原理1TMS320C5509的通用输入的通用输入/输出管脚输出管脚TMS320C5509DSP有7个专门的通用输入/输出管脚,还有1个通用输出管脚XF。这些通用输入输出管脚通过专用寄存器可以由软件控制,比如指定输入或输出,输出值等。另外,TMS320C5509DSP 的许多其他管脚,在不使用于特定功能时也能配
32、置成通用输入/输出管脚。2ICETEK-CTR 指示灯的控制指示灯的控制1)GPIO与被控指示灯的连接通过ICETEK-VC5509-A 板的扩展插座,通用输出控制模块ICETEK-CTR 板直接连接了板上的一个指示灯和DSP 的一个通用输入/输出管脚。这个管脚属于McBSP1,可以设置成通用输入/输出管脚使用。扩展原理如图6-14所示。2)GPIO控制指示灯如果要点亮发光二极管,需要在GPIO1上输出低电平,如果输出高电平则指示灯熄灭。如果定时使GPIO1上的输出改变,指示灯将会闪烁。3程序说明程序说明1)程序流程图程序流程图如图6-15所示。图6-15 程序流程图2)文件main.c#in
33、clude myapp.h#include ICETEK-VC5509-EDU.h#include scancode.hvoid InitMcBSP();main()CLK_init();SDRAM_init();InitCTR();InitMcBSP();CTRGR=2;/使能I/Owhile(1)PCR1=8;/Delay(256);void InitMcBSP()/IOPin:McBSP1.FSX S15 将McBSP管脚设置作为输出/SPCR2.XRST_=0,PCR.XIOEN=1,PCR.FSXM=1,PCR.FSXP=0/1SPCR2_1&=0 x0fffe;PCR1|=0 x2
34、800;四、任务步骤四、任务步骤(1)准备 设置CCS 2.21在硬件仿真(Emulator)方式下运行。启动CCS 2.21。(2)打开工程文件,浏览main.c文件的内容,理解各语句作用。(3)编译、下载程序。(4)运行程序,观察结果。(5)结束程序运行,退出CCS。五、结果五、结果可以观察到红色发光二极管定时闪烁。六、问题与思考六、问题与思考(1)思考本任务与任务7的输出原理有何不同。(2)说明本任务是如何设置McBSP引脚的。一、任务目的一、任务目的学习使用5509A DSP的扩展端口控制外围设备的方法,了解发光二极管阵列的控制编程方法。任务任务12 发光二极管阵列发光二极管阵列二、所
35、需设备二、所需设备(1)PC兼容机一台,操作系统为Windows 2000(或Windows NT、Windows 98、Windows XP,以下假定操作系统为Windows 2000)。Windows操作系统的内核如果是NT的应该安装相应的补丁程序(如:Windows 2000为Service Pack3,Windows XP为Service Pack1)。(2)ICETEK-VC5509-A-USB-EDU试验箱一台。三、相关原理三、相关原理1EMIF接口接口TMS320C5509DSP的扩展存储器接口(EMIF)用来与大多数外围设备进行连接,典型应用如连接片外扩展存储器等。这一接口提供
36、地址连线、数据连线和一组控制线。ICETEK-VC5509-A将这些扩展线引到了板上的扩展插座上供扩展使用。2发光二极管显示阵列扩展原理发光二极管显示阵列扩展原理发光二极管显示阵列的显示由扩展端口控制,扩展在EMIF 接口的两个寄存器提供具体控制。扩展原理图如图6-16所示。图6-16 发光二极管显示阵列扩展原理图3显示原理显示原理DSP需将显示的图形按列的顺序存储起来(88点阵,8个字节,高位在下方,低位在上方),然后定时刷新控制显示。具体方法是,将以下控制字按先后顺序、每两个为一组发送到端口0 x602802,发送完毕后,隔不太长的时间(人眼观察不闪烁的时间间隔)再发送一遍。由于位值为“0
37、”时点亮,所以需要将显示的数据取反。0 x01,第8列数据取反;0 x02,第7列数据取反;0 x04,第6列数据取反;0 x08,第5列数据取反;0 x10,第4列数据取反;0 x20,第3列数据取反;0 x40,第2列数据取反;0 x80,第1列数据取反。4程序流程图程序流程图程序流程图如图6-17所示。图6-17 程序流程图四、任务步骤四、任务步骤(1)准备 设置CCS 2.21在硬件仿真(Emulator)方式下运行。启动CCS 2.21,选择菜单DebugReset CPU。(2)打开工程文件,浏览main.c文件的内容,理解各语句作用。(3)编译、下载程序。(4)运行程序,观察结果
38、。(5)结束程序运行,退出CCS。五、结果五、结果结果:可以观察到发光二极管阵列显示从0 到9 的计数。分析:本程序使用循环延时的方法,如果想实现较为精确的定时,可使用通用计时器,在通用计时器中断中取得延时,改变显示内容。另外本程序中DSP 一直在做刷新显示的工作,如果使用通用计时器定时刷新显示,将能减少DSP 用于显示的操作。适当更新显示可取得动画效果。六、问题与思考六、问题与思考(1)试设计用定时器定时刷新的程序,并显示秒计数的最低位。(2)本任务的头文件是如何对LED显示阵列进行设置的。一、任务目的一、任务目的(1)学习用C语言编制中断程序,控制VC5509 DSP的通用I/O管脚产生不
39、同占空比的PWM信号。(2)学习VC5509DSP的通用I/O管脚的控制方法。(3)学习直流电机的控制原理和控制方法。任务任务13 直流电机的控制直流电机的控制二、所需设备二、所需设备(1)PC兼容机一台,操作系统为Windows 2000(或Windows NT、Windows 98、Windows XP,以下假定操作系统为Windows 2000)。Windows操作系统的内核如果是NT的应该安装相应的补丁程序(如:Windows 2000为Service Pack3,Windows XP为Service Pack1)。(2)ICETEK-VC5509-A-USB-EDU试验箱一台。三、引
40、脚设置相关原理三、引脚设置相关原理1引脚设置引脚设置TMS320VC5509DSP 的McBSP 引脚通过设置McBSP 的工作方式和状态,可以实现将它们当成通用I/O 引脚使用。2直流电机控制直流电机控制直流电动机是最早出现的电动机,也是最早能实现调速的电动机。近年来,直流电动机的结构和控制方式都发生了很大的变化。随着计算机进入控制领域,以及新型的电力电子功率元器件的不断出现,使采用全控型的开关功率元件进行脉宽调制(Puls Width Modulation,PWM)控制方式已成为绝对主流。1)PWM调压调速原理直流电动机转速n的表达式为:其中,U为电枢端电压;I为电枢电流;R为电枢电路总电
41、阻;为每极磁通量;K为电动机结构参数。KIRUn直流电动机的转速控制方法可分为两类:对励磁磁通进行控制的励磁控制法和对电枢电压进行控制的电枢控制法。其中励磁控制法在低速时受磁极饱和的限制,在高速时受换向火花和换向器结构强度的限制,并且励磁线圈电感较大,动态响应较差,所以这种控制方法用得很少。现在,大多数应用场合都使用电枢控制法。绝大多数直流电机采用开关驱动方式。开关驱动方式是使半导体功率器件工作在开关状态,通过脉宽调制PWM来控制电动机的电枢电压,实现调速。图6-18是利用开关管对直流电动机进行PWM调速控制的原理图和输入、输出电压波形。图6-18 PWM调速控制原理图图中,当开关管MOSFE
42、T的栅极输入高电平时,开关管导通,直流电动机电枢绕组两端有电压Us。t1秒后,栅极输入变为低电平,开关管截止,电动机电枢两端电压为0。t2秒后,栅极输入重新变为高电平,开关管的动作重复前面的过程。这样,对应着输入的电平高低,直流电动机电枢绕组两端的电压波形如图6-18中所示。电动机的电枢绕组两端的电压平均值Uo为ss121s1o0UUTtttUtU式中为占空比,=t/T。占空比表示了在一个周期T里,开关管导通的时间与周期的比值。的变化范围为01。由此式可知,在电源电压Us不变的情况下,电枢的端电压的平均值Uo取决于占空比的大小,改变值就可以改变端电压的平均值,从而达到调速的目的,这就是PWM调
43、速原理。2)PWM调速方法在PWM调速时,占空比是一个重要参数。以下3种方法都可以改变占空比的值:定宽调频法:这种方法是保持t1不变,只改变t2,这样使周期T(或频率)也随之改变。调宽调频法:这种方法是保持t2不变,只改变t1,这样使周期T(或频率)也随之改变。定频调宽法:这种方法是使周期T(或频率)保持不变,而改变t1和t2。前两种方法由于在调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因此这两种方法用得很少。目前,在直流电动机的控制中,主要使用定频调宽法。3ICETEK-CTR 直流电机模块直流电机模块1)原理图ICETEK-CTR,即显示/控
44、制模块上直流电机控制部分的原理图如图6-19所示。图6-19中PWM 输入对应ICETEK-VC5509-A板上P4外扩插座第26引脚的S22信号,DSP将在此引脚上给出PWM信号用来控制直流电机的转速;图6-19中的DIR输入对应ICETEK-VC5509-A板上P4外扩插座第29引脚的S14信号,DSP将在此引脚上给出高电平或低电平来控制直流电机的方向。从DSP输出的PWM信号和转向信号先经过2个与门和1个非门再与各个开关管的栅极相连。图6-19 直流电机控制部分原理图2)控制原理当电动机要求正转时,S14给出高电平信号,该信号分成3路:第1路接与门Y1的输入端,使与门Y1的输出由PWM决
45、定,所以开关管V1栅极受PWM控制;第2路直接与开关管V4的栅极相连,使V4导通;第3路经非门F1连接到与门Y2的输入端,使与门Y2输出为0,这样使开关管V3截止;从非门F1输出的另一路与开关管V2的栅极相连,其低电平信号也使V2截止。同样,当电动机要求反转时,S14给出低电平信号,经过2个与门和1个非门组成的逻辑电路后,使开关管V3受PWM 信号控制,V2导通,V1、V4全部截止。4程序编制程序编制程序中采用定时器中断产生固定频率的PWM波,100次中断为一个周期,在每个中断中根据当前占空比判断应输出波形的高低电平。主程序用轮询方式读入键盘输入,得到转速和方向控制命令。在改变电机方向时为减少
46、电压和电流的波动采用先减速再反转的控制顺序。5程序流程图程序流程图程序流程图如图6-20所示。图6-20 程序流程图四、任务步骤四、任务步骤(1)准备。设置CCS 2.21在硬件仿真(Emulator)方式下运行。启动CCS 2.21。(2)打开工程文件,浏览main.c文件的内容,理解各语句作用。(3)编译并下载程序。(4)运行并观察程序运行结果。开始运行程序后,电机以中等速度转动(占空比=60,转速=2)。在小键盘上按数字15键将分别控制电机从低速到高速转动(转速=15)。在小键盘上按+或-键切换电机的转动方向。如果程序退出或中断时电机不停止转动,可以将控制ICETEK-CTR模块的电源开
47、关关闭再开启一次。有时键盘控制不是非常灵敏,这是因为程序采用了轮询方式读键盘输入的结果,这时可以多按几次按键。(5)结束程序运行。在小键盘上按“Enter”键停止电机转动并退出程序。(6)退出CCS。五、结果五、结果直流电机受控改变转速和方向。六、问题与思考六、问题与思考电动机是一个电磁干扰源。电动机的启停还会影响电网电压的波动,其周围的电器开关也会引发火花干扰。因此,除了采用必要的隔离、屏蔽和电路板合理布线等措施外,看门狗的功能就会显得格外重要。看门狗在工作时不断地监视程序运行的情况,一旦程序“跑飞”,会立刻使DSP复位。请查阅T1相关手册,在本项目程序中使用看门狗定时器来监视程序的运行状况
48、。6.3.1 URAT简介简介UART是Universal Asynchronous Receiver/Transmitter的缩写,也就是通用异步收发器。它把从外部设备接收的串行数据转换成并行数据,以及把从CPU接收到的并行数据转换成串行数据。UART发送或接收的数据帧结构如图6-21所示。6.3 通用异步接收通用异步接收/发送器发送器图6-21 UART发送或接收的数据帧结构一般UART有以下要求:数据位长度可变,可以有5,6,7或8个数据位;停止位数可变,可以有1,1.5或2个停止位;波特率可编程;产生校验位,发送时,UART应能根据设定产生校验位;校验位检测,接收时,UART应能依据校
49、验位判断数据是否出错。6.3.2 TMS320C5509上上UART的实现的实现在C55X系列DSP中5501和5502有UART的外设,5509和5510没有。因此,对于5509来说要实现UART的功能只能通过其他途径,如软件实现或者外扩芯片等。下面介绍外扩芯片的方式。利用TL16C550C和MAX232分别实现协议转换和电平转换。增加专用UART接口的硬件框图如图6-22所示。图6-22 增加专用的UART的硬件接口原理图主机通过并行方式访问TL16C550C的寄存器,寄存器的设定将控制其内部的控制逻辑模块,实现对其工作方式的设定(如波特率、校验位等),同时,访问寄存器也可以实现对数据的操
50、作(读取和写入数据)。RS-232串行通信数据接口可大致分为三部分;接收模块、发送模块和Modem控制逻辑。接收模块将从Sin引脚输入的串行数据,按照规定格式取出其数据部分并作校验,数据接收部分被送入接收寄存器或接收FIFO中,校验的结果反映在状态位上;发送模块将发送寄存器或发送FIFO中的数据按照规定格式加入起始位、停止位和校验位,并以RS-232的串行方式发送至Sout引脚;Modem控制逻辑通过接收和发送引脚信号,实现对收发操作的控制。对DSP而言,TL16C550C是一系列寄存器,它们映射在I/O空间中,通过译码电路使它的起始地址为0 x4000,那么对其操作即是对其某段地址的I/O进