第四章dsp的c语言程序设计_第1页
第四章dsp的c语言程序设计_第2页
第四章dsp的c语言程序设计_第3页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、DSP 的 C 语言程序设计为什么要使用C语言对DSP编程C语言是高级语言,易学易用。C语言的编程效率极高,易于调试。C语言的可移植性好。C 程序的结构及组成完整的C程序是由一个主函数 main()和其它的子函数组成的,每一个子函数完成特定的功能。DSP的C语言的入口地址固定为 c_intOO,在中定义。C语言支持丰富的数据类型和数据结构,在ccs集成开发环境中,为C语言提供了完整的支持硬件的底层函数库和支持算法的DSP函数库。在使用C语言的库函数时,在工程中必须包括相应的函数库和运行时支持库。下面是一般C语言程序的结构和组成框架。一般C程序的结构如下:h 头文件#include“函数库 1”

2、#include < 函数库 2>#include“函数库 3”*/* */* Parameters:*/* - port - port address (HEX)*/* */* Return:*/* - returns value read from port.*/*/*/* portWrite(u16 port, s16 value)/*/* This routine writes a word to the specified port.*/*/*/*/* Parameters:/* - port - port address (HEX)/* - value - 16 bit

3、 word to write./*/*/*/*/*/* Return:*/* - none*/* */* Notes:*/*/*void portWrite(u16 port, s16 value);#endif /* end of #ifndef _PORTIO_H */使用时, 先使用宏替换或枚举定义 I/O 端口的地址, 然后使用 portRead() 和 portWrite() 函数访问 I/O 端口例如:#includeVariable=portRead(portA);c5400cgtoolsinclude 目录与 c5400dsk5402include 目录中的头文件类型不同。 c

4、5400cgtoolsinclude* s16 portRead(u16 port);DSP芯片和dsk板。头文件和特定的库文件相关联,c5400cgtoolsinclude 目录下的头文件与运行时支持库相关联,c5400dsk5402include 目录中的部分头文件与 dsk 板库文件和相关联。 和函数库在 c5400dsk5402lib 目录下, 是一个主要的库函数,内部使用了。五、关于DSP程序中段的定义一个程序中到底有哪些段定义般地, 对于固定的硬件应用系统,其存储器的配置也较为固定,存储器的配置需要设计者自己定义,但理解了基本的段如:.text 、.data、.stack 、.bs

5、s之外,用C语言编程时,对程序中所使用的段并不十分清楚,可以在写.CMD文件时,只将MEMOR部分写出,而暂时省略掉 SECTIONS定义,CCS集成开发环境会自动生成 .map文件, 其中详细记录了存储器和段的配置和使用情况、 各个段的绝对地址和重新分配后的全局符号, 根据其中的段的描述,我们反过来再重新修改.CMD文件,进行合理地段到存储器的分配。DSP C语言开发环境所必有的段定义:Cinit;C语言初始化段,包括初始化变量和常量表text;代码段,包括可执行代码、字符串和常量Vectors;中断向量段stack;堆栈段,为C的系统堆栈分配存储空间,用于变量的传递trapconst;包括

