n http course sdu edu cnG 2 Sdsp

  • Slides: 189
Download presentation

任课教师: 刘忠国 n网站: http: //course. sdu. edu. cn/G 2 S/dsp. cc http: //www. ti.

任课教师: 刘忠国 n网站: http: //course. sdu. edu. cn/G 2 S/dsp. cc http: //www. ti. com n n TMS 320 C 55 x DSP Peripherals Overview User‘s Guide (SPRU 317 K): 能查到各外设的使用手册名称及文档号; TMS 320 C 55 x DSP CPU Reference Guide (SPRU 371 F, 2004 年版) n TMS 320 VC 5509 A Fixed-Point Digital Signal Processor-Data Manual (SPRS 205 K, 2008年版) n TMS 320 VC 5503/5507/5509/5510 DSP Timers Reference Guide (SPRU 595 C) n TMS 320 VC 5503/5507/5509 DSP External Memory Interface (EMIF) Reference Guide (SPRU 670) n TMS 320 VC 5510 DSP External Memory Interface (EMIF) n 2

任课教师: 刘忠国 n网站: http: //course. sdu. edu. cn/G 2 S/dsp. cc http: //www. ti.

任课教师: 刘忠国 n网站: http: //course. sdu. edu. cn/G 2 S/dsp. cc http: //www. ti. com n TMS 320 C 55 x DSP Peripherals Overview User's Guide (SPRU 317 K): 能查到各外设的使用手册名称及文档号; n TMS 320 VC 5501/5502/5503/5507/5509/5510 DSP Multichannel Buffered Serial Port (Mc. BSP) Reference Guide (SPRU 592 E) n TMS 320 VC 5507/5509 DSP Analog-to-Digital Converter (ADC) Reference Guide (SPRU 586 B) n TMS 320 VC 5501/5502/5503/5507/5509 DSP Inter. Integrated Circuit (I 2 C) Module Reference Guide (SPRU 146 D) n TMS 320 C 55 x Chip Support Library API Reference Guide n 3

第 8章 C 55 x的片上外设 n 8. 1时钟发生器 (SPRU 317 K) n 8. 2通用定时器

第 8章 C 55 x的片上外设 n 8. 1时钟发生器 (SPRU 317 K) n 8. 2通用定时器 (SPRU 595 C) n 8. 3通用I/O口(GPIO) [DSP各型号手册(5509 A: SPRS 205 K)] n 8. 4外部存储器接口(EMIF) (SPRU 670 A, SPRU 590) n 8. 5多通道缓冲串口(Mc. BSP) (SPRU 592 E) n 8. 6模数转换器(ADC) (SPRU 586 B) n 8. 7看门狗定时器(Watchdog) (SPRU 595 C) n 8. 8 I 2 C模块 (SPRU 146 D) n 8. 9片上支持库(CSL) (SPRU 433 A(J)) 查阅各外设使用手册: TMS 320 C 55 x DSP Peripherals Overview User's 4 Guide (SPRU 317 K)

8. 1 时钟发生器 n 8. 1. 1 时钟发生器概况 n 8. 1. 2 时钟 作模式

8. 1 时钟发生器 n 8. 1. 1 时钟发生器概况 n 8. 1. 2 时钟 作模式 n 8. 1. 3 CLKOUT输出 n 8. 1. 4 使用要点 参考手册: TMS 320 C 55 x DSP Peripherals Overview User's Guide (SPRU 317 K) 5

8. 1. 2 时钟 作模式 l时钟发生器有三种 作模式: PLL ENABLE=0 旁路模式(BYPASS) PLL ENABLE=1 u 锁定模式(LOCK)

8. 1. 2 时钟 作模式 l时钟发生器有三种 作模式: PLL ENABLE=0 旁路模式(BYPASS) PLL ENABLE=1 u 锁定模式(LOCK) u Idle模式 l时钟模式寄存器(CLKMD)中的PLL ENABLE位控制旁 路模式和锁定模式 l可通过关闭CLKGEN Idle模块(ICR的CLKGENI=1)使 时钟发生器 作在Idle模式。 Idle Configuration Register (ICR)Idle Status Register (ISTR) u S S S 7

8. 1. 4 CLKOUT输出 16 bit system register (SYSR) is located at port address

8. 1. 4 CLKOUT输出 16 bit system register (SYSR) is located at port address 07 FDh, D 3 -D 15 is reser l. CPU时钟可通过时钟分频器对外提供CLKOUT信号; l. CLKOUT的频率由系统寄存器(SYSR)中CLKDIV确定; l. SYSR地址: 07 fdh, CLKDIV位于其最低3位。 Ø Ø Ø Ø 当CLKDIV=000 b时, CLKOUT的频率等于CPU时钟频率; 当CLKDIV=001 b时, CLKOUT频率等于CPU时钟频率的1/2; 当CLKDIV=010 b时, CLKOUT频率等于CPU时钟频率的1/3; 当CLKDIV=011 b时, CLKOUT频率等于CPU时钟频率的1/4; 当CLKDIV=100 b时, CLKOUT频率等于CPU时钟频率的1/5; 当CLKDIV=101 b时, CLKOUT频率等于CPU时钟频率的1/6; 当CLKDIV=110 b时, CLKOUT频率等于CPU时钟频率的1/7; 当CLKDIV=111 b时, CLKOUT频率等于CPU时钟频率的1/8; 12

