C语言DSP开发与应用举例(精-哈工大课件)_第1页
C语言DSP开发与应用举例(精-哈工大课件)_第2页
C语言DSP开发与应用举例(精-哈工大课件)_第3页
C语言DSP开发与应用举例(精-哈工大课件)_第4页
C语言DSP开发与应用举例(精-哈工大课件)_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言DSP开发使用C语言开发DSP的原因

基于DSP芯片的软件开发,用DSP芯片的汇编语言编写程序是一件比较繁杂的事情。一般来说,各个公司的DSP芯片所提供的汇编语言并不相同,即使是同一公司的芯片,由于芯片的类型不同(如定点和浮点)、芯片的升级换代,其汇编语言也有所不同,使用汇编语言开发DSP产品的周期相对较长,因为开发人员在编写DSP程序之前必须熟悉这种DSP芯片的汇编语言。而产品一旦开发完毕,如果需要对软件进行修改和升级都将非常困难,这是因为汇编语言的可读性和可移植性比高级语言差。2023/1/121C语言DSP开发

基于上述原因,各个DSP芯片公司都相继推出了相应的高级语言(如C语言)编译器,使得DSP芯片的软件可以直接用高级语言编写而成,从而大大提高了DSP芯片的开发速度,也使程序的修改和移植变得简单易行。本节将介绍TMS320C54系列DSP芯片的C语言的软件设计和程序开发。

2023/1/122DSP中的C语言1.数据类型及相互之间的转换2.C语言关键字2023/1/1231.数据类型及相互之间的转换2023/1/124

浮点数据向整型数据的转换是以0为中心截断的。例如:一3.3转换成整型为一3。此外,当转换后的数据类型可以存储源数据类型时,那么指针型数据和整型数据也可以相互转化。

不同类型的数据可以相互转换:2023/1/1252.C语言关键字

在CCS环境中使用C语言开发程序,可以使用C语言中常用的一些关键字和表达式。如:定义数据类型的关键字:char,int,double等。条件判断关键字:if,else,switch,case等。循环语句关键字:for,while等注:在C语言中,三目运算符:表达式?语句一:语句二;2023/1/126constconst关键字有助于更好地控制对特定数据对象存储空间的分配。可以用const关键字定义任何变量或数组,来保证变量或数组的值不被改变。如果定义一个对象为const,那么const段会为此对象分配特定的存储空间。2023/1/127volatileVolatile关键字用来定义一些变量,保证该变量不会被优化器优化。优化器会自动分析数据流来防止一切可能存取内存的操作。如果在写C代码的时候确实需要用到内存存取的代码,那么必须用volatile关键字来区别这些存取操作。对存储器映射存放器都使用volatile关键字来定义。2023/1/128ioportIoport关键字读写DSP的I/O端口空间。ioport关键字的用法如下:Ioporttypeporthex_num

ioport是指定这是个端口变量的关键字;

type是指端口的数据类型,必须是char,short,int或unsigned;porthex_num指的是I/O端口号,hex_num变量是一个十六进制数据。必须注意的是,所有的端口变量在函数级说明端口变矗是无效的,必须在支存级予以说明:同时在函数原型中不能使用ioport关键字。2023/1/129下面的代码定义I/O端口为unsignedport10h,将数据a写port10h,然后从port10h读人数据存到b中:2023/1/1210interruptinterrupt关键字用来定义一个中断效劳函数,中断效劳函数必须保存中断控制存放器和返回序列。当C语言程序被中断时,中断效劳程序将保存所有用到的存放器。当用interrupt关键字定义一个函数的时候,C编译器会生成存放器来保存中断控制存放器和中断返回序列。interrupt关键字定义函数既没有参数也没有返回值。2023/1/12112023/1/1212注意:在编译后的代码中,c_int00是C语言程序开始的标志。这是专门为系统复位中断设定的保存字。系统复位中断将初始化整个系统并调用main()函数。2023/1/1213DSP的C语言运行环境1.C程序设计流程2.DSP的c语言运行环境2023/1/12141.