6、字符串常量和以 const 关键字定义的常量data;数据段bss;保留全局和静态变量空间cioswitch;为 .const 语句建立的表格system;为动态存储器函数 malloc 、 calloc 、 realloc 分配存储空间DSP的C语言程序设计实验分析工程中的程序,了解c语言程序的一般结构以及头文件和函数库的关系,并解读头文件的内容修改程序,使三个发光二极管指示灯依次流水点亮熄灭例:编写程序主要说明:DSP C程序编制的流程函数库中函数的使用(例如)Project 的建立、编译、调试、执行CMD文件的编写试重新定义.CMD文件,重新对project进行编译运行。自编写CODE(

7、程序,.h头文件在c5400dsk5402include目录下,头文件对应的函数在和 中。 dsk5402 是一个主要的库函数,内部使用了。5402上有两个多通道缓冲串行口( MCBSP0 MCBSP),其寄存器定义位于头文件和当中。如果在 File 菜单中头“ load program ”项说明目标报未正常连接,注意观察条提示:VECS:0080h length=0080h /*internetPRAM:orgin=7600h,length=8000h program Ran */Scratch RAN5402 DSP 程序寄存储藏 256K 如同加载执行DSP 5402 64K (更多)程

8、序存储器空间64K(更多)数据存储器空间64K I/O存储器空间可以由:片上 ROM片上RAN片外floah,片外RAN构成取决定于: MP/MC OVLY FLASHENBi map在外部 存储器时,由于 FLASHE决定访问FLAH=1还是外部 RAN=0 OVLY FLASH可以由片上 RAM RAN片外flash RAM 构成取决于 DROM DMSEL当 map外部存储器空间时,由 DMSEI决定是访问FLASH/RAM( DMSEL=0还是子报存储 器, FLASH14 个等待周期; RAM1 个等待周期。C5402 Device Simulater;Mp/mc=1 Ovly=1

9、DRAM=05402 DSKload program后:mp/mc=1 OVLY=1 DROM=运行程序后: mp/mc=0 OVLY=1 DROM=J管脚一致,suwsr 等待状态寄存器D8441 1 0 1 1 0 0 0 01 00 0 100 _I/O 空间 高32K 低32K 高32K 低32K54104MCBS串口以及AD50的初始化,AD50初始化包括以下步骤:1 .打开CODEC获取句柄(指针)2. 设置AD转换的工作方式3. 设置DA转换的工作方式4. 设置模拟输入增益5. 设置模输出增益6. 设置取样率board in it Flag cade in it Flagcode

10、_setup_serial_port设置串口code resetcodee复位cli ne_reset code_disable_tx_isr code_disable_vx_isr code_write_regs code_setup_serical_port serial_resetD : DSPTEST DTK-把Project中所用到的所有头文件、库文件、包含文件均方向在Project目录下,解析此工程,了解库函数的定义与源程序,Code的操作 串口( MCBSP的操作寄存器的内容工作方式,编程方法:MCBSP勺初始化串口复位(发送复位、接收复位)设置所有寄存器的值SPCR1、SPCR

11、2、RCR1、RCR2、XCR1、XCR2、 SPGR、1 SPGR、2 PCRCODE (AD50的初始化CODEC复位设置线路输入通道增益设置输出增益设置模拟工作方式输入选择 LINE设置数据部分的运行模式设置电源模式设置数据格式,CODEC!作于主方式设置波样率启动 CODEC另外:MCBSP勺初始化及使用参考头文件的有关函数。MCBSP勺初始化:接收器复位,SPCR啲D0=0 发送器复位,SPCR2勺D0=0设置SPCR1寄存器:(0X007)D 1 5禁止数字环回: DLB=0=00右对齐MCBS零填充D 1 4 D 1 3)接收数据符号扩展和调整方式:(D12 D11 )时钟停止模

12、式:=00时钟停止模式营业(D10- D08)保留D7) DX31 脚延迟功能=0关闭DX3脚延时功能(D6)保留(D5- D4)接收中断模式=00当RRDY有效时,产生接收中断D3)接收帧同步错误标志=0不检测同步错误D2)接收移位寄存满过速错误标志=1接收移位寄存器满D1)接收就绪标志=1接收器就绪D0)接收器复位=1串口接收使能(接收器停止复位)设置RCR1寄存器(接收控制寄存器官)=0x0040AD50寄存器的初始化:(按ENTER功能)CODEC复位:Control REG:ster1 的设置ADC工作模式为15bit模式control Register 2的 D4=0设置DAC的工

13、作模式为15bit模式control Register 1的 D0=0设置DODE啲模拟输入增益6db:control Register 4的 D3D2=01设置DODE啲模拟输入增益-6db:control Register 4的 D1D0=01设置DODE啲取样率为8000HZ:con trol Register 4的 D6 04=N=MCLK128x 8000AD50按寄存器初始化AD50按功能进行初始化在CODE .h头文件中,定义了与 CODEQAD50功能相关的枚举变量,除了可以调用中提供 的函数之外,我们可以利用这些枚举变量重新编写自己的函数,用枚举变量相或产生所需要的寄存器初始