例8 -1, TMS 320 VC 5509 A系� 的晶体振� 器� 率� 12 MHz。 通�� 置DPLL,

例8 -1, TMS 320 VC 5509 A系� 的晶体振� 器� 率� 12 MHz。 通�� 置DPLL, 使系������ 率� 144 MHz。 (1)原理: 使DPLL 作在� 定模式: D 4(PLL ENABLE)=1 b。 即: 取PLL DIV=0, PLL MULT=12, 即寄存器CLKMD的位 : D 6 D 5(PLL DIV)=00 b, D 11~D 7(PLL MULT)=12=01100 b; �� 模式寄存器(CLKMD)的其它位均取� 0。 (2)汇编语言实现: MOV #0000 0110 0001 0000 b, port(#1 c 00 h) 或MOV #0610 h, port(#1 c 00 h) ; 1 c 00 h为时钟模式寄存器(CLKMD)的地址。 17

(3) C语言实现: ioport unsigned int *clkmd; clkmd=(unsigned int *)0 x 1 c 00; CSL安装程序:

(3) C语言实现: ioport unsigned int *clkmd; clkmd=(unsigned int *)0 x 1 c 00; CSL安装程序: TMS 320 C 55 x Chip *clkmd =0 x 0610; 在头文件中需要 Support Library (4) 使用csl实现: 包含该库文件 (SPRC 133) #include csl_pll. h; CSL使用参考文献: PLL_Config_PLL={ TMS 320 C 55 x Chip 0, /*iai*/ Support Library API 0, /*iob*/ 在头文件中 Reference Guide (SPRU 433 J, A) 进行配置 12, /*pllmult*/ 0 /*div */ 在C程序(通常在初始化部分)中执 } 行该函数, 完成对DPLL的设置 PLL_config(&Config_PLL); 也可用PLL_set. Freq (Uint 16 mul, Uint 16 div)函数直接设 18

8. 2 通用定时器 n 8. 2. 1 定时器概况 n 8. 2. 2 作原理 n

8. 2 通用定时器 n 8. 2. 1 定时器概况 n 8. 2. 2 作原理 n 8. 2. 3 定时器使用要点 n 8. 2. 4 定时器应用实例 参考: TMS 320 VC 5503 -5507 -5509 -5510 DSP Timers Reference Guide(SPRU 595 C) 19

