版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 C55x的片上外设,时钟发生器 通用定时器 通用I/O口(GPIO) 外部存储器接口(EMIF) 多通道缓冲串口(McBSP) 模数转换器(ADC) 看门狗定时器(Watchdog) I2C模块,8.1 时钟发生器,时钟发生器概况 时钟工作模式 CLKOUT输出 使用要点,8.1.1 时钟发生器概况,作用:从CLKIN引脚接收输入时钟信号,将其变换为CPU及其外设所需要的工作时钟。,工作时钟经过分频通过引脚CLKOUT输出,可供其他器件使用,时钟发生器内有一个数字锁相环(DPLL)和一个时钟模式寄存器(CLKMD),8.1.2 时钟工作模式,时钟发生器有三种工作模式: 旁路模式(BYP
2、ASS) 锁定模式(LOCK) Idle模式 时钟模式寄存器(CLKMD)中的PLL ENABLE位控制旁路模式和锁定模式 可以通过关闭CLKGEN Idle模块使时钟发生器工作在Idle模式。,1旁路模式(BYPASS),如果PLL ENABLE=0,PLL工作于旁路模式,PLL对输入时钟信号进行分频。 分频值由BYPASS DIV确定: 如果BYPASSDIV=00,输出时钟信号的频率与输入信号的频率相同,即1分频 如果BYPASSDIV=01,输出时钟信号的频率是输入信号的1/2,即2分频 如果BYPASSDIV=1x,输出时钟信号的频率是输入信号的1/4,即4分频,2.锁定模式(LOC
3、K),如果PLL ENABLE=1,PLL工作于锁定模式。 输出的时钟频率由下面公式确定:,3. Idle模式,为了降低功耗,可以加载Idle配置,使DSP的时钟发生器进入Idle模式 当时钟发生器处于Idle模式时,输出时钟停止,引脚被拉为高电平。,表8-1 时钟模式寄存器CLKMD,8.1.3 时钟模式寄存器CLKMD,时钟模式寄存器CLKMD位于IO空间,地址为:1c00h,表8-1 时钟模式寄存器CLKMD(续),8.1.4 CLKOUT输出,CPU时钟可以通过一个时钟分频器对外提供CLKOUT信号 CLKOUT的频率由系统寄存器(SYSR)中的CLKDIV确定 SYSR地址:07fd
4、h, CLKDIV位于其最低3位。 当CLKDIV=000b时,CLKOUT的频率等于CPU时钟频率 当CLKDIV=001b时,CLKOUT的频率等于CPU时钟频率的1/2 当CLKDIV=010b时,CLKOUT的频率等于CPU时钟频率的1/3 当CLKDIV=011b时,CLKOUT的频率等于CPU时钟频率的1/4 当CLKDIV=100b时,CLKOUT的频率等于CPU时钟频率的1/5 当CLKDIV=101b时,CLKOUT的频率等于CPU时钟频率的1/6 当CLKDIV=110b时,CLKOUT的频率等于CPU时钟频率的1/7 当CLKDIV=111b时,CLKOUT的频率等于CP
5、U时钟频率的1/8,8.1.5 使用要点,通过对时钟模式寄存器(CLKMD)的操作,可以根据需要设定时钟发生器的工作模式和输出频率。 在设置过程中除了工作模式、分频值和倍频值以外,还要注意其他因素对PLL的影响。,1.省电(Idle),为了减少功耗,可以使时钟发生器处于省电状态 当时钟发生器退出省电状态时,PLL自动切换到旁路模式,进行跟踪锁定,锁定后返回到锁定模式 时钟模式寄存器与省电有关的位是IAI IAI =0: PLL将使用与进入Idle状态之前相同的设置进行锁定; IAI =1:PLL将重新锁定过程,2.DSP复位,在DSP复位期间和复位之后,PLL工作于旁路模式,输出的时钟频率由C
6、LKMD引脚上的电平确定 如果CLKMD引脚为低电平,则输出频率等于输入频率 如果CLKMD引脚为高电平,则输出频率等于输入频率的1/2。,注意:5509A无CLKMD引脚!,3.失锁,锁相环对输入时钟跟踪锁定之后,可能会由于其他原因使其输出时钟发生偏移,导致失锁。 出现失锁现象后,PLL的动作由时钟模式寄存器中的IOB确定 IOB=0: 时钟发生器不中断PLL,PLL继续输出时钟 IOB=1: 时钟发生器切换到旁路模式,重新开始PLL锁相过程,例8-1,TMS320VC5509A系统的晶体振荡器频率为12MHz。通过设置DPLL,使系统时钟时钟频率为144MHz。 (1)原理: 使DPLL工
7、作在锁定模式:D4(PLL ENABLE)=1b。,即:,取PLL DIV=0,PLL MULT=12,即: D6D5(PLL DIV)=00b,D11D7(PLL MULT)=12=01100b。 时钟模式寄存器(CLKMD)的其它位均取为0。,(2)汇编语言实现: mov #0000 01100 00 1 0000b,port(#1c00h) 或 mov #0610h,port(#1c00h) ; 1c00h为时钟模式寄存器(CLKMD)的地址。,(3)C语言实现:,ioport unsigned int *clkmd; clkmd=(unsigned int *)0 x1c00; *cl
8、kmd =0 x0610;,(4)使用csl实现:,#include csl_pll.h; PLL_Config Config_PLL= 0,/*iai*/ 0,/*iob*/ 12, /* pllmult */ 0 /* div */ ,PLL_config(,在头文件中进行配置,在头文件中需要包含该库文件,在C程序(通常在初始化部分)中执行该函数,完成对DPLL的设置,也可利用PLL_setFreq (Uint16 mul, Uint16 div)函数直接设置DPLL,8.2 通用定时器,定时器概况 工作原理 定时器使用要点 定时器应用实例,8.2.1 定时器概况,C55x 芯片提供了两个
9、20位的定时器 定时器由两部分组成: 预定标计数寄存器(PSC), 4位 主计数器(TIM), 16位 寄存器: 计数寄存器(PSC,TIM) 周期寄存器(TDDR,PRD):在定时器初始化或定时值重新装入过程中,将周期寄存器的内容复制到计数寄存器中,定时器结构框图,8.2.2 工作原理,定时器的工作时钟 DSP内部的CPU时钟 引脚TIN/TOUT 利用定时器控制寄存器(TCR)中的字段FUNC可以确定时钟源和TIN/TOUT引脚的功能,定时器包括4个寄存器 定时器预定标寄存器PRSC,表8-2 主计数寄存器TIM,表8-3 主周期寄存器PRD, 表8-4 定时器控制寄存器TCR,表8-5,
10、定时原理 预定标计数寄存器(PSC)由输入时钟驱动,PSC在每个输入时钟周期减1,当其减到0时,TIM减1,当TIM减到0,定时器向CPU发送一个中断请求(TINT)或向DMA控制器发送同步事件 通过设置定时器控制寄存器(TCR)中的自动重装控制位ARB,可使定时器工作于自动重装模式。当TIM减到0,重新将周期寄存器(TDDR,PRD)的内容复制到计数寄存器(PSC,TIM)中,继续定时。 定时器发送中断信号或同步事件信号的频率可用下式计算:,表8-2 定时器预定标寄存器 PRSC,PRSC0地址为0 x1003, PRSC1地址为0 x2403,表8-3 主计数寄存器 TIM,表8-4 主周
11、期寄存器 PRD,PRD0地址为0 x1001,PRD1地址为0 x2401,TIM0地址为0 x1000,TIM1地址为0 x2400,表8-5 定时器控制寄存器 TCR,TCR0地址为0 x1002,TCR1地址为0 x2402,表8-5 定时器控制寄存器 TCR(续1),表8-5 定时器控制寄存器 TCR(续2),8.2.3 定时器使用要点,1.初始化定时器 (1)停止计时(TSS=1),使能定时器自动装载(TLB=1) (2)将预定标计数器周期数写入TDDR(以输入的时钟周期为基本单位) (3)将主计数器周期数装入PRD (4)关闭定时器自动装载(TLB=0),启动计时(TSS=0),
12、2.停止/启动定时器,利用时钟控制寄存器(TCR)中的TSS位可以停止(TSS=1)或启动定时器(TSS=0),3.DSP复位后定时器寄存器的值,停止定时(TSS=1) 预定标计数器值为0 主计数器值为FFFFh 定时器不进行自动重装(ARB=0) IDLE指令不能使定时器进入省电模式 仿真时遇到软件断点定时器立即停止工作 TIN/TOUT为高阻态,时钟源是内部时钟(FUNC=00b),8.2.4 定时器csl库函数,1. TIMER Configuration Structure,Structure TIMER_Config Members Uint16 tcr, /Timer Contro
13、l Register Uint16 prd, /Period Register Uint16 prsc /Timer Pre-scaler Register,Example TIMER_Config Config1 = 0 x0010, /* tcr */ 0 xFFFF, /* prd */ 0 xF0F0, /* prsc */ ;,2. TIMER_close Function Function void TIMER_close(TIMER_Handle hTimer); Arguments hTimer Device Handle Example TIMER_close(hTimer)
14、;,3. TIMER_config Function Function void TIMER_config(TIMER_Handle hTimer,TIMER_Config *Config); Example TIMER_Config MyConfig = 0 x0010, /* tcr */ 0 xFFFF, /* prd */ 0 xF0F0 /* prsc */ ; TIMER_config(hTimer,4. TIMER_getConfig Function Function void TIMER_getConfig(TIMER_Handle hTimer, TIMER_Config
15、*Config); Arguments Config: Pointer to an initialized TIMER configuration structure hTimer:Timer Device Handle Example TIMER_Config MyConfig; TIMER_getConfig(hTimer,5. TIMER_getEventId Function Function Uint16 TIMER_getEventId(TIMER_Handle hTimer); Return Value IRQ Event ID for the timer device Exam
16、ple Uint16 TimerEventId; TimerEventId = TIMER_getEventId(hTimer); IRQ_enable(TimerEventId);,6. TIMER_open Function Function TIMER_Handle TIMER_open(int devnum,Uint16 flags); Arguments Devnum:Timer Device Number, TIMER_DEV0, TIMER_DEV1,TIMER_DEV_ANY Flags:Event Flag Number, Logical open or TIMER_OPEN
17、_ RESET Example TIMER_Handle hTimer; . hTimer = TIMER_open(TIMER_DEV0,0);,7.TIMER_reset Function Function void TIMER_reset(TIMER_Handle hTimer); Description Resets the timer device. Disables and clears the interrupt event and sets the timer registers to default values. If INV (1) is specified, all t
18、imer devices are reset. Example TIMER_reset(hTimer);,8. TIMER_start Function Function void TIMER_start(TIMER_Handle hTimer); Description Starts the timer device running. TSS field =0. Example TIMER_start(hTimer);,9. TIMER_stop Function Function void TIMER_stop(TIMER_Handle hTimer); Description Stops
19、 the timer device running. TSS field =1. Example TIMER_stop(hTimer);,10. TIMER_tintoutCfg Function Function void TIMER_tintoutCfg(TIMER_Handle hTimer,Uint16 idleen, Uint16 func,Uint16 pwid,Uint16 cp,Uint16 polar); Arguments idleen: Timer idle mode; func: Function of the TIN/TOUT pin and the source o
20、f the timer module. pwid: TIN/TOUT pulse width cp: Clock or pulse mode polar: Polarity of the TIN/TOUT pin,Description Configures the TIN/TOUT pin of the device using the TCR register Example Timer_tintoutCfg(hTimer, 1, /*idleen*/ 1, /*funct*/ 0, /*pwid*/ 0, /*cp*/ 0 /*polar*/ );,例8-1,在TIN/TOUT引脚上产生
21、一个2MHz的时钟,假定DSP的CPU时钟为200MHz。,(1)要点: TIN/TOUT引脚配置为定时器输出,FUNC设置为01b 使该引脚工作在时钟模式,CP设置为1b TIN/TOUT的极性为默认的0b 由于每当计数器减为0时,引脚的电平就会翻转一次。在CPU时钟为200MHz的情况下,要求定时器计数为50 设置自动装入(ARB=1),使每次计数器减为0时,计时器自动装入计数值,并重新开始计数 置FREE bit 为1,使计时器在遇到仿真断点时能继续工作 将IDLEEN bit清0,使计时器即便在外设时钟模块处于idle状态下仍然工作,;* ;定时器寄存器地址 ;* TIM0 .set
22、0 x1000 ;TIMER0计数寄存器 PRD0 .set 0 x1001 ;TIMER0周期寄存器 TCR0 .set 0 x1002 ;TIMER0控制寄存器 PRSC0 .set 0 x1003 ;TIMER0预定标寄存器 ;* ;定时器配置 ;* TIMER_PERIOD .set 9;定时器的周期为10 TIMER_PRESCALE .set 4;预定标值为5 .text INIT: mov #TIMER_PERIOD,port(#PRD0);配置定时器周期寄存器 mov #TIMER_PRESCALE,port(#PRSC0);配置定时器预定标寄存器,(2)汇编语言代码:,;0E
23、RR_TIM 1=如果非法功能改变发生 ;01 FUNC 01=TIN/TOUT引脚是定时器输出 ;1TLB 1=从周期寄存器装入 ;0SOFT n/a ;1FREE 1=仿真暂停时,计数器不停 ;00 PWID n/a ;1 ARB 1=使能自动重装入 ;1 TSS 1=停止定时器 ;1 CP 0=脉冲模式,1=时钟(触发)模式 ;0 POLAR 0=正则极性 ;0 DATOUT n/a ;0 Rsvd and #1111101111101111b ,port(#TCR0) ;0 TLB 0=停止从周期寄存器装入 ;0 TSS 0=启动计时器,mov #0000110100111000b,p
24、ort(#TCR0) ;0IDLEEN 0=不和外设一起 idle ;0INTEST n/a,(3)C语言代码(调用csl),#include csl_timer.h; TIMER_Handle hTimer; TIMER_Config Config_TIMER= 0 x0d38,/TCR /*IDLE_EN=0,FUNC=01b,TLB=1,FREE=1,PWID=00b,ARB=1,TSS=1,C/P=1,POLAR=0,其它为0.*/ 0 x09,/*prd*/ 0 x04 /*prsc */ ,TIMER_config(hTimer,TIMER_start(hTimer);,TIMER
25、_stop(hTimer);,初始化定时器0,打开定时器0,关闭定时器0,8.3 通用I/O口(GPIO),通用输入输出引脚GPIO特点 每个引脚的方向可以由I/O方向寄存器IODIR独立配置 引脚上的输入/输出状态由I/O数据寄存器IODATA反映或设置 TMS320VC5509A PGE有7个GPIO引脚,8.3.1 GPIO概况,GPIO数据寄存器IODATA(地址:0 x3401),GPIO方向寄存器IODIR(地址:0 x3400),8.3.2 GPIO寄存器,8.3.3 GPIO引脚与上电引导模式,8.3.4 GPIO的csl库,GPIO_Config Structure GPIO
26、_Config Members Uint16 ioen: Pin Enable Register IOEN Uint16 iodir: Pin Direction Register IODIR,使用时需包含csl_gpio.h文件。,2. GPIO_close Function Function void GPIO_close(GPIO_Handle hGpio); Arguments hGpio:GPIO pin Handle Description Frees GPIO pins previously reserved in call to GPIO_open(). Example GPI
27、O_close(hGpio);,3. GPIO_open Function Function GPIO_Handle GPIO_open(Uint32 allocMask, Uint32 flags); Arguments allocMask:GPIO pins to reserve. For list of pins, please see GPIO_pinDirection(). Flags:Open flags, currently non defined. Return Value GPIO_Handle:Device handle,Example GPIO_Handle hGPIO;
28、 hGPio = GPIO_open(GPIO_PGPIO_PIN1,0);,4.GPIO_config Function Function void GPIO_config(GPIO_Handle hGpio,GPIO_Config cfg); Arguments hGpio:GPIO Device handle cfg:Pointer to an initialized configuration structure Example GPIO_Handle hGpio; GPIO_Config myConfig = GPIO_PIN1_OUTPUT | GPIO_PIN3_OUTPUT,5
29、. GPIO_pinDirection Function void GPIO_pinDirection(Uint32 pinMask,Uint16 direction);,Arguments pinMask: GPIO pins affected by direction,Direction: Mask used to set pin direction for pins selected in pinMask,Description Sets the direction for oneor more General purpose I/O pins (input or output) Exa
30、mple /* sets the pin pgpio1 as an input */ GPIO_handle hGpio = GPIO_open(GPIO_PGPIO_PIN1|GPIO_PGPIO_PIN15); GPIO_pinDirection(hGPio, GPIO_PGPIO_PIN1, GPIO_PGPIO_PIN1_INPUT);,6. GPIO_pinDisable Function Function: void GPIO_pinDisable(Uint32 pinId); Arguments pinID: IDs of the pins to disable. Descrip
31、tion Disables one or more pins as GPIO pins. Example /* disables pin pgpio1 as a GPIO pin */ GPIO_pinDisable (hGpio,GPIO_PGPIO_PIN1); /* disables parallel pin IO1 as GPIO */,7. GPIO_pinEnable Function Function void GPIO_pinEnable(Uint32 pinId) Description Enables a pin as a general purpose I/O pin.
32、Example GPIO_pinEnable (GPIO_GPIO_PIN1); /* enables pin IO1 as GPIO */,8. GPIO_pinRead Function Function int GPIO_pinRead(Uint32 pinId) Return Value Value Value read in GPIO pin (1 or 0) Description Reads the value in a general purpose input pin. Example int val; val = GPIO_pinRead (GPIO_GPIO_PIN1);
33、 /* reads IO1 pin value */,9. GPIO_pinWrite Function Function: void GPIO_pinWrite(Uint32 pinMask Uint16 val) Arguments pinMask:ID of one or more GPIO pins to write. Please see GPIO_pinDirection for a list of valid pin IDs. Val:Value (0 or 1) to write to selected GPIO pins. Description Writes a value
34、 to a general purpose output pin. Example /* writes 1 to IO pin0 and IO pin 5 */ GPIO_pinWrite (GPIO_GPIO_PIN0 | GPIO_GPIO_PIN5, 1);,10. GPIO_pinReset Function Function void GPIO_pinReset(GPIO_Handle hGpio, Uint32 pinMask) Arguments hGpio:GPIO Handle returned from previous call to GPIO_open(). pinMa
35、sk:ID of one or more GPIO pins to write. Please see GPIO_pinDirection for list of valid pin IDs. Description Restores selected GPIO pins to default value of 0. Example /* writes 1 to IO pin1 and IO pin 3 */ GPIO_pinReset (hGpio, GPIO_GPIO_PIN1 | GPIO_GPIO_PIN3);,8.4 外部存储器接口(EMIF),EMIF介绍 EMIF请求的优先级 对
36、存储器的考虑 程序和数据访问 EMIF中的控制寄存器 使用csl配置EMIF,8.4.1 EMIF介绍,EMIF控制DSP和外部存储器之间的所有数据传输,1. EMIF支持的存储器类型,EMIF为三种类型的存储器提供了无缝接口: 异步存储器,包括ROM、FLASH以及异步SRAM 同步突发SRAM(SBSRAM),可以工作在1倍或1/2倍CPU时钟频率 同步DRAM(SDRAM),可以工作在1倍或1/2倍CPU时钟频率 也可通过EMIF外接A/D转换器、并行显示接口等外围设备,程序的访问 32位数据的访问 16位数据的访问 8位数据的访问,2.EMIF支持四种类型的访问,3.EMIF信号,表8
37、-8 外部存储器共享接口,对于VC5509A,EMIF数据线为D15:0, 地址线为A13:0,BYTE使能控制线为BE1:0,指示所访问存储器的宽度,表8-9 用于异步存储器的EMIF信号,表8-10 用于SBSRAM的EMIF信号,表8-11总线保持信号,表8-12 用于SDRAM的EMIF信号,8.4.2 EMIF请求的优先级,8.4.3 对存储器的考虑,对EMIF编程时,必须了解: 外部存储器地址如何分配给片使能(CE)空间 每个CE空间可以同哪些类型的存储器连接 哪些寄存器位来配置CE空间,1. 存储器映射和CE空间,C55x的外部存储映射在存储空间的分布,相应于EMIF的片选使能信
38、号 例如, 空间里的一片存储器,必须将其片选引脚连接到EMIF的引脚。当EMIF 访问 空间时,就驱动 变低。,2. EMIF支持的存储器类型和访问类型,表8-14 存储器类型及每种存储器允许的访问类型,3. 配置CE空间,使用全局控制寄存器(EGCR)和每个CE空间控制寄存器来配置CE空间 对于每个CE空间,必须设置控制寄存器1中的以下域: MTYPE确定存储器类型 MEMFREQ决定存储器时钟信号的频率(1倍或1/2倍CPU时钟信号的频率) MEMCEN决定CLKMEM引脚是输出存储器时钟信号还是被拉成高电平,不管每个CE空间里的存储器类型,一定要对全局控制寄存器写如下控制位(这些位要影响
39、所有的CE空间): WPE:对所有的CE空间,使能或禁止写 NOHOLD: 对所有的CE空间,使能或禁止HOLD请求,8.4.4 程序和数据访问,1、程序存储器的访问,要从外部存储器取指令代码时,CPU向EMIF发送一个访问请求。EMIF必须从外部存储器读取一个32位代码,然后把这全部32个位放到CPU的程序读总线(P bus)上 EMIF可以管理对3种存储器宽度的32位访问:32位、16位、8位,访问16位宽的外部程序存储器,EMIF把一个字地址放到地址线A21:0上。 32位的访问可以分为两个16位的传输,在连续的两个周期内完成。在第二个周期,EMIF自动将第一个地址加1,产生第二个地址。
40、 先读取字1,再读取字0 BE3:2无效(高电平), BE1:0有效(低电平),A0不用,访问8位宽的外部程序存储器,EMIF把一个字节地址放到地址线A21:0上。 32位的访问可以分为4个8位的传输,在连续的4个周期内完成。在第2、3、4个周期,EMIF自动将第一个地址加1,产生下一个新的地址。,2、数据访问,EMIF支持的数据访问类型 对32位宽的数据存储器进行32、16、8位的数据访问 对16位宽的数据存储器进行16、8位的数据访问 本节介绍16位宽的存储器作16位的数据访问,图8-8 对16位宽的外部存储器所作的16位的数据访问,8.4.5 EMIF中的控制寄存器,表8-16 EMIF
41、 寄存器,8.5 多通道缓冲串口McBSP,McBSP概述 McBSP组成框图 采样率发生器 多通道模式选择 异常处理 McBSP寄存器,8.5.1 McBSP概述,McBSP(多通道缓冲串口,Multi-channel Buffered Serial Ports),可以与符合标准的外部设备和其它DSP器件相连。 McBSP的特点 全速双工通信。 双缓存发送,三缓存接收,支持传送连续的数据流。 独立的收发时钟信号和帧信号。 128个通道收发。,可与工业标准的编解码器、模拟接口芯片(AICs)及其他串行A/D、D/A芯片直接连接。 能够向CPU发送中断,向DMA控制器发送DMA事件。 具有可编程
42、的采样率发生器,可控制时钟和帧同步信号。 可选择帧同步脉冲和时钟信号的极性。 传输的字长可选,可以是8位、12位、16位、20位、24位或32位。 具有u律和A律压缩扩展功能。 可将McBSP引脚配置为通用输入输出引脚。,8.5.2 McBSP组成框图,McBSP包括一个数据通道和一个控制通道,通过7个引脚与外部设备连接。 数据发送引脚DX负责数据的发送 数据接收引脚DR负责数据的接收 发送时钟引脚CLKX、接收时钟引脚CLKR、发送帧同步引脚FSX和接收帧同步引脚FSR提供串行时钟和控制信号。,CPU和DMA控制器通过外设总线与McBSP进行通信 当发送数据时,CPU和DMA将数据写入数据发
43、送寄存器(DXR1,DXR2),接着复制到发送移位寄存器(XSR1,XSR2),通过发送移位寄存器输出至DX引脚。 当接收数据时,DR引脚上接收到的数据先移位到接收移位寄存器(RSR1,RSR2),接着复制到接收缓冲寄存器(RBR1,RBR2)中,RBR再将数据复制到数据接收寄存器(DRR1,DRR2)中,由CPU或DMA读取数据。,8.5.3 采样率发生器(SRG),CLKG可以作为DR引脚接收数据或DX引脚发送数据的时钟,用于产生内部数据时钟CLKG和内部帧同步信号FSG。,FSG控制DR和DX上的帧同步。,1输入时钟的选择,时钟源: CPU时钟 外部引脚CLKS、CLKX、CLKR 时钟
44、源的选择 引脚控制寄存器PCR中的SCLKME字段 采样率发生寄存器SRGR2中的CLKSM字段,2输入时钟信号极性的选择,SRGR2中的CLKSP字段 PCR中的CLKXP字段或CLKRP字段,3输出时钟信号频率的选择,输入的时钟经过分频产生SRG输出时钟CLKG 分频值由采样率发生寄存器SRGR1中的CLKGDV字段确定。,输出的最高时钟频率是输入时钟频率的1/2 当CLKGDV是奇数时,CLKG的占空比是50% 当CLKGDV是偶数2p时,CLKG高电平持续时间为p+1个输入时钟周期,低电平持续时间为p个输入时钟周期,4帧同步时钟信号频率和脉宽的选择,帧同步信号FSG由CLKG进一步分频
45、而来,分频值由采样率发生寄存器SRGR2中的FPER字段决定。,帧同步脉冲的宽度由采样率发生寄存器SRGR1中的FWID字段决定:,5同步,当采用外部时钟源时一般需要同步,同步由采样率发生寄存器SRGR2中的字段GSYNC控制。 当GSYNC=0时,SRG将自由运行,并按CLKGDV、FPER和FWID等参数的配置产生输出时钟 当GSYNC=1时,CLKG和FSG将同步到外部输入时钟。,8.5.4 多通道模式选择,1. 通道、块和分区,一个McBSP通道最多支持128个发送通道和128个接收通道。 无论是发送器还是接收器,128个通道都分为8块(Block),每块包括16个邻近的通道。 跟据所
46、选择的分区模式,各个块被分配给相应的区 如果选择2分区模式,则将偶数块(0、2、4、6)分配给区A,奇数块(1、3、5、7)分配给区B 如果选择8分区模式,则将块07分别自动地分配给区AH。,Block0:015通道; Block1:1631通道; Block2:3247通道; Block3:4863通道; Block4:6479通道; Block5:8095通道; Block6:96111通道; Block7:112127通道。,2.接收多通道选择,多通道控制寄存器MCR禁止或使能全部128个通道 接收使能寄存器RCER和发送使能寄存器XCER分别禁止或使能某个接收或发送通道 MCR1中的R
47、MCM位决定是所有通道用于接收,还是部分通道用于接收。 当RMCM=0,所有128个通道都用于接收 当RMCM=1,选择哪些接收通道由接收通道使能寄存器RCER确定。如果某个接收通道被禁止,在这个通道上接收的数据只传输到接收缓冲寄存器RBR中,并不复制到DRR,因此不会产生DMA同步事件。,3.发送多通道选择,发送多通道的选择由MCR2中的XMCM字段确定: 当XMCM=00b,所有128发送通道使能且不能被屏蔽。 当XMCM=01b,由发送使能寄存器XCER选择通道,如果某通道没有被选择,则该通道被禁止。 当XMCM=10b,由XCER寄存器禁止通道,如果某通道没有被禁止,则使能该通道。 当
48、XMCM=11b,所有通道被禁止使用,而只有当对应的接收通道使能寄存器RCER使能时,发送通道才被使能,当该发送通道使能时,由XCER寄存器决定该通道是否被屏蔽。,8.5.5 异常处理,有5个事件会导致McBSP异常错误: 接收数据溢出,此时SPCR1中的RFULL=1。 接收帧同步脉冲错误,此时SPCR1中的RSYNCERR=1。 发送数据重写,造成溢出。 发送寄存器空,此时SPCR2中的XEMPTY=0; 发送帧同步脉冲错误,此时SPCR2中的XSYNCERR=1。,1接收数据溢出,接收通道有三级缓冲RSR-RBR-DRR,当数据复制到DRR,设置RRDY;当DRR中的数据被读取,清除RR
49、DY。所以当RRDY=1,RBR-DRR的复制不会发生,数据保留在RSR,这时如果DR接收新的数据并移位到RSR,新数据就会覆盖RSR,使RSR中的数据丢失。 有两种方法可以避免数据丢失: 至少在第三个数据移入RSR前2.5个周期读取DRR中的数据。 利用DRR接收标志RRDY触发接收中断,使CPU或DMA能及时读取数据。,2接收帧同步信号错误,接收帧同步信号错误是指在当前数据帧的所有串行数据还未接收完时出现了帧同步信号。由于帧同步表示一帧的开始,所以出现帧同步时,接收器就会停止当前帧的接收,并重新开始下一帧的接收,从而造成当前帧数据的丢失。 为了避免接收帧同步错误造成的数据丢失,可以将接收控
50、制寄存器RCR2中的RFIG设置为1,让McBSP接收器忽略这些不期望出现的接收帧同步信号。,3发送数据重写,发送数据重写是指CPU或DMA在DXR中的数据复制到XSR之前,向DXR写入了新的数据,DXR中旧的数据被覆盖而丢失。 为了避免CPU写入太快而造成数据覆盖,可以让CPU在写DXR之前,先查询发送标志XRDY,检查DXR是否就绪,或者由XRDY触发发送中断,然后写入DXR。为了避免DMA写入太快,可以让DMA与发送事件XEVT同步,即由XRDY触发XEVT,然后DMA控制器将数据写入DXR。,4发送寄存器空,与发送数据重写相对应,发送寄存器空是由于CPU或DMA写入太慢,使得发送帧同步
51、出现时,DXR还未写与入新值,这样XSR中的值就会不断重发,直到DXR写入新值为止。 为了避免数据重发,可以由XRDY触发对CPU中断或DMA同步事件,然后将新值写入DXR。,5发送帧同步脉冲错误,发送帧同步错误是指在当前帧的数据还未发送完之前,出现了发送帧同步信号。导致发送器终止当前帧的发送,并重新开始下一帧的发送。 为了避免发送帧同步错误,可以将发送控制寄存器XCR2中的XFIG设置为1,让发送器忽略这些不期望的发送帧同步信号。,8.5.6 McBSP寄存器,数据接收寄存器(DRR2和DRR1) 数据发送寄存器(DXR2和DXR1) 串口控制寄存器(SPCR1和SPCR2) 接收控制寄存器
52、(RCR1和RCR2)和发送控制寄存器(XCR1和XCR2) 采样率发生寄存器(SRGR1和SRGR2) 引脚控制寄存器(PCR) 多通道控制寄存器(MCR1和MCR2) 收发通道使能寄存器,1数据接收寄存器(DRR2和DRR1),CPU或DMA控制器从DRR2和DRR1读取接收数据 当字长等于或小于16位,只使用DRR1 当字长超过16位,DRR1存放低16位,DRR2存放其余数据位。 如果串行字长不超过16位,DR引脚上的接收数据移位到RSR1,然后复制到RBR1。RBR1的数据再复制到DRR1。 如果串行字长超过16位,DR引脚上的接收数据移位到RSR2和RSR1,然后复制到RBR2、R
53、BR1。RBR2、RBR1的数据再复制到DRR2、DRR1。,从RBR1复制到DRR1的过程中 如果使用压缩扩展(RCOMPAND=10b或11b),RBR1中的8位压缩数据扩展为16位校验数据 如果未使用压缩扩展,RBR1、RBR2根据RJUST的设置,将数据填充后送到DRR1、DRR2。,2数据发送寄存器(DXR2和DXR1),发送数据时,CPU或DMA控制器向DXR2和DXR1写入发送数据 当字长等于或小于16位,只使用DXR1 当字长超过16位,DXR1存放低16位,DXR2存放其余数据位。 如果串行字长不超过16位,CPU或DMA控制器写到DXR1上的数据,复制到RSR1。RSR1的
54、数据再复制到XSR1。然后,每个周期移走1位数据到DX引脚。,如果串行字长超过16位,CPU或DMA控制器写到DXR2、DXR1上的数据,复制到复制到XSR2、XSR1。然后移到DX引脚。 从DXR1复制XSR1的过程中 如果使用压缩扩展(XCOMPAND=10b或11b),DXR1中的16位数据压缩为8位律或A律数据后,送到XSR1 如果未使用压缩扩展,DXR1数据直接复制到XSR1。,3串口控制寄存器(SPCR1和SPCR2),表8-22 串口控制寄存器SPCR1,表8-23 串口控制寄存器SPCR2,4.接收控制寄存器(RCR1和RCR2)和发送控制寄存器(XCR1和XCR2),表8-2
55、4 接收(发送)控制寄存器R(X)CR1,表8-25 接收(发送)控制寄存器R(X)CR2,5.采样率发生寄存器(SRGR1和SRGR2),表8-26 采样率发生器SRGR1,表8-27 采样率发生器SRGR2,6. 引脚控制寄存器(PCR),表8-28 引脚控制寄存器PCR(1),表8-28 引脚控制寄存器PCR(2),7. 多通道控制寄存器(MCR1和MCR2),表8-29 多通道控制寄存器MCR1,表8-30 多通道控制寄存器MCR2,8. 收发通道使能寄存器,图8-11 接收通道使能寄存器(RCERARCERH),图8-12 发送通道使能寄存器(XCERAXCERH),8.6 模数转换
56、器(ADC),在数字信号处理器的具体应用中,往往需要采集一些模拟信号量,如电池电压、面板旋钮输入值等,模数转换器就是用来将这些模拟量转化为数字量来供DSP使用。 本节主要介绍TMS320VC5509A内部集成的10位的连续逼近式模数转换器(ADC)。,8.6.1 ADC的结构和时序,图8-14 ADC转换时序图,下面的公式,表示ADC可编程时钟分频器之间的关系: ADC时钟 = (CPU时钟) / (CPUCLKDIV +1) ADC 转换时钟 = (ADC时钟) /(2(CONVRATEDIV +1) (必须等于或小于2MHZ) ADC采样保持时间 = (1/ (ADC时) /(2CONVR
57、ATEDIV +1+SAMPTIMEDIV)(必须大于等于40)。 ADC总转换时间 = ADC采样保持时间+ (13(1/( ADC 转换时钟),ADC不能工作于连续模式下。 每次开始转换前,DSP必须把ADC控制寄存器(ADCCTL)的ADCSTART位置1,以启动模数转换器转换。 当开始转换后,DSP必须通过查询ADC数据寄存器(ADCDATA)的ADCBUSY位来确定采样是否结束。 当ADCBUSY位从1变为0时,标志转换完成,采样数据已经被存放在数模转换器的数据寄存器中。,8.6.2 ADC的寄存器,ADC的寄存器包括控制寄存器(ADCCTL)、数据寄存器(ADCDATA)、时钟分频
58、寄存器(ADCCLKDIV)和时钟控制寄存器(ADCCLKCTL)。 TMS320VC5509A的有关寄存器分别于表8-28至表8-31。,表8-31 ADC控制寄存器ADCCTL,表8-32 ADC数据寄存器ADCDATA,表8-33 ADC时钟分频寄存器ADCCLKDIV,表8-34 ADC时钟控制寄存器ADCCLKCTL,8.6.3 实例,下边给出一个设置ADC的例子,设DSP系统时钟为144MHz。 (1)首先对系统主时钟分频,产生ADC时钟,该时钟应尽量运行在较低频率下,以降低功率消耗,在本例中ADC时钟是通过对系统时钟36分频产生的,则此时ADC时钟=144MHz/36=4MHz,
59、根据公式 ADC时钟=(CPU时钟)/ (CPUCLKDIV+1) 得出 CPUCLKDIV =35,(2)对ADC时钟分频产生ADC 转换时钟,该时钟最大值为2MHz。为了获得2MHz的ADC 转换时钟,需要对ADC时钟2分频。 由 ADC 转换时钟=ADC时钟/(2(CONVRATEDIV+1) 得出 CONVRATEDIV=0, 以及 ADC 转换时间 = 131/ (ADC转换时钟)= 13(1/ 2MHz)=6.5us。,(3)对采样和保持时间进行设置,这个值必须大于40。 ADC采样保持时间 =(1/(ADC时钟))/(2(CONVRATEDIV+1+SAMPTIMEDIV) = (1/(4MHZ)/(2(0+1+SAMPTIMEDIV) = 250NS(2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 污水处理系统故障排查方案
- 工地施工安全考核方案
- 产品创新研发管理方案
- 集中式饮用水水源地水质保护工程技术方案
- 我国互联网金融风险问题研究
- 妇女节主题班会
- 渠道订单处理管理方案
- 2026年量子计算行业创新报告及科技前沿分析报告
- 中国必需消费行业全球啤酒变革启示:中国的三大战略进阶
- 人工智能教育中虚拟现实技术的融合创新与应用前景分析教学研究课题报告
- 七下综合世界真奇妙-共享“地球村”
- 文学批评导引PPT全套教学课件
- 财务部门廉洁风险点及防控措施(通用7篇)
- 2023年湖南九嶷职业技术学院单招职业适应性测试题库及答案解析
- 2023年高考天津化学试题(含答案解析)
- 去极端化课件
- GB/T 6188-2017螺栓和螺钉用内六角花形
- 商业插画设计全套精美课件
- 基层管理知识培训课件
- BIM技术及BIM施工项目管理课件全套
- 二、干混砂浆分类及与预拌砂浆对比分析
评论
0/150
提交评论