’C54x应用软件开发流程开发过程的目的是产生一个可以由’C54x目标系统执行的模块。C源文件C编译器汇编源文件汇编器汇编源文件COFF目标文件链接器可执行的COFF文件宏源文件存档器宏库存档器目标文件库建库工具运行时支持库EPROM编程器交叉引用列表器调试工具TMS320C54x绝对地址列表器HEX代码转换工具1.C程序设计流程2023/1/1215C编译器C编译器的编译时通过运行cl500.exe程序完成的,编译器运行指令:Cl500filenamesobjectfilesFilenames:一个或多个C语言源文件的名称。Objectfiles:编译器所创立目标文件的文件名2023/1/12162.DSP的c语言运行环境〔1〕存储器模式〔2〕C语言与汇编语言的混合编程方法DSP的C语言程序能否正确执行,关键是所有的运行代码是否能保持一个正确的运行环境。包括:存储器模式,字符串常量,存放器规那么,函数的结构和调用规那么,C语言和汇编语言混合汇编,中断处理等。本节主要介绍一下两点:2023/1/1217DSP的C编译器将存储器分成两个线性的段,分别是程序存储器和数据存储器。程序存储器包含可执行的代码。数据存储器包含外部变量、静态变量和系统堆栈。由C程序生成的代码段和数据段将连续地存放在存储器中。C编译器生成的段

C编译器对C程序进行编译后生成可以重定位的代码和数据段,这些段可以用不同的方式分配到存储器以符合不同系统配置的需要。这些段可以分为两种类型,一种是已初始化段,另一种是未初始化段。〔1〕存储器模式2023/1/1218已初始化段主要包括数据表和可执行代码。C编译器共创立5个已初始化段:●.cinit段:包含初始化变量和常数。●.const段:包含由C限定词const定义的字符串常量和数据。●.switch段;包含switch表●.text段:包含所有的可执行代码。2023/1/1219未初始化段用于保存存储器空间(通常是RAM),程序利用这些空间在运行时创立和存储变量。C编译器共创立了3个未初始化段。2023/1/1220面向DSP的C语言可以直接嵌人C54xx的汇编指令或者伪指令。直接嵌入汇编指令一方面可以在C程序中实现C语言无法实现或者很难实现的一些硬件控制功能,例如修改中断控制存放器、中断使能存放器、读取状态存放器和中断标志存放器等;另一方面也可以在C程序中的关键局部用汇编语句代替C语句,以便能优化程序,从而提高整个程序的运行效益。直接嵌人汇编指令在结构上好似调用一个特殊命名为asm的且带有一个字符串常量参数的函数,其根本格式如下:〔2〕C语言与汇编语言的混合编程方法2023/1/1221Asm(“汇编指令〞)汇编指令用双引号包括起来,编译器将双引号中的字符串直接复制到输出文件中。2023/1/1222ARM&DSP实验箱

DSP采用TI公司的TMS320VC5410,该芯片可以稳定工作在160MHz主频;内部具有128KB片内RAM和32KB片内ROM;该芯片内部包含有一个16位定时器,6个DMA控制器,3个McBSP串行口和1个增强型HPI控制器。对于本实验系统上的DSP模块,板上提供了512KB的FlashROM,用于存放代码。2023/1/1223ARM&DSP实验箱结构图2023/1/12242023/1/12252023/1/12262023/1/12272023/1/12282023/1/12292023/1/12302023/1/1231JTAG接口2023/1/1232C语言DSP开发2023/1/1233DSP芯片应用举例1、DSP芯片的C语言开发2、实验平台介绍3、实验内容2023/1/12341、DSP芯片的C语言开发〔P232〕1.1C语言的数据访问方法〔1〕片内存放器的访问通过头文件定义,指针访问;〔2〕DSP内部和外部存储器的访问采用指针方式访问;〔3〕DSPI/O端口访问通过ioport关键字访问;2023/1/12351.2C语言和汇编语言混合编程〔1〕方法一:独立编写C和汇编〔2〕方法二:在C程序中直接嵌入汇编 语句〔3〕方法三:将C程序编译生成相应汇 编语句,然后对汇编程序 手工优化和修改2023/1/12362、实验平台介绍DataAddressMCBPSJTAGI/OMCBPSTMS320VC5402SRAM模块128K*16LCD点阵模块Address/DataTLC320AIC10直流电机模块LoggingInterfaceMCBPSExpans_onI/OExpans_on步进电机模块交通灯模块实时时钟模块键盘模块测温模块电源管理模块JTAG接口TL16C550开关量输出模块开关量输入模块LED数码显示模块串口通讯模块语音输入语音输出语音输出并行接口HPI2023/1/12372.1实验平台说明最小系统板,是独立的DSP最小系统。硬件测试平台,是为DSP提供的,尽可能测试其所有功能的外围电路。本功能不推荐VC5402使用。2023/1/12382.2实验箱资源配置