(3) C语言代码(调用csl) 在头文件中包含csl_timer. h文件 在头文件中定义句柄(此句柄是打开 #include csl_timer. h; TIMER_Handle h. Timer; 定时器设备文件时产生的, 且唯一) 在头文件中

(3) C语言代码(调用csl) 在头文件中包含csl_timer. h文件 在头文件中定义句柄(此句柄是打开 #include csl_timer. h; TIMER_Handle h. Timer; 定时器设备文件时产生的, 且唯一) 在头文件中 TIMER_Config_TIMER={ 配置结构体 0 x 0 d 38, //TCR /*IDLE_EN=0, FUNC=01 b, TLB=1, FREE=1, PWID=00 b, ARB=1, TSS=1, C/P=1, POLAR=0, 其它为 0. */ 0 x 09, /*prd*/ 初始化定时器 0, 0 x 04 /*prsc */ 将定义在结构体 打开定时器 0 中的定时器参数 } h. Timer = TIMER_open(TIMER_DEV 0, 0); 写入句柄为 h. Timer的定时器。 TIMER_config(h. Timer, &Config_TIMER) TIMER_start(h. Timer); …… TIMER_stop(h. Timer); 启动定时器 0运行 停止定时器 0运行 34

8. 3 通用I/O口(GPIO) 8. 3. 1 GPIO概况 l通用输入输出引脚GPIO特点: u 每个引脚方向可由I/O方向寄存器IODIR独立配置; 引脚上的输入/输出状态由I/O数据寄存器IODATA 反映或设置; u l.

8. 3 通用I/O口(GPIO) 8. 3. 1 GPIO概况 l通用输入输出引脚GPIO特点: u 每个引脚方向可由I/O方向寄存器IODIR独立配置; 引脚上的输入/输出状态由I/O数据寄存器IODATA 反映或设置; u l. TMS 320 VC 5509 A PGE有7个GPIO引脚(GPIO[7: 6, 4: 0] (LQFP), {对BGA封装是 8个引脚GPIO[7: 0]} ); l. GPIO[3: 0]引脚电平决定上电引导模式。 参考: TMS 320 VC 5509 A Fixed-Point Digital Signal Processor Data Manual(SPRS 205 D) 35

8. 4 外部存储器接口(EMIF) n 8. 4. 1 EMIF介绍 n 8. 4. 2 EMIF请求的优先级 n

8. 4 外部存储器接口(EMIF) n 8. 4. 1 EMIF介绍 n 8. 4. 2 EMIF请求的优先级 n 8. 4. 3 对存储器的考虑 n 8. 4. 4 程序和数据访问 n 8. 4. 5 EMIF中的控制寄存器 参考: TMS 320 VC 5510 DSP External Memory Interface (EMIF) Reference Guide (SPRU 590, 2004) (主要基于此 文档) TMS 320 VC 5503 -5507 -5509 DSP External Memory Interface (EMIF)Reference Guide (SPRU 670 A, 2004) TMS 320 C 55 x DSP Functional Overview (SPRU 312) 38

8. 4. 1 EMIF介绍 EMIF控制DSP和外部存储器 之间的所有数据传输 SBSRAM (Synchronous Burst Static Random Access 39

8. 4. 1 EMIF介绍 EMIF控制DSP和外部存储器 之间的所有数据传输 SBSRAM (Synchronous Burst Static Random Access 39

2. EMIF支持的存储器类型和访问类型 表 8 -15 存储器类型及每种存储器允许的访问类型 存� 器� 型 支持的��� 型 异步 8位存� 器(MTYPE=000

2. EMIF支持的存储器类型和访问类型 表 8 -15 存储器类型及每种存储器允许的访问类型 存� 器� 型 支持的��� 型 异步 8位存� 器(MTYPE=000 b) 程序 异步 16位存� 器(MTYPE=001 b) 程序, 32位/16位/8位数据 仅适用于C 5510或C 6000系列 异步 32位存� 器(MTYPE=010 b) 程序, 32位/16位/8位数据 32位的SDRAM(MTYPE=011 b) 程序, 32位/16位/8位数据 32位的SBSRAM(MTYPE=100 b) 程序, 32位/16位/8位数据 C 55 x EMIF CEn Space Control Register 1 D 15 Reserved D 14~12 MTYPE D 11~8 READ SETUP D 7~2 READ TROBE D 1~0 READ HOLD C 55 x EMIF CEn Space Control Register 2 D 15 D 14~12 D 11~8 D 7~2 D 1~0 EXTENDED WRITE SETUP WRITE TROBE WRITE HOLD READ HOLD WRITE C 55 x EMIF CEn Space Control Register 3 D 15~8 Reserved D 7~0 TIME OUT 参考: (EMIF) SPRU 670 A 及Interfacing the TMS 320 C 55 x to SDRAM (SPRA 719) 48

3. 配置CE空间 294页, EMIF Global Control Register (EGCR) 15~12 D 11~9 D 8 D

3. 配置CE空间 294页, EMIF Global Control Register (EGCR) 15~12 D 11~9 D 8 D 7 D 6 D 5 D 4 D 3 2 1 0 Res MEMFREQ Res WPE Res MEMCEN ARDYOFF ARDY HOLDA NOHOLD l 用全局控制寄存器(EGCR)和CE空间控制寄存器来配置CE空间; l 对每个CE空间, 须设置控制寄存器 1中MTYPE: 确定存储器类型; l MEMFREQ决定SDRAM存储器时钟信号频率(1倍 (MEMFREQ=000)或 1/2倍(MEMFREQ=001) CPU时钟信号的频 率); l MEMCEN决定CLKMEM引脚(C 14)是输出存储器时钟信号还是 被拉成高电平; l 不管每个CE空间里的存储器类型, 一定要对全局控制寄存器写如 下控制位(这些影响所有CE空间): u. WPE(Write Posting Enable): 对所有CE空间, 1使能(0禁止)后写; 即Buffering Writes to External Memory使写有缓冲; 使能时CPU写到EMIF的数据 和地址暂存到Write Posting (写记录)寄存器里, CPU不必等到EMIF写完数据即可 进行下一操作. u. NOHOLD: 对所有的CE空间, 0使能(1禁止)总线HOLD请求。 参考: (EMIF) SPRU 670 A 及Interfacing the TMS 320 C 55 x to SDRAM (SPRA 719) TMS 320 VC 5503/5507/5509 DSP External Memory Interface (EMIF) Reference Guide(Literature Number: SPRU 670 A) 49

8. 4. 5 EMIF中的控制寄存器 表 8 -17 EMIF 寄存器 I/O口 寄存器 描 述 地址

8. 4. 5 EMIF中的控制寄存器 表 8 -17 EMIF 寄存器 I/O口 寄存器 描 述 地址 地址 0800 h EGCR EMIF全局控制寄存器 080 Ah CE 22 CE 2空� 控制寄存器 2 EMI_RS 0801 h EMIF全局复位寄存器 080 Bh CE 23 CE 2空� 控制寄存器 3 T EMIF���� 状� 寄 0802 h EMI _BE 080 Ch CE 31 CE 3空� 控制寄存器 1 存器 0803 h CE 01 CE 0空� 控制寄存器 1 080 Dh CE 32 CE 3空� 控制寄存器 2 0804 h CE 02 CE 0空� 控制寄存器 2 080 Eh CE 33 CE 3空� 控制寄存器 3 0805 h CE 03 CE 0空� 控制寄存器 3 080 Fh SDC 1 SDRAM控制寄存器 1 SDPE CE 11 CE 1空� 控制寄存器 1 0810 h SDRAM周期寄存器 R SDCN CE 12 CE 1空� 控制寄存器 2 0811 h SDRAM� 数寄存器 T CE 13 CE 1空� 控制寄存器 3 0812 h INIT SDRAM初� 寄存器 59 0806 h 0807 h 0808 h

8. 4. 5 EMIF中的控制寄存器 1. EMIF全局控制寄存器 Global Control Register (EGC 15~12 D 11~9 D

8. 4. 5 EMIF中的控制寄存器 1. EMIF全局控制寄存器 Global Control Register (EGC 15~12 D 11~9 D 8 D 7 D 6 D 5 D 4 D 3 2 1 0 Res MEMFREQ Res WPE Res MEMCEN ARDYOFF ARDY HOLDA NOHOLD 具体各位的定义见教材或 8. 4. 4节 3. 配置CE空间。 2. EMIF全局复位寄存器 Global Reset Register (EMIRST) EMIRST是 16位寄存器, 向其写任何值(0000 h−FFFFh) 都复位EMIF内的逻辑, 复位状态机, 其效果是清除挂起的所 有请求。但不改变寄存器的设置值。 D 15~0 EMIRST 参考: TMS 320 VC 5503/5507/5509 DSP External Memory Interface (EMIF) Reference Guide(SPRU 670 A)及Interfacing the TMS 320 C 55 x to SDRAM (SPRA 719) 61

8. 4. 5 EMIF中的控制寄存器 3. EMIF总线错误状态寄存器 (EMIBE) D 15~13 Reserved D 12 TIME D

8. 4. 5 EMIF中的控制寄存器 3. EMIF总线错误状态寄存器 (EMIBE) D 15~13 Reserved D 12 TIME D 11 Reserved D 10 CE 3 D 9 CE 2 D 8 CE 1 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 CE 0 Reserved FBUS EBUS DBUS CBUS Reserved PBUS 具体各位的定义见下页。 参考: TMS 320 VC 5503/5507/5509 DSP External Memory Interface (EMIF) Reference Guide(SPRU 670 A)及Interfacing the TMS 320 C 55 x to SDRAM (SPRA 719) 62

8. 4. 5 EMIF中的控制寄存器 4. CE空间控制寄存器 (参考表 8 -15 存储器类型) C 55 x EMIF

8. 4. 5 EMIF中的控制寄存器 4. CE空间控制寄存器 (参考表 8 -15 存储器类型) C 55 x EMIF CEn Space Control Register 1 D 15 Reserved D 14~12 MTYPE D 11~8 READ SETUP D 7~2 READ TROBE D 1~0 READ HOLD 异步读写所用时钟数设置 C 55 x EMIF CEn Space Control Register 2 D 15 D 14~12 D 11~8 D 7~2 D 1~0 EXTENDED WRITE SETUP WRITE TROBE WRITE HOLD READ HOLD WRITE C 55 x EMIF CEn Space Control Register 3 D 15~8 D 7~0 异步读写超时时钟数设置 Reserved TIME OUT 如果CE空间控制寄存器 1中的MTYPE 位没有设置为异步存储器, 异步 8位存� 器(MTYPE=000 b) 则这些参数会被忽略。 异步 16位存� 器(MTYPE=001 b) 参考: TMS 320 VC 5503/5507/5509 DSP External Memory Interface (EMIF) Reference Guide(SPRU 670 A)及Interfacing the TMS 320 C 55 x to SDRAM 66

8. 5 多通道缓冲串口Mc. BSP n 8. 5. 1 Mc. BSP概述 n 8. 5. 2

8. 5 多通道缓冲串口Mc. BSP n 8. 5. 1 Mc. BSP概述 n 8. 5. 2 Mc. BSP组成框图 n 8. 5. 3 采样率发生器 n 8. 5. 4 多通道模式选择 n 8. 5. 5 异常处理 n 8. 5. 6 Mc. BSP寄存器 参考: TMS 320 VC 5501/5502/5503/5507/5509/5510 DSP Multichannel Buffered Serial Port (Mc. BSP)Reference Guide (Literature Number: SPRU 592 E) 67

表 8 -28 采� 率� 生器SRGR 2 位 字 段 复位� � 明 ��

表 8 -28 采� 率� 生器SRGR 2 位 字 段 复位� � 明 �� 同步模式 15 GSYNC 0 CLKS引脚极性 14 CLKSP 0 采� 率� 生器�� 源�� 13 CLKSM 1 采� 率� 生器� 送� 同步模式 12 FSGM 0 FSG信号� 同步周期数 11~0 FPER 0 FSGM: Sample rate generator transmit frame-sync mode bit. The transmitter can get frame synchronization from the FSX pin (FSXM = 0) or from inside the Mc. BSP (FSXM = 1). When FSXM = 1, the FSGM bit determines how the Mc. BSP supplies frame-sync pulses. 0: If FSXM = 1, the Mc. BSP generates a transmit frame-sync pulse when the content of DXR[1, 2] is copied to XSR[1, 2]. 1: If FSXM = 1, the transmitter uses frame-sync pulses generated by the sample rate generator. Program the FWID bits to set the width of each pulse. Program the FPER bits to set the period between pulses. 102

8. 收发通道使能寄存器 15 14 13 12 11 10 9 8 RCE 15 RCE 14

8. 收发通道使能寄存器 15 14 13 12 11 10 9 8 RCE 15 RCE 14 RCE 13 RCE 12 RCE 11 RCE 10 RCE 9 RCE 8 7 6 5 4 3 2 1 0 RCE 7 RCE 6 RCE 5 RCE 4 RCE 3 RCE 2 RCE 1 RCE 0 图 8 -11 接收通道使能寄存器(RCERA~RCERH) 15 14 13 12 11 10 9 8 XCE 15 XCE 14 XCE 13 XCE 12 XCE 11 XCE 10 XCE 9 XCE 8 7 6 5 4 3 2 1 0 XCE 7 XCE 6 XCE 5 XCE 4 XCE 3 XCE 2 XCE 1 XCE 0 图 8 -12 发送通道使能寄存器(XCERA~XCERH) 107

8. 7 看门狗定时器(Watchdog) n 8. 7. 1 看门狗定时器概述 n 8. 7. 2 看门狗定时器的配置 n

8. 7 看门狗定时器(Watchdog) n 8. 7. 1 看门狗定时器概述 n 8. 7. 2 看门狗定时器的配置 n 8. 7. 3 看门狗定时器的寄存器 参考: TMS 320 VC 5503/5507/5509/5510 DSP Timers Reference Guide (SPRU 595 C) 118

每当预定标计数器减为 0, 它会自动重新装入, 并重新开始计数; 装入的值由WDTCR中的TDDR位和看门狗定时器控制寄存器 2 (WDTCR 2)中的预定标模式位(PREMD)决定; PREMD=0时, 4位TDDR值直 接装入预定标计数器; PREMD=1时, 预定标计数器 间接装入

每当预定标计数器减为 0, 它会自动重新装入, 并重新开始计数; 装入的值由WDTCR中的TDDR位和看门狗定时器控制寄存器 2 (WDTCR 2)中的预定标模式位(PREMD)决定; PREMD=0时, 4位TDDR值直 接装入预定标计数器; PREMD=1时, 预定标计数器 间接装入 16位的预置数。 图 8 -18 看门狗定时器框图 TDDR � 定�� 0000 b 0001 h 0001 b 0003 h 0010 b 0007 h 0011 b 000 Fh 0100 b 001 Fh 0101 b 003 Fh 0110 b 007 Fh 0111 b 00 FFh 1000 b 01 FFh 1001 b 03 FFh 1010 b 07 FFh 1011 b 0 FFFh 1100 b 1 FFFh 1101 b 3 FFFh 1110 b 7 FFFh 1111 b FFFFh 121

8. 8 I 2 C模块 Inter-Integrated Circuit (I 2 C) Module n I 2

8. 8 I 2 C模块 Inter-Integrated Circuit (I 2 C) Module n I 2 C模块简介 n I 2 C模块 作原理 n I 2 C寄存器 参考: TMS 320 VC 5501/5502/5503/5507/5509 DSP Inter. Integrated Circuit (I 2 C) Module Reference Guide(SPRU 146 D) 132

l Ø 主时钟频率由下式决定: 其中ICCL在寄存器I 2 CCLKL中设置, ICCH在寄存器 I 2 CCLKH中设置。 Ø d的值由IPSC决定: IPSC 0

l Ø 主时钟频率由下式决定: 其中ICCL在寄存器I 2 CCLKL中设置, ICCH在寄存器 I 2 CCLKH中设置。 Ø d的值由IPSC决定: IPSC 0 1 大于1 d 7 6 5 参考文献: [SPRU 317 B, TMS 320 C 55 x DSP Peripherals Reference Guide ]。 140

7.I 2 C模块的禁止与使能 I C模块可以通过I 2 C模式寄存器ICMDR中的复位使 l 2 能位(IRS)使能(IRS=1)或被禁止(IRS=0, 被复位)。 8. 8. 3

7.I 2 C模块的禁止与使能 I C模块可以通过I 2 C模式寄存器ICMDR中的复位使 l 2 能位(IRS)使能(IRS=1)或被禁止(IRS=0, 被复位)。 8. 8. 3 I 2 C寄存器 l表 8 -39列出I 2 C模块的寄存器, 并简要说明了它们的 功 能。 l各寄存器的详细使用说明见参考文献 [SPRU 317 B, TMS 320 C 55 x DSP Peripherals Reference Guide ] 。 参考: TMS 320 VC 5501/5502/5503/5507/5509 DSP Inter. Integrated Circuit (I 2 C) Module Reference Guide(SPRU 146 D) 151

C 5509 A csl 5509 a. lib CSL 5509 ax. lig CHIP_5 表 8–

C 5509 A csl 5509 a. lib CSL 5509 ax. lig CHIP_5 表 8– 41 CSL支持的C 5000系列器件及模型库 (须通过编译器的-d选项选择相应器件支持符号, 才能使CSL支持该器 件) 大模型库 器件名称 小模型库 器件支持符号 C 5510 PG 1. 0 csl 5510 PG 1_0. lib csl 5510 PG 1_0 x. lib CHIP_5510 PG 1_0 C 5509 csl 5509. lib csl 5509 x. lib CHIP_5509 C 5509 A csl 5509 a. lib csl 5509 ax. lib CHIP_5509 A C 5510 PG 1. 2 csl 5510 PG 1_2. lib csl 5510 PG 1_2 x. lib CHIP_5510 PG 1_2 2. CSL命名规则 PER_: where PER is the peripheral module name (改教材标题错误)表 8– 42 CSL函数、宏和数据类型的命名规则 156

n 3. CSL数据类型 157

n 3. CSL数据类型 157

8. 9. 3 PLL模型简介 1. PLL模型的配置结构PLL_Config 用于设置PLL外设参数,结构成员: n Uint 16 iai ; CLKMD的iai位 n

8. 9. 3 PLL模型简介 1. PLL模型的配置结构PLL_Config 用于设置PLL外设参数,结构成员: n Uint 16 iai ; CLKMD的iai位 n Uint 16 iob ; CLKMD的iob位 n Uint 16 pllmult ;CLKMD的PLL Mul位域 n Uint 16 plldiv;CLKMD的PLL DIV位域 n 例8 -5,PLL模型结构定义。 PLL_Config my. PLL_Config = { 1, /* iai */ 1, /* iob */ 31, /* pllmult */ 3 /* plldiv */ } 160

n 2. PLL模型函数 (1)PLL_config () 函数 函数原型为: void PLL_config(PLL_Config *Config), 其中*Config为初始化配置结构指针。 例8 -6,PLL_config()函数的使用。 (参考8.

n 2. PLL模型函数 (1)PLL_config () 函数 函数原型为: void PLL_config(PLL_Config *Config), 其中*Config为初始化配置结构指针。 例8 -6,PLL_config()函数的使用。 (参考8. 1) PLL_Config My. Config = { 1, /* iai */ 1, /* iab */ 31, /* pllmult */ 3 /* plldiv */ } PLL_config(&My. Config); 161

(2)PLL_config. Args()函数 函数原型与参数: void PLL_config. Args( Uint 16 iai, Uint 16 iob, Uint 16

(2)PLL_config. Args()函数 函数原型与参数: void PLL_config. Args( Uint 16 iai, Uint 16 iob, Uint 16 pllmult, Uint 16 plldiv); 例8 -7,PLL_config. Args()函数的使用。 PLL_config. Args ( 1, /* iai */ 1, /* iob */ 31, /* pllmult */ 3, /* plldiv */ ); 162

例� : 利用csl配置定� 器 在头文件中包含csl_timer. h文件 在头文件中定义句柄(此句柄是打开 #include csl_timer. h; TIMER_Handle h. Timer; 定时器设备文件时产生的,

例� : 利用csl配置定� 器 在头文件中包含csl_timer. h文件 在头文件中定义句柄(此句柄是打开 #include csl_timer. h; TIMER_Handle h. Timer; 定时器设备文件时产生的, 且唯一) 在头文件中 TIMER_Config_TIMER={ 配置结构体 0 x 0 d 38, //TCR /*IDLE_EN=0, FUNC=01 b, TLB=1, FREE=1, PWID=00 b, ARB=1, TSS=1, C/P=1, POLAR=0, 其它为 0. */ 0 x 09, /*prd*/ 初始化定时器 0, 0 x 04 /*prsc */ 将定义在结构体 打开定时器 0 中的定时器参数 } h. Timer = TIMER_open(TIMER_DEV 0, 0); 写入句柄为 h. Timer的定时器。 TIMER_config(h. Timer, &Config_TIMER) TIMER_start(h. Timer); …… TIMER_stop(h. Timer); 启动定时器 0运行 停止定时器 0运行 165

-12 167

-12 167

n 2. IRQ模型的配置结构IRQ_Config 其成员如下: n IRQ_Isr. Ptr func. Addr; //中断服务程序(ISR)地址 n Uint 32 ier.

n 2. IRQ模型的配置结构IRQ_Config 其成员如下: n IRQ_Isr. Ptr func. Addr; //中断服务程序(ISR)地址 n Uint 32 ier. Mask; //中断屏蔽 n Uint 32 cachectrl; //当前没有成员,保留将来系统扩展之用 n Uint 32 func. Arg; //传送给ISR的参量 例8 -17,IRQ_Config结构的使用。 IRQ_Config My. Config = { 0 x 0000, /* func. Addr */ 0 x 0300, /* ier. Mask */ 0 x 0000, /* cachectrl */ 0 x 0000, /* func. Arg */ }; 168

n 3. IRQ模型函数 169

n 3. IRQ模型函数 169

/*定义定时器控制器各控制位, 要改变其值详见csl_timer. h* #define TIMER_CTRL TIMER_TCR_RMK( TIMER_TCR_IDLEEN_DEFAULT, /* IDLEEN== 0 */  TIMER_TCR_FUNC_OF(0), /*

/*定义定时器控制器各控制位, 要改变其值详见csl_timer. h* #define TIMER_CTRL TIMER_TCR_RMK( TIMER_TCR_IDLEEN_DEFAULT, /* IDLEEN== 0 */ TIMER_TCR_FUNC_OF(0), /* FUNC== 0 */ TIMER_TCR_TLB_RESET, /* TLB== 1 */ TIMER_TCR_SOFT_BRKPTNOW, /* SOFT == 0 */ TIMER_TCR_FREE_WITHSOFT, /* FREE == 0 */ TIMER_TCR_PWID_OF(0), /* PWID == 0 */ TIMER_TCR_ARB_RESET, /* ARB == 1 */ TIMER_TCR_TSS_START, /* TSS == 0 */ TIMER_TCR_CP_PULSE, /* CP == 0 */ TIMER_TCR_POLAR_LOW, /* POLAR == 0 */ TIMER_TCR_DATOUT_0 /* DATOUT == 0 */ ) 调试时按下面修改, 可设断点观察XF位域变化情况 TIMER_TCR_FREE_NOSOFT, /*FREE==1*/ 171

 //利用前边所定义结构my. PLLConfig的参数设置PLL。 //设定CPU时钟为 12*12=144 MHz void main(void) {PLL_config(&my. PLLConfig); IRQ_set. Vecs((Uint 32)(&VECSTART)); //*设置中断向量入口地址,

//利用前边所定义结构my. PLLConfig的参数设置PLL。 //设定CPU时钟为 12*12=144 MHz void main(void) {PLL_config(&my. PLLConfig); IRQ_set. Vecs((Uint 32)(&VECSTART)); //*设置中断向量入口地址, 中断向量表定义见vectors. s 55 task. Fxn(); //执行定时器参数设置函数 while ( 1 ) XF引脚输出周期方波信号, 周期 {if(timer 0_cnt==0) 为 2*2000*定时时间, 本实验 asm(" BCLR XF"); 为 2*2000*125 us=0. 5 s if(timer 0_cnt==2000) 2000≤timer 0_cnt<4000 asm(" BSET XF"); if(timer 0_cnt>=4000) XF引脚 0≤timer 0_cnt<2000 { timer 0_cnt=0; } 调试时, 可在以上几行加断点; 为便于观察, 可将上述行中的 2000, 4000分别改为 2, 4; 将timer 0_cnt添加为”watch } expression”, 观察其值变化, 并观察ST 1寄存器中XF 位的值 的变化, XF 位反映XF引脚输出的变化。(修改FREE=1) 175

// 定时器 0的中断服务程序ISR. 每次发生定时器中断, 在ISR中使全局变量timer 0_cnt加 1 interrupt void timer 0 Isr(void) { timer

// 定时器 0的中断服务程序ISR. 每次发生定时器中断, 在ISR中使全局变量timer 0_cnt加 1 interrupt void timer 0 Isr(void) { timer 0_cnt++; } 2000≤timer 0_cnt<4000 XF引脚 0≤timer 0_cnt<2000 177

例8 -27 (2) CSL中断向量表的定义(vectors. asm或vectors. s 55)如下: *建立中断向量表的汇编文件 . sect ". vectors" *-----全局变量定义或声明, 其他文件引用或定义-----*

例8 -27 (2) CSL中断向量表的定义(vectors. asm或vectors. s 55)如下: *建立中断向量表的汇编文件 . sect ". vectors" *-----全局变量定义或声明, 其他文件引用或定义-----* . global _VECSTART . global _timer 0 Isr . ref _c_int 00 . def nmi, int 0, int 1, int 2, int 3, int 4, int 5, int 6 . def int 7, int 8, int 9, int 10, int 11, int 12, int 13 . def int 14, int 15, int 16, int 17, int 18, int 19, int 20 . def int 21, int 22, int 23, int 24, int 25, int 26, int 27 . def int 28, int 29, no_isr _VECSTART: . ivec _c_int 00, c 54 x_stk nmi . ivec no_isr label: . ivec [address [, stack mode]] nop_16 ; 初始化中断向量表的入口 int 0 . ivec no_isr . text nop_16 ; 2字节的nop no_isr: int 1 . ivec no_isr b #no_isr nop_16 178

� 指令. ivec 的格式 label: . ivec [address [, stack mode]] ; 初始化中断向量表的入口 stack

� 指令. ivec 的格式 label: . ivec [address [, stack mode]] ; 初始化中断向量表的入口 stack mode 堆栈方式: C 54 X_STK: This value specifies the 32 -bit stack needed by converted C 54 x code. This is the default if no value is given for the stack mode. USE_RETA: This value specifies 16 -bit plus register fast return mode. NO_RETA: This value specifies 16 -bit slow return mode. 179

(2) CSL中断向量表的定义(vectors. asm或vectors. s 55)如下: int 2. ivec no_isr int 12. ivec no_isr int

(2) CSL中断向量表的定义(vectors. asm或vectors. s 55)如下: int 2. ivec no_isr int 12. ivec no_isr int 22. ivec no_isr nop_16 int 3. ivec no_isr int 13. ivec no_isr int 23. ivec no_isr nop_16 int 4. ivec _timer 0 Isr int 14. ivec no_isr int 24. ivec no_isr ; nop_16 int 5. ivec no_isr int 15. ivec no_isr int 25. ivec no_isr nop_16 int 6. ivec no_isr int 16. ivec no_isr int 26. ivec no_isr nop_16 int 7. ivec no_isr int 17. ivec no_isr int 27. ivec no_isr nop_16 int 8. ivec no_isr int 18. ivec no_isr int 28. ivec no_isr nop_16 int 9. ivec no_isr int 19. ivec no_isr int 29. ivec no_isr nop_16 int 10. ivec no_isr int 20. ivec no_isr . text nop_16 int 11. ivec no_isr int 21. ivec no_isr: b #no_isr 180 nop_16

例8 -27(3)命令文件(Ex 8_27. cmd)如下: main. obj vectors. obj -w /*-w�� 可� 生警告信息*/ -stack 500

例8 -27(3)命令文件(Ex 8_27. cmd)如下: main. obj vectors. obj -w /*-w�� 可� 生警告信息*/ -stack 500 -sysstack 500 -l rts 55 x. lib MEMORY { DARAM: o=0 x 100, l=0 x 07 f 00 VECT : o=0 x 0 d 000, l=0 x 100 DARAM 2: o=0 x 0 d 100, l=0 x 1 f 00 SARAM: o=0 x 10000, l=0 x 30000 SDRAM: o=0 x 40000, l=0 x 3 e 0000 } 181

例8 -27(3)命令文件(Ex 8_27. cmd)如下: SECTIONS { . text: {} > DARAM . vectors: {}

例8 -27(3)命令文件(Ex 8_27. cmd)如下: SECTIONS { . text: {} > DARAM . vectors: {} > VECT . cinit: {} > DARAM . pinit: {} > DARAM . bss: {} > DARAM 2 . const: {} > DARAM . switch: {} > DARAM . sysmem: {} > DARAM . cio: {} > DARAM . sysstack {} > DARAM . stack: {} > DARAM . csldata : {} > DARAM 2 /*vectors : { } > DARAM*/ } 182

例8 -27(4)在CCS 5. 4� 境下程序的�� 运行: 7. 添加� 文件rts 55 x. lib和csl 5509 ax.

例8 -27(4)在CCS 5. 4� 境下程序的�� 运行: 7. 添加� 文件rts 55 x. lib和csl 5509 ax. lib的搜索路径: 点� CCS菜� : Project->Properties, 在� 出窗口左� , � � : CCS Build -> C 5500 Linker->File Search Path, 然后在右 � "Include library file or command file as input"窗框, 点� 按� , 在� 出窗口中, 点� 右下角“File system” � , 在� 出的�� 文件窗中�� CSL库函数安装文件 C 5500. exe 所安装的文件夹 : "D: Program FilesC 55 xx. CSLlibcsl 5509 ax. lib"。 同� 方法加� rts 55 x. lib� 文件的所在路径, 如下� 所示: "D: ticcsv 5toolscompilerc 5500_4. 4. 1librts 55 x. lib" 188

例8 -27(4)在CCS 5. 4� 境下程序的�� 运行: 7. 添加� 文件rts 55 x. lib和csl 5509 ax.

例8 -27(4)在CCS 5. 4� 境下程序的�� 运行: 7. 添加� 文件rts 55 x. lib和csl 5509 ax. lib的搜索路径: 点� CCS菜� : Project->Properties, 在� 出窗口左� , � � : CCS Build -> C 5500 Linker->File Search Path, 然后在右 � "Include library file or command file as input"窗框, 点� 按� , 在� 出窗口中, 点� 右下角“File system” � , 在� 出的�� 文件窗中�� CSL库函数安装文件 C 5500. exe 所安装的文件夹 : "D: Program FilesC 55 xx. CSLlibcsl 5509 ax. lib"。 同� 方法加� rts 55 x. lib� 文件的所在路径, 如下� 所示: "D: ticcsv 5toolscompilerc 5500_4. 4. 1librts 55 x. lib" 189