14、化值。片上外设寄存器的初始化方法:有两种,一是按要求填表,然后将结果直接写入寄存器;二是用寄存器各部分的宏定义相或,如各寄存器比特的宏定义。报卡初始化brdi ni t(100);初始化的内容;#8806h 29 单元OH tXPC#0a0hT pmSTC1K nD1=()kC1K2=0 C1K3=1设置CPU的工作频率设置等待周期 SWR=D844H设置报卡初始化标志sxm=1JINTM=1 *zch=*zch or ox2cJ对 I/O 端口 0、4、2、3、5、6 进行初始化DSP技术及其应用常见问题.cmd 文件的格式及编写.cmd 文件的编写硬件确定存贮器配置就基本确定了吗5402

15、DSP存储器配置如何是 64K RAM、256k Flash 吗Boot loader 过程如何察看函数库内容,如头文件中的函数在程序调试中,打开汇编窗口,使用断点、单步方式进行调试。DSP从复位到运行,MP/MC OVLY、DROM位的变化如何知道C程序中有哪些段定义编译时生成并察看.map文件。AD5 0的一次通信二次通信如何用软件实现AD50、 AIC23 两种 codec 的操作是否一致是否可调用一个库函数不一致。DSK板的初始化包含哪些内容CSL库是否只能用于 dsp_bios编程模式否,可以在非 dsp_bios环境下调用CSL库。AD5 0的Primary、Seco nd通信对应

16、于 MCBS串口,是如何实现的分两次写,使用了宏函数 ().吗5402DSK板上集成了一个并口仿真器,它仿真时装载程序是使用的JTAG接口,还是HPI接口使用DSK并口仿真器调试 DSP时,各控制比特的设置以及memory的map如何此时是否为 HPI Boot loader 方式并口仿真与 HPI引导是否为一回事不是,通过 JTAG下载调试程序,程序运行后暂停,此时MP/MC=0 OVLY=1DROM=0I/O 空间 cpld 寄存器如何观察 ram中数据可读可改,ROM中的数据只能读吗HPI-8 的中文翻译5402上使用了 HPI-8增强型的HPI接口,host通过HPI-8可访问DSP所

17、有片上RAM在DOS下运行程序utility'evmdskctrl2 -cp,能够察看CPLD各个I/O寄存器的值:CNTL:0x02STAT1: 0x13STAT2 0x1E( DM_SEL=0选择板上存储器)CPLDRE:V 0x1FSEM0 0x1F( FLASHENB=0 INTSEL=0 FC1CON=1选择 SRAM乍为外部存储器)DMSEL OFFSEM1:0x1FHINT:YES此时,flash位于程序空间的 8000HBFFFFH ram位于程序和数据空间的低 64K,即程序空间的 0080HEFFFH 可同时被程序存储空间和数据存储空间访问,因此在 .CMD 文件中

18、,必须将程序存储器(PAGE)0 和数据存储器(PAGE1统一分配存储空间。注意 .CMD文件、.map文件与实际程序代码的对应关系。这相当于冯纽曼(诺 依曼) 结构, 虽然程序存储器空间和数据存储器空间分属两个不同的逻辑空间,但实际上却对应着同一个物理的存储器空间,高速处理器大多采用这种存储器结构,在5402DSKDSP系统中程序放在Flash中,在计算机中程序放在硬盘、光盘、 USB等存储媒介当中。并口 Bootloader 时,MP/MC=0、OVLY=1 FLASHEN=1 flash 位于数据空间的 4000H EFFFH 片上 DARAM 位于程序空间的 0080H3FFFH片外RAM位于程序空间的 4000HEFFFH 不到48K,其余的flash如何访问 Flash 直放在数据空间吗即FLASHEN!否一直为1。 最大可用的数据RAM是多少哪些范围FLASHEN置为0的逻辑通过 5402的GEL文件,将 FLASHED由1变为0。如何读I/O空间值在ccs-option 选项下,修改 memory map - I/O 下的选项。GEL语言及其文

温馨提示

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

评论

0/150

提交评论