2.2.1电源管理本实验箱使用的电源电压有+1.8V,+3.3V,+5V,±12V。〔1〕电源开关:控制整个系统的电源,其上的红灯亮表示系统已上电。〔2〕步进电机电源开关SW301:控制步进电机模块局部的电源。开关拨向下,步进电机模块断电,开关拨向上,步进电机模块通电。〔3〕直流电机电源开关ZLDJ:控制直流电机模块局部的电源。开关拨向下,直流电机模块断电,开关拨向上,直流电机模块通电。〔4〕IO输入输出方式选择开关SW601:选择IO输出方式。开关拨向上,选择IO输出方式一,开关拨向下,选择IO输出方式二。〔5〕复位开关RESET:按下此开关,复位DSP。〔6〕中断按键:按下此键可向DSP产生中断信号。2023/1/12392.2.2存储器扩展

芯片:4k的ROM、16k的DARAM;本实验箱扩展了64K*16程序存储器,64K*16数据存储器,合计为128K*16的静态存储器。2023/1/12402.2.3最小系统板设置

J101:短接:微处理器方式运行,即运行片外存储器内的程序;开路:微控制器方式运行,即运行片内存储器内的程序。J102:短路:BCLR0与BCLX0短路;开路:BCLR0与BCLX0未短路。J103:短路:BSFR0与BSFX0短路;开路:BSFR0与BSFX0未短路。J104:短路:选择AIC10工作在从方式;开路:选择AIC10工作在主方式。J108:短路:HPIENA为高;开路:HPIENA为低。J110:短路:DS18B20的I/O脚连至5402的HD1;开路:DS18B20的I/O脚未连至5402的HD1。J111:短路:DS1302的I/O脚连至5402的HD7;开路:DS1302的I/O脚未连至5402的HD7。J120:短路:LM386输出端电容被短路;开路:LM386输出端电容有效。2023/1/12412.3实验模块〔1〕开关量的输入模块和输出模块;〔2〕中断〔3〕LCD点阵模块〔4〕实时时钟模块〔5〕测温模块〔6〕数码显示模块〔7〕键盘模块〔8〕交通灯模块〔9〕步进电机模块〔10〕直流电机模块2023/1/12422.4实验内容实验一DSP开发环境的建立〔1〕了解CCS的组件及其安装;〔2〕了解DSP实验系统的组成及仿真系统的安装;〔3〕熟悉CCS的各种功能;〔4〕能读懂例如程序,能将所读结果与软件仿真系统的观察结果,进行比较;2023/1/1243实验2数码管显示实验〔1〕掌握数码管驱动器MAX7219的使 用方法〔2〕I/O控制MAX7219驱动八位数码管 显示的方法〔3〕通过DSPI/O控制MAX7219驱动八 位数码管循环逐位显示1-9数字2023/1/1244实验内容介绍:〔1〕实验原理MAX7219是一种串行数据输入\输出的共阴极数码管的显示驱动芯片。它能很方便的将微控制器与8位7段数码管连接在一起。MAX7219内部由BCD编码及BCD译码器、复合扫描电路、段和位驱动器以及存储每位数的8×8静态RAM。MAX7219具有3线的串行接口,能和大多数的微控制器接口。这三根接口线是片选(CS),数据输入(DIN),时钟输入(SCLK)。MAX7219与DSP的连接如以下图所示。2023/1/1245DSP与MAX7219的连接

2023/1/1246寄存器名地址数据D11D10D9D8HEXD7D6D5D4D3D2D1D0空00000hX位000011h小数点位控制在BCD译码方式中,D6-D4不用。D3-D0=0000-1001对应位显示“0-9”,D3-D0=1010-1110,对应位显示“-,E,H,L,P”。D3-D0=1111对应位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论