描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302499381丛书名: 高等学校电子信息类专业系列教材

本书可作为高等院校电子、通信、自动化、计算机等本科或研究生的教材,也可作为控制领域相关工程技术人员的参考书。
第1章DSP控制器概述
1.1DSP的概念
1.2DSP的特点
1.3DSP控制器结构与主要特点
1.4定点DSP和浮点DSP的数值处理方法
1.4.1二进制定点数定标表示法
1.4.2二进制定点数运算规则
1.4.3十二进制数手工快速转换算法
1.4.4二十进制数手工快速转换算法
1.4.5二十进制整数计算机典型转换算法
1.4.6二十进制小数计算机典型转换算法
1.4.7二进制浮点数数据格式与运算规则
1.5定点DSP与浮点DSP比较
1.6F28335与STM32系列ARM比较
1.7F28335的引脚与封装图
1.8F28335的主要电气特性
1.8.1F28335的电源特性
1.8.2F28335电流消耗的减少方法
1.9F28335最小硬件系统设计
1.10CCS 3.3集成开发环境安装与开发流程
1.10.1CCS 3.3安装及设置
1.10.2F2833x浮点库安装
1.10.3CCS软件开发工具
1.10.4CCS软件开发流程
习题
小结
第2章TMS320F28335硬件结构
2.1概述
2.2CPU结构
2.2.1CPU内核
2.2.2乘法器
2.2.3移位器
2.2.4总线结构
2.2.5CPU寄存器
2.2.6状态寄存器ST0/ST1
2.2.7CPU中断控制寄存器
2.3存储器结构
2.3.1存储器映射图
2.3.2片上通用存储器块
2.3.3片上安全密码保护、双映射存储器块
2.3.4片上DMA存储器块
2.3.5片上Flash存储器块
2.3.6片上OTP
2.3.7片上安全代码模块
2.3.8片上Boot ROM
2.4片上外设帧
2.4.1写保护寄存器的访问特性
2.4.2器件仿真寄存器
2.4.3Flash/OTP配置寄存器
2.4.4代码安全模块寄存器
2.4.5PIE向量表
2.4.6系统控制寄存器
2.4.7GPIO复用寄存器
2.4.8eCAN寄存器
2.4.9ePWM1~ePWM6寄存器
2.4.10XINTF寄存器
2.5外部接口XINTF
2.5.1外部接口XINTF时序
2.5.2XINTF的外存储器扩展
2.5.3XINTF扩展I/O外设
2.6片上外设模块功能划分
2.7系统初始化模块
2.7.1系统控制模块
2.7.2通用目的I/O模块
2.7.3外设中断扩展模块
2.8CPU定时器模块
2.9串行通信接口模块
2.9.1串行通信接口模块的特性
2.9.2串行外设接口模块
2.9.3多通道缓冲串行接口模块
2.9.4控制局域网模块
2.9.5两线式串行总线模块
2.10数据采集与控制模块
2.10.1增强型A/D转换器
2.10.2增强型脉宽调制模块
2.10.3增强型正交编码模块
2.10.4增强型捕获eCAP模块
2.11直接存储器存取模块
2.11.1DMA模块特性
2.11.2DMA模块的工作原理
习题
小结
第3章DSP软件开发基础
3.1DSP软件通用目标文件格式
3.2DSP的工程文件目录结构
3.3CCS 3.3常用菜单命令
3.3.1文件菜单命令
3.3.2编辑菜单命令
3.3.3显示菜单命令
3.3.4工程菜单命令
3.3.5调试菜单命令
3.3.6GEL菜单命令与通用扩展语言
3.3.7选项菜单命令
3.3.8剖析菜单命令
3.3.9工具菜单命令
3.3.10DSP/BIOS菜单命令
3.4链接器命令文件
3.4.1MEMORY伪指令表达式
3.4.2SECTIONS伪指令表达式
3.4.3F28335仿真用链接器命令文件模板
3.4.4F28335烧写用链接器命令文件模板
3.4.5命名段定义#pragma编译预处理指令
3.5F2833x软件开发模板
3.5.1F2833x外设模块头文件模板
3.5.2片上外设模块C语言源文件模板
3.6DSP应用程序开发方法
3.6.1DSP外设寄存器的访问表达式
3.6.2DSP应用程序开发流程
习题
小结
第4章系统初始化模块应用程序开发
4.1系统初始化模块概述
4.1.1时钟电路
4.1.2低功耗模式
4.1.3看门狗电路
4.1.4GPIO模块
4.1.5PIE模块
4.2系统初始化模块寄存器组
4.2.1系统控制模块寄存器组
4.2.2GPIO模块控制寄存器组
4.2.3GPIO模块数据寄存器组
4.2.4GPIO模块中断源和唤醒源选择寄存器组
4.2.5PIE模块寄存器组
4.3系统初始化模块应用程序开发
4.3.1系统初始化模块应用程序开发流程
4.3.2GPIO通用I/O引脚翻转应用例程开发
4.3.3外部中断源应用例程开发
习题
小结
第5章CPU定时器模块应用程序开发
5.1CPU定时器模块结构与原理
5.2CPU定时器模块寄存器组
5.2.132位计数寄存器
5.2.232位周期寄存器
5.2.316位定时器控制寄存器
5.2.432位预分频周期寄存器
5.3CPU定时器周期中断应用例程开发
习题
小结
第6章常用串行接口模块应用程序开发
6.1常用串行接口模块概述
6.2SCI模块概述
6.3SCI模块结构与原理
6.3.1SCI模块异步通信模式
6.3.2SCI模块多机通信模式
6.3.3地址字节识别方法
6.3.4SCI模块发送特性
6.3.5SCI模块接收特性
6.3.6SCI模块中断
6.3.7SCI模块的增强功能
6.4SCI模块寄存器组
6.4.1SCI通信控制寄存器
6.4.2SCI控制寄存器1
6.4.3SCI波特率选择寄存器
6.4.4SCI控制寄存器2
6.4.5SCI接收状态寄存器
6.4.6SCI仿真数据缓冲寄存器
6.4.7SCI接收数据缓冲寄存器
6.4.8SCI发送数据缓冲寄存器
6.4.9SCI FIFO寄存器
6.4.10SCI优先权控制寄存器
6.5SCI异步串口通信应用例程开发
6.5.1SCI两种多机通信模式
6.5.2空闲线多机通信步骤
6.5.3地址位多机通信步骤
6.5.4SCI发送FIFO应用程序开发
6.5.5SCI接收FIFO应用程序开发
6.5.6SCI自回环通信实例
6.5.7SCI模块与电磁阀定位器通信实例
6.6串行外设接口模块概述
6.6.1SPI模块结构与操作原理
6.6.2SPI模块操作模式
6.6.3SPI模块中断
6.6.4SPI模块数据格式
6.6.5SPI模块波特率和时钟方案
6.6.6SPI复位初始化过程
6.6.7SPI数据传输实例
6.6.8SPI FIFO模式
6.7SPI寄存器组
6.7.1SPI配置控制寄存器
6.7.2SPI操作控制寄存器
6.7.3SPI状态寄存器
6.7.4SPI波特率寄存器
6.7.5SPI仿真缓冲寄存器
6.7.6SPI串行接收缓冲寄存器
6.7.7SPI串行发送缓冲寄存器
6.7.8SPI串行数据寄存器
6.7.9SPI FIFO发送、接收和控制寄存器
6.7.10SPI优先级控制寄存器
6.8SPI发送FIFO应用程序开发
6.9SPI接收FIFO应用程序开发
6.10SPI自回环中断例程
习题
小结
第7章ADC模块应用程序开发
7.1概述
7.1.1A/D转换器专用术语和工作原理
7.1.2A/D转换器结构和特点
7.2自动转换排序器操作原理
7.3自动转换排序器操作模式
7.3.1顺序采样模式时序图
7.3.2同步采样模式时序图
7.3.3不间断(连续)自动排序模式
7.3.4排序器启停模式
7.3.5同步采样模式
7.4输入触发源描述
7.5自动转换排序器中断模式
7.6ADC模块时钟预定标器
7.7ADC模块电气特征
7.7.1ADC模块低功耗模式
7.7.2ADC模块上电顺序
7.7.3内部和外部参考电压选择
7.8ADC模块校准
7.9排序器过载特性
7.10偏移误差校正
7.11ADC到DMA的接口
7.12ADC模块寄存器组
7.12.1ADC控制寄存器
7.12.2最大转换通道寄存器
7.12.3自动排序状态寄存器
7.12.4ADC状态和标志寄存器
7.12.5ADC参考源选择寄存器
7.12.6ADC偏置校准寄存器
7.12.7ADC输入通道选择排序控制寄存器1/2/3/4
7.12.8ADC转换结果缓冲寄存器
7.13ADC模块应用程序开发实例
习题
小结
第8章FFT算法原理与DSP实现
8.1概述
8.2FFT算法原理
8.2.1旋转因子WN特性
8.2.2按时间抽选的基2FFT算法
8.2.3DITFFT算法运算量分析
8.2.48点DITFFT蝶形运算符号图
8.3C语言倒序雷德算法
8.3.1DSP汇编指令倒序原理
8.3.2C语言倒序原理
8.3.3雷德算法程序流程图
8.4DITFFT的微机算法
8.4.1原址运算
8.4.2FFT蝶形运算旋转因子变化规律
8.4.3FFT蝶形运算旋转因子变化规律分析
8.4.4DITFFT微机算法
8.5基2 DITFFT微机算法DSP应用程序开发
习题
小结
附录习题参考答案
第1章习题参考答案
第2章习题参考答案
第3章习题参考答案
第4章习题参考答案
第5章习题参考答案
第6章习题参考答案
第7章习题参考答案
第8章习题参考答案
参考文献
TI公司的2000系列DSP芯片,适合作为控制装置的微控制器,故俗称为DSP控制器。从以TMS320LF2407为代表的24x系列发展到以TMS320F2812为代表的28x系列只经历了短短几年时间,更新速度之快出乎人们的意料。TMS320F28335是目前2833x系列高端DSP控制器芯片之一,与同频TMS320F2812相比,内核采用32位定点CPU加上32位浮点运算单元(FPU),浮点数运算速度提高5~8倍。在ADC、PWM等外设模块性能上都有重大改进,广泛应用于电力保护、逆变电源、交直流电机控制等高速、高精度控制领域。本教材以TMS320F28335为教学模型,介绍其软硬件结构和开发方法。
TI公司推出28x系列DSP芯片后,CCS(代码生成器)集成开发环境下的C编译器和C环境也做出重大改进,通过改变中断向量表存放中断函数入口地址等一系列措施,中断向量表就不像24x系列C编译器那样,存放汇编转移指令表了。这就使28x系列的源程序完全采用C或C 编程,从而迈入全C/C 语言编程的时代。
TI公司为F28335设计出一整套通用源文件模板、通用头文件模板、通用链接器命令文件模板、浮点支持库和所有片上外设模块的实例工程文件模板。用户根据应用程序需要,将启用的各个片上外设模块寄存器组结构体变量初始化源文件合并到一个工程文件中,并设计或修改应用主程序和中断服务程序源文件,就能快速创建应用工程文件。TI公司在28x系列DSP软件设计中,竭力推广软件模块化设计规范和设计方法。设计规范主要包括为每一个片上外设模块设计一个该外设模块的寄存器组结构体类型定义头文件(.h)模板和一个寄存器组结构体变量初始化函数源文件模板(.c)。若DSP应用程序需要使用某个片上外设模块的软硬件功能,就把该外设模块的源文件模板添加到工程文件中。软件模块化设计方法主要采用一个工程文件作为DSP应用程序顶层文件,允许一个工程文件由多个源文件和其他类型文本文件组成。这就能把一个大的DSP应用程序通过功能划分,拆分成多个源文件(即模块),便于用较小的文件单位来编写、编辑和调试代码,使较大的DSP应用程序阅读性、移植性、调试性等指标显著提高,排查代码的逻辑错误更加便捷、高效。
F28335每个片上外设模块的寄存器组结构体类型定义语句把该模块的所有控制寄存器、数据寄存器、状态寄存器结构体类型都作为一个寄存器组结构体类型的成员,所以该外设模块的结构原理、可编程功能均与该模块寄存器组定义的位域功能息息相关。因此,本书不仅详细介绍DSP外设模块结构和外设模块每个寄存器位域变量名称和功能,还详细介绍TI公司提供的外设模块寄存器组结构体类型定义头文件(.h)模板、一个寄存器组结构体类型变量初始化函数源文件模板以及仿真用和烧写用链接器命令文件模板,使读者能很快掌握开发DSP外设功能模块应用程序的方法。详细介绍了FFT的C语言迭代算法和F28335实现程序,这是以往DSP教材所不及的。
随着DSP控制器技术的发展,外设功能模块硬件与软件之间的界限越来越模糊,硬件与软件之间的融合越来越紧密。TI公司为F28335 设计出一整套工程文件模板就是一个佐证。用户利用工程文件模板,就能快速搭建应用程序所需的工程文件架构,就能把主要精力放在与实际应用相关的控制算法、数字处理算法、通信算法等主程序编写上。为了适应这种变化,本书重点介绍F28335的CPU架构、系统上电复位后必须初始化的片上外设模块(定义为系统初始化模块)、一些通用的外设模块(如CPU定时器模块、SCI模块、ADC模块等)相关工程文件模板,并通过这些外设模块的应用程序开发,系统介绍DSP应用程序的设计与软件开发工具CCS的使用与调试方法。
本书共8章,概括了TMS320F28335软硬件开发的所有基本内容。
第1章主要介绍DSP的概念、DSP的特点、2833x系列DSP控制器结构与主要性能、二进制定点数与浮点数的数据格式、定点DSP与浮点DSP比较、CCS 3.3安装信息、F28335最小硬件系统的基本设计方法和DSP软件开发流程。
第2章介绍TMS320F28335的硬件结构和基本特性,包括CPU结构、存储器结构、所有片上外设模块的结构。
第3章介绍DSP软件开发基础,包括COFF文件格式、分段技术、F28335的工程文件模板的文件结构、CCS 3.3的所有菜单命令。
第4章介绍系统初始化模块应用程序开发,包括由系统控制模块、GPIO模块、PIE模块组成的系统初始化模块的硬件结构、系统初始化模块的各个寄存器组功能描述以及系统初始化模块应用程序开发实例。
第5章介绍CPU定时器模块应用程序开发,包括CPU定时器模块的结构、寄存器组功能描述以及CPU定时器模块应用程序开发实例。
第6章介绍常用串行接口模块应用程序开发,包括SCI(异步通信接口)的结构、寄存器组描述以及SCI模块应用程序开发实例; SPI(串行外设接口)的结构、寄存器组描述以及SPI模块应用程序开发实例。
第7章介绍增强型ADC(模数转换器)模块应用程序开发,包括ADC的结构、寄存器组功能描述以及ADC模块应用程序开发实例。
第8章介绍FFT的DSP应用程序开发,包括基2 DITFFT算法描述、微机迭代算法以及基2 DITFFT微机算法DSP应用程序开发实例。
本书是在经过3届电子工程、自动化、计算机应用本科生教学实践基础上逐步完善的。每章都设有习题,在教材最后给出各章习题参考答案,便于学生自学和教学参考。
在本书的编写过程中,尧横、李文杰、张硕、屈霞、王天成提供了非常大的帮助,同时还
得到北京闻亭泰科技术发展有限公司上海分公司谭忠泽、常州市瑞隆工业控制装备有限公司王小孟和赵天伟的大力支持,在此一并表示衷心的感谢。在书稿的编写过程中,研究生汤宁、冒智康以及DSP技术及应用课程学习的很多本科生做了大量辅助工作,在此表示诚挚的谢意。
由于编者水平有限,书中难免存在不足之处,恳请读者批评指正。
编者2018年12月
CHAPTER 3
DSP软件开发基础
第3章DSP软件开发基础
3.1DSP软件通用目标文件格式
通用目标文件格式(Common Object File Format,COFF)没有一个行业标准。COFF首次出现在早期的UNIX系统中,TI公司采纳了UNIX系统的通用目标文件格式,定制适合DSP的目标文件格式,TI和Microsoft都使用通用目标文件格式,但目标文件没有兼容性。
DSP的C语言编译器在汇编和链接阶段以通用目标文件格式创建目标文件。这个通用目标文件格式为管理代码段和目标系统内存提供强大而灵活的方法,并鼓励支持模块化编程(modular programming)。通用目标文件格式允许在链接阶段定义系统内存,这就使C/C 语言代码和数据对象可链接到指定的内存空间。通用目标文件格式还支持源代码级调试。
通用目标文件格式文件的元素用来描述文件的段和符号调试信息。这些元素包括文件头(首部)、可选文件头信息、段头表、每个初始化段的原始数据、每个初始化段的重定位信息、符号表、字符串表。COFF文件结构如图31所示。
图31COFF目标文件结构
一个典型COFF目标文件结构包含3个默认段(即.text、.data、.bss)和多个用户命名段,如图32所示。在默认条件下,编译工具按照.text、.data、初始化用户命名段、.bss和未初始化用户命名段的次序放置这些段。注意,虽然未初始化用户命名段有段头,但没有原始数据、重定位信息或行号项。这是因为.bss、.usect伪指令直接为未初始化数据名段保留空间,未初始化段不包含实际代码。
图32COFF目标文件结构实例
通用目标文件格式把目标文件的最小单位定义为段(section),程序代码和数据分别定位在代码段和数据段。代码段属于初始化段(initialized section),数据段分为初始化段和未初始化段(uninitialized section)。
汇编器和链接阶段产生的目标文件带有相同的通用目标文件格式结构,然而,通常最终被链接的程序不包含重定位项(relocation entries)。
TMS320C28x汇编指令系统中包含段定义伪指令,其中表示系统默认代码段名的段伪指令为.text,表示系统默认初始化数据段名的段伪指令为.data、表示系统默认未初始化数据段名的段伪指令为.bss。此外,还有创建用户命名(即named)段的汇编伪指令.usect和.sect。在C28x C编译器中,为变量创建用户命名数据段的预编译处理语句为:
#pragma DATA_SECTION (symol,”section name”);
为函数创建用户命名代码段的预编译处理语句为:
#pragma CODE_SECTION (func,”section name”);
用户编写F2833x的C/C 语言源程序模块时,并不使用C28x的任何汇编段伪指令,但是,C28x C/C 语言编译器编译源程序会自动创建两种基本段,即初始化段和未初始化段,创建的初始化段如表31所示,创建的未初始化段如表32所示。
表31C/C 语言编译器创建的初始化段
段名存 放 内 容限 制 条 件
.cinit显式初始化全局变量和静态变量表程序空间
.const显式初始化全局和静态常量表,包含字符串常量低64KB数据空间
.econst远常量数据空间任何区域
.pinit在启动时被调用的构造函数表程序空间
.switch大开关语句的跳转表带有mt编译选项的程序空间
.text可执行代码和常量程序空间
表32C/C 语言编译器创建的未初始化段
段名存 放 内 容限 制 条 件
.bss全局变量和静态变量低64KB数据空间
.ebss远全局变量和静态变量数据空间任何区域
.stack堆栈低64KB数据空间
.sysmem为malloc函数(内存堆)保留存储器低64KB数据空间
.esysmem为far_malloc函数保留存储器数据空间任何区域
这些段是可重定位的代码段和数据段,可用不同方式重新定位在符合不同系统配置的存储器中。C/C 语言运行环境提供far_malloc例程,支持系统内存堆(.esysmem段)被定位在远内存(far memory)。当程序被链接时,用户必须为各种段分配内存空间(即存储器地址范围)。通常,初始化段被定位到ROM或RAM,未初始化段被定位到RAM。除.text是例外,C/C 语言编译器创建的初始化段和未初始化段不能被分配到程序存储器空间。在链接时,链接器提供MEMORY和SECTIONS两条伪指令为初始化段和未初始化段分配内存空间。MEMORY和SECTIONS伪指令要求存放在链接器命令文件(文件扩展名为cmd的文件)中编写。所以,C/C 语言编译器创建的初始化段和未初始化段虽然对用户来说是透明的,但是用户必须在链接器命令文件(文件扩展名为cmd的文件)为这些段分配与DSP芯片实际存储器物理地址相符的存储器块地址。链接器命令文件的编写内容在本章后续章节中介绍。
3.2DSP的工程文件目录结构
DSP软件开发的顶层文件是工程文件,DSP的工程文件的扩展名为pjt,这是一个特殊的文本文件,由CCS集成开发环境创建工程文件命令执行后自动生成,不需要用户编辑和修改。工程文件是一个DSP应用软件开发容器或框架,它以树形结构文件管理器窗口的形式呈现给用户,分为include子目录、source子目录、libray子目录,分别存放头文件、源程序文件、库文件,而链接器命令文件存放在工程文件根目录下,这些不同类型的文件共同构成一个工程文件。CCS集成开发环境对工程文件进行汇编、编译、链接后,产生DSP可执行文件,通过DSP仿真器JTAG接口与DSP用户板上JTAG接口相连,把DSP可执行文件下载到DSP用户板上仿真RAM中运行调试,或烧写到DSP片上Flash中,脱离DSP仿真器独立运行。
TI提供F2833x的外设头文件、外设源例程文件、外设模块基本功能例程工程文件模板,使得构建F28335工程文件和编写DSP C/C 代码更加简捷、便利。这些外设源例程文件可作为学习工具或作为当前用户按需开发基础平台。这些外设源例程文件演示初始化DSP片上外设和运用芯片外设资源所需的软件开发步骤。提供的外设例程可以在一个CCS平台上被复制和修改,使用户可快速完成不同外设的软件配置。这些工程文件模板还可通过在链接器命令文件中简单地改变内存分配被移植到其他外设应用软件开发中。
F2833x的外设头文件(.h)模板提供F2833x片上所有外设寄存器位域变量结构体类型定义语句,外设寄存器一般包括控制与状态寄存器、数据寄存器。
外设例程源文件(.c)模板提供F2833x片上所有外设寄存器位域变量结构体类型变量分配用户命名段预编译处理语句、外设寄存器初始化原型函数定义语句、中断服务原型函数定义语句等。
评论
还没有评论。