DSP原理与应用设计 课件 全套 第1-8 章 数字信号处理器的基本概念 - TMS320C6748 在数字信号处理中的应用_第1页
DSP原理与应用设计 课件 全套 第1-8 章 数字信号处理器的基本概念 - TMS320C6748 在数字信号处理中的应用_第2页
DSP原理与应用设计 课件 全套 第1-8 章 数字信号处理器的基本概念 - TMS320C6748 在数字信号处理中的应用_第3页
DSP原理与应用设计 课件 全套 第1-8 章 数字信号处理器的基本概念 - TMS320C6748 在数字信号处理中的应用_第4页
DSP原理与应用设计 课件 全套 第1-8 章 数字信号处理器的基本概念 - TMS320C6748 在数字信号处理中的应用_第5页
已阅读5页,还剩258页未读, 继续免费阅读

下载本文档

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

文档简介

DSP原理与应用PrincipleandApplicationofDSP长沙师范学院信息科学与工程学院为什么需要DSP?手机通话中的降噪功能是如何实现的?音乐播放器如何实现音效处理?卫星导航是如何处理卫星信号的?这些都离不开DSP技术学时:30+10/2.5学分考试:闭卷考试成绩评定:平时成绩占比40%+期末成绩占比60%课程特点:动手实践参考书目:

1、朱智平.DSP原理与应用系统设计.大连理工大学出版社,2026.2、王斌、熊谷辉、曹琳峰.TMS320C6748DSP原理与实践.北京航空航天大学出版社,2018。.3、路锦正,张红英,李强.C674X-DSP嵌入式开发与实践.科学出版社.2019。DSP原理与应用学习目标:

1.掌握数字信号处理器(DigitalSignalProcessor,DSP)技术的基本知识,了解DSP发展历史、DSP芯片结构的特点、工作原理、应用系统开发过程;2.掌握TMS320C6748DSP控制器的系统结构及外设工作原理,理解中断系统管理机制;掌握MS320C6748控制类外设与通信类给外设开发应用技术;3.掌握CCS集成开发环境的使用方法、编程规则、CMD文件的功能和编写方法,能够使用C语言进行DSP系统应用软件设计与仿真、硬件调试;4.在掌握TMS320C6748硬件和软件设计基础之上,能够能对复杂工程问题分析与解决给出可行方案,具备利用TMS320C6748DSP控制器设计实现数字信号处理系统的设计能力。DSP原理与应用DSP原理与应用单片机或计算机原理电机与拖动模拟电子技术数字电子技术图像处理信号与系统DSP原理与应用C语言设计DSP原理与应用是一门工程实践技术;DSP原理与应用课程综合性强,对前续课程依赖程度高DSP原理与应用CPUMCUDSPGPUDSP原理与应用FPGANPUSOC01第一章数字信号处理器的基本概念学容掌握数字信号处理的基本概念DSP芯片的结构特点典型的DSP产品DSP开发流程1234习内TMS320C6748概况51.1掌握数字信号处理的基本概念

数字信号处理是利用计算机技术对数字形式的信号进行采集、变换、滤波、估值、增强、压缩、识别等处理的理论与方法。量化位数可提升处理精度,理论上可无限接近理想值。精度高二进制传输,纠错编解码技术可抑制干扰。抗干扰能力强算法通过软件实现,修改程序即可改变功能。可编程控制输入和程序不变时,处理结果完全一致。可重复性好可IC大规模集成,便于存储和复用。易于集成和存储DSP(DigitalSignalProcessing)的定义1.2DSP芯片的结构高吞吐率低延迟并行处理能力DSP(DigitalSignalProcessor)的定义

数字信号处理器(DSP芯片)是专为高效执行数字信号处理算法而设计的微处理器。1.2DSP芯片的结构将程序指令存储和数据存储分开,配备独立的程序总线与数据总线,支持单周期内同时取指与读数,大幅提升数据吞吐率。哈佛结构将程序与数据共用同一存储空间与总线,同一时刻只能访问指令或数据。冯・诺依曼结构1.2DSP芯片的结构流水线(Pipelining)技术的核心工作原理类似于工业生产线,通过时间上的重叠来大幅提升指令的吞吐率和处理效率。流水线技术取值译码取操作数执行写回指令执行周期1.2DSP芯片的结构

DSP芯片内置专用的硬件乘法器(MulTIplier)与乘法累加单元(MAC),能够在单一时钟周期内完成“乘法+累加”的复合操作。硬件加法器1.3典型的DSP产品TI公司的DSP芯片产品TMS320C2000系列MS320C5000系列MS320C6000系列实时控制微控制器,其将闪存、模数转换器(ADC)、数字信号处理器(DSP)和脉宽调制(PWM)单元集成于芯片内部.。面向低功耗、便携式应用场景,如语音处理、消费电子、医疗设备等,功耗低、体积小,适用于对功耗和体积要求较高的便携式设备.。面向高端应用场景,如航空航天、医疗影像、高端通信等推出的高性能DSP产品,精度高、运算能力强。1.3典型的DSP产品TI公司的DSP芯片产品TMS320C2000系列MS320C5000系列MS320C6000系列实时控制微控制器,其将闪存、模数转换器(ADC)、数字信号处理器(DSP)和脉宽调制(PWM)单元集成于芯片内部.。面向低功耗、便携式应用场景,如语音处理、消费电子、医疗设备等,功耗低、体积小,适用于对功耗和体积要求较高的便携式设备.。面向高端应用场景,如航空航天、医疗影像、高端通信等推出的高性能DSP产品,精度高、运算能力强。1.3典型的DSP产品TI公司的DSP芯片产品C6000系列DSP拥有多种优秀内核架构,包括C64x™和C64x+™等定点DSP内核、C67x™和C67x+等早期浮点/定点DSP内核,以及C674x和C66x等最新浮点/定点DSP内核。1.3典型的DSP产品TI公司的异构多核系列多种异构多核SOC系列产品,主要包括OMAP系列、Davinic系列、Sitara系列和最新的KeyStoneII架构系列。OMAP系列:针对智能移动平台需求推出的双核架构(ARMRISC处理器+DSP)的低功耗SOC产品;Davinic系列:为解决复杂的视频、图像和音频处理任务而推出的数字媒体处理器,其特点是通过异构多核架构(ARM+DSP+高清视频图像协处理器HDVICP)Sitara系列:面向工业控制与实时通信领域推出的异构多核SOC产品。Sitara系列的特点是集成了实时内核(ArmCortex-R系列或ArmCortex-M系列内核)KeyStoneII架构系列:面向高性能计算和数据通信领域推出的异构多核SOC产品。1.3典型的DSP产品ADI(AnalogDevices)公司的DSP芯片产品Blackfin系列SHARC系列专门针对当今嵌入式音频、视频和通信应用的计算需求和功耗限制而设计。采用的一种单指令多数据(SIMD)架构,该架构包含两个能够并行执行代码的运算单元,可以在单周期执行双乘法和ALU运算,而且在单周期内还能完成双读或双写数据以及取指令操作。1.3典型的DSP产品国产DSP芯片产品湖南进芯科技MS320C5000系列湖南毂梁微电子专业从事数字信号处理器芯片(DSP)及嵌入式解决方案研发的集成电路设计企业,已成功推出16位定点、32位定点、32位浮点三大系列DSP芯片及单核/多核SoC产品。基于开源指令集架构RISC-V打造多个系列数字信号处理器产品,并构建完善的处理器产品生态系统。HX2000系列DSP采用基于自主研发的H28x内核构建的32位浮点RISC-VDSP架构国产麓山DSP系列,芯片集成了高性能低功耗32位浮点DSP,主要适用于伺服驱动器控制、电源逆变器、工业自动化设备等领域。湖南进芯科技

1.4DSP系统应用开发流程与工具1.4.1DSP系统应用开发流程将客户的需求和期望转化为功能要求和性能要求,系统需要实现的具体功能,并定义具体、可量化的性能指标。01需求分析方案设计转化为具体电路;最小系统、接口电路、调理电路等;PCB加工调试。03硬件设计通过仿真器链接目标电路板进行在线仿真调试,对DSP系统进行全面的测试。05系统联试根据系统的功能要求制定系统的总体架构、功能模块规划和接口设计;选择DSP处理器、数据采集方案。02方案设计选择合适的数字信号处理算法;搭建算法模型并进行仿真验证;算法代码编制与单元测试。04软件设计1.4DSP系统应用开发流程与工具可视化集成开发环境(IDE)

TI公司的CCS(CodeComposerStudio)集成了代码编辑、编译、仿真、下载与调试等功能。CCS包含一整套用于开发和调试嵌入式应用的IDE工具,其中包括用于优化的C/C++编译器、源代码编辑器、工程编译环境、调试器、分析工具以及多种其他功能。1.4DSP系统应用开发流程与工具仿真器(Emulator)

DSP仿真器通常通过JTAG(联合测试行动组)接口与目标板相连,能够让开发者在不干扰目标系统正常运行的情况下,实现在线调试、设置断点、单步执行、查看和修改CPU寄存器及内存内容,是定位软件错误与进行底层硬件调试的必备工具。

XDS560V2XDS200XDS100V21.4DSP系统应用开发流程与工具DSP评估板(EVM)评估板的主要作用是展示芯片的性能、验证算法的可行性,并为开发者提供参考设计、降低硬件开发的风险与难度,是进行原型验证与系统演示的理高效手段

1.5TMS320C6748浮点DSPTMS320C6748浮点DSP概况

TMS320C6748是TIC6000系列低功耗高性能浮点DSP,基于C674xVLIW架构,最高主频456MHz,提供3648MIPS指令性能与2746MFLOPS浮点运算能力,支持IEEE754单/双精度浮点运算,适合高精度复杂算法处理。TI公司为C6748完善的软件生态与开发支持,覆盖从底层驱动到高级算法的全流程,可大幅缩短产品开发周期。TI公司的SYS/BIOS轻量级实时操作系统;提供丰富的软件库,包括芯片支持库(CSL)、DSP算法库、VisionLibrary(视觉算法库)等,涵盖信号处理、图像处理、音频编解码等常用算法。1.5TMS320C6748浮点DSPTMS320C6748评估板TMDSLCDK6748评估套件TL6748-EVM评估套件ICETEK-C6748-SSD套件

TI公司自研的一款低成本开发套件(LCDK)。软硬件资料全开源,接口资源丰富。广州创龙电子科技有限公司推出的一款基于TMS320C6748芯片的DSP评估套件。接口丰富,例程全面。北京瑞泰创新科技有限责任公司推出的一款专为高校教学与科研实验设计的综合性实验平台。谢谢观看THANKYOUFORWATCHINGDSP原理与应用PrincipleandApplicationofDSP长沙师范学院信息科学与工程学院01第二章TMS320C6748的硬件结构学容TMS320C6748概述锁相环PLL系统配置模块SYSCFG1234习内电源与睡眠控制器PSC5TMS320C6748内部结构外部存储器接口EMIFA62.1TMS320C6748概述2.2TMS320C6748内部结构TMS320C674x集总架构模块(Megamodule)由TMS320C674x定点/浮点CPU、内部存储器控制器和高级事件触发器(AET)构成。TMS320C674x定点/浮点CPU融合了C64x+定点与C67x+浮点架构,支持完整浮点运算;兼容TMS320C67x+™DSP指令集和TMS320C64x+™DSP指令集。

TMS320C674x集总架构模块(Megamodule)的组成:C674xCPU、内部存储器控制器、AET。介绍两级缓存架构(L1P/L1D各32KB,L2256KB)及内部外设(INTC、PDC、BWM、IDMA)。高级事件触发器(AET)的调试功能:硬件编程断点、数据观测点、计数器、状态排序。1、DSP子系统2.2TMS320C6748内部结构DSP、可编程实时单元(PRU)子系统、EDMA3传输控制器以及芯片外设通过交换矩阵架构来实现相互连接。交换矩阵由多个交换中心资源(SCRs)和网桥。

网桥用来执行数据总线宽度转换和总线执行频率转换。2、DSP系统互联单元2.2TMS320C6748内部结构(1)DSP内部存储器DSP内部存储器由32KB的程序缓存L1P、32KB的数据缓存L1D和二级缓存L2存储器组成,程序存储控制器(PMC)配置L1PRAM中用于程序RAM或缓存空间的大小,默认为32KB;数据存储控制器(DMC)配置L1DRAM中用于数据RAM或缓存空间的大小,默认为32KB;标准存储控制器(UMC)配置L2RAM中用于普通RAM或缓存空间的大小,默认为256KB;1024KB的BootROM。(2)共享RAMC674xDSP提供一个128KB的片上单端口共享RAM,DSP和一些主外设都可访问该共享RAM。(3)外部存储器C674XDSP有两个外部存储器接口EMIF接口和DDR2/mDDR存储器控制器。3、存储单元2.2TMS320C6748内部结构

TMS320C6748通常需要两个的参考时钟:锁相环PLL提供的系统时钟、实时时钟(RTC)模块提供的参考时钟。系统时钟通过分频方式为DSP内核和外设提供工作时钟,TMS320C6748的系统时钟架结构图。4、系统时钟2.2TMS320C6748内部结构

TMS320C674xCPU内核由以下组件组成:程序取指单元;指令分配单元;指令译码单元;两组数据处理通道、两组32位通用寄存器(每组32个,共64个)、两组共8个功能单元(.L1、.L2、.S1、.S2、.M1、.M2、.D1、.D2);1组控制寄存器、控制逻辑、测试仿真和中断控制逻辑;内部DMA(IDMA,用于内部存储器之间的传输).5、TMS320C674xCPU内核2.3锁相环PLL锁相环(PLL)是一种闭环频率相位反馈控制系统,可将低频外部时钟倍频为芯片所需的高频、低抖动工作时钟。TMS320C674xDSP有两个锁相环(PLL)控制器:PLLC0和PLLC1,锁相环(PLL)控制器主要功能是管理时钟率、校准以及处理器和各外围设备提供工作时钟。PLLC0负责处理器的系统时钟和门控时钟;PLLC1专为DDR2/mDDR控制器以及ASYNC3时钟域提供可配置的时钟。锁相环PLL的输出时钟PLL0_SYSCLKn的输出频率计算公式为:OSCIN÷(PREDIV+1)×(PLLM+1)÷(POSTDIV+1)÷(PLLDIVx+1)2.4系统配置模块SYSCFGSYSCFG模块的功能:管理和控制片上外设的系统级模块,包括设备标识、引脚复用配置、启动状态配置、主优先级配置等。SYSCFG模块具有防误写锁定机制,访问其寄存器组需先写入特定的键值序列值之后,才允许CPU对系统配置模块其他寄存器进行写操作。Kicker保护机制解锁SYSCFG模块寄存器的操作步骤如下:(1)写入键值83E70B13h到KICK0R;(2)写入键值95A4F1E0h到KICK1R。SYSCFG模块的主要寄存器

(1)Kick寄存器(KICK0R-KICK1R)(2)主机配置寄存器1(HOST1CFG)(3)主外设优先级寄存器(MSTPRI0-MSTPRI2)(4)引脚复用控制寄存器(PINMUX0-PINMUX19)(5)上拉/下拉使能寄存器(PUPD_ENA)(6)上拉/下拉选择寄存器(PUPD_SEL)2.5电源及睡眠控制器(PSC)电源与睡眠控制器(PSC)负责管理系统电源开关、时钟启停以及复位(设备级和模块级)的状态转换,主要用于为片上模块(外设与CPU)提供精细化电源管理。C6748DSP包含两个PSC模块,每个PSC模块由以下部分组成:(1)一个始终保持供电的电源域,AlwaysON域(或称PD0电源域)在芯片通电时始终处于开启状态;(2)一个额外的伪电源域/内部电源域,分别用于管理DSP子系统中存在的RAM及L3RAM的休眠模式,其状态既可为开启也可为关闭。电源与睡眠控制器(PSC)为每一个模块/外设定义了6种状态(ModuleStates):使能(Enable)、禁止(Disable)、同步复位(SyncReset)、软件复位禁止(SwRstDisable)、自动休眠(AutoSleep)和自动唤醒(AutoWake)。2.6外部存储器接口(EMIFA)EMIFA(ExternalMemoryInterfaceA)是DSP中用于连接外部存储器的一种总线接口。TMS320C6748的EMIFA是16位数据总线,实现DSP与外部的SRAM、SDRAM和Flash等多种存储设备之间的数据传输。TMS320C6748的EMIFA接口与内部主控制器、外部存储器连接框图如图2-22所示。EMIFA控制器能够处理来自DSP内部的CPU、EMDA、主外设的请求以及来自外部SDRAM存储器、异步存储器的请求。当多个请求同时出现时,EMIFA控制器按照请求源的优先级排序处理优先级最高的申请。2.6外部存储器接口(EMIFA)1、EMIFA接口引脚与存储空间映射EMIFA接口引脚可以分成三组:SDRAM专用引脚、异步存储器专用引脚、SDRAM和异步存储器公用引脚。2.6外部存储器接口(EMIFA)2、EMIFA总线的SDRAM接口EMIFA总线能够无缝连接大多数标准的单倍速(SDR)SDRAM存储器,并支持诸如自刷新模式和优先刷新等功能。右图为EMIFA总线与一片2M×16bit×4bank的SDRAM连接的电路原理图。2.6外部存储器接口(EMIFA)3、EMIFA总线的异步设备接口EMIFA总线能与多种异步设备连接,比如NORFLASH、NANDFLASH以及SRAM。EMIFA总线有四个异步设备片选引脚,,最多可以连接四个异步存储设备。EMIFA总线连接外部设备地址总线时,EMIFA地址引脚EMA_A[0]始终提供一个32位字地址的最低有效位。

(a)EMIFA与8位异步存储器连接(b)EMIFA与16位异步存储器连接谢谢观看THANKYOUFORWATCHINGDSP原理与应用PrincipleandApplicationofDSP长沙师范学院信息科学与工程学院03第三章CCS集成开发环境学容CCS概述CCS基本操作与使用CMD文件1234习内StarterWare软件包安装5CCS软件安装3.1CCS概述CodeComposerStudio包含一整套用于开发和调试嵌入式应用的工具:用于优化的C/C++编译器、源代码编辑器、工程编译环境、调试器、分析工具以及多种其他功能。

CCS集成开发环境及其“设计→编码→调试→分析优化”的开发流程,完整开发环境由主机PC、仿真器、目标机三部分组成。

3.1CCS概述CCS的代码生成工具提供了DSP软件开发流程的主要功能软件。①C/C++编译器(C/C++compiler)②汇编器(Assembler)③链接器(Linker)④归档器(Archiver)⑤建库器(Library-buildprocess)⑥绝对列表器(Absolutelister)⑦交叉引用列表器(Cross-referencelister)

⑧十六进制转换器(Hex-conversionutility)

3.1CCS概述CCS软件开发流程

编辑使用任一种编辑器生成源程序.c,.asm文件和命令文件.cmd汇编:使用汇编器生成目标文件输出文件*.lst-列表文件COFF文件链接:使用链接器生成可执行代码输出文件*.out-可执行文件*.map-映射文件调试:通过JTAG接口下载到目标系统通过JTAG接口将程序烧写到Flash存储器3.1CCS概述(3)SYS/BIOSSYS/BIOS是一个可扩展的实时内核,也称为“TI-RTOSKernel”。SYS/BIOS专为需要实时调度和同步或实时检测的应用程序而设计。SYS/BIOS是实时多任务内核,在其基础上发展的TI公司的RTOS解决方案——TI-RTOS。(4)调试与分析

嵌入式软件调试是评估运行在目标环境中、经受不同边界条件的应用程序行为的过程。调试器能够控制应用程序在目标系统(Targetsystem)执行的过程,并能观测目标系统的内部情况,因此调试器是嵌入式系统开发过程中用于检测错误或修改应用程序的重要步骤。

硬件仿真调试环境由运行CCS的主机PC、仿真器(或称为调试探针“JTAGdebugprobe”)、目标系统(Targetsystem),硬件仿真调试环境组成由图3-3所示。

3.2CCS的安装CodeComposerStudio安装过程3.3CCS基本操作与使用CCS5工作界面主要由主菜单、工具条、工程窗口、程序窗口、运行信息显示窗口、寄存器窗口、存储器窗口等组成。3.3CCS基本操作与使用

(1)新建工程3.3CCS基本操作与使用

(2)连接仿真器在线仿真器是嵌入式软件开发和调试的重要工具,它具有程序烧录、断点、单步运行、连续运行、跟踪记录(TRACE)、寄存器与存储器的读写、I/O端口操作等基本仿真功能。在线仿真器通过DSP的JTAG端口能够实现对目标机软件在线调试和代码烧录功能。将TexasInstrumentsXDS100v2USBEmulator(简称XDS100v2USBEmulator)的USB端口与PC连接,其JTAG端口连接目标板的JTAG插座。

3.3CCS基本操作与使用

(2)连接仿真器在线仿真器是嵌入式软件开发和调试的重要工具,它具有程序烧录、断点、单步运行、连续运行、跟踪记录(TRACE)、寄存器与存储器的读写、I/O端口操作等基本仿真功能。在线仿真器通过DSP的JTAG端口能够实现对目标机软件在线调试和代码烧录功能。将TexasInstrumentsXDS100v2USBEmulator(简称XDS100v2USBEmulator)的USB端口与PC连接,其JTAG端口连接目标板的JTAG插座。

3.3CCS基本操作与使用

(3)编译与程序烧录运行编译与程序烧录运行

3.3CCS基本操作与使用

(3)编译与程序烧录运行编译与程序烧录运行

3.3CCS基本操作与使用

(4)CCS软件常用操作添加工程;设置断点;观察窗口;内存窗口;寄存器窗口;数据可视化;编译与程序烧录运行

3.4CMD文件编写CMD(LinkerCommandFile)为链接器命令文件,后缀为“.cmd”,其主要功能在于管理DSP内存。CMD文件主要用途是定义程序和数据的内存映射,通过编写指令指导编译器如何分配代码段和数据段的内存地址,确保程序在DSP硬件上能够正确且高效地运行。(1)使用C语言开发的DSP程序的段主要包括:.cinit存放C程序中的全局/静态变量初始值;.const存放C程序中的字符常量、浮点常量和用const声明的常量;.switch存放C程序中switch语句的跳转表;.text存放C程序的代码;.bss为C程序中的全局和静态变量保留存储空间;.far为C程序中用far声明的全局和静态变量保留空间;.stack为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;.sysmem用于C程序中malloc、calloc和realloc函数动态分配存储空间。(1)CMD文件3.4CMD文件编写CMD文件主要包括两部分:memory部分和sections部分。memory部分定义内存分页和块,sections部分则指定程序段在特定内存块中的位置。memory伪指令memory用来指定芯片的rom(如DSP芯片内的ROM,FLASH,外挂FLASH等)和ram的大小和划分出N个区间,通常将PAGE0为程序空间,PAGE1为数据空间。PAGE里包含的区间名字与其后面的参数反映了该区间的起始地址和长度。sections伪指令SECTIONS用于程序中的各种段映射到PAGE0或PAGE1中规定的空间中,例如将代码段(.text)和数据段(.data)分别映射到PAGE0和PAGE1上。。(2)用户自定义的段3.5StarterWare架构与原理StarterWare‌是由德州仪器(TI)公司开发的一款免费的轻量级软件套件,主要用于为SitaraTM32位ARM微处理器、C6000数字信号处理器(DSP)以及DSP+ARM处理器开发人员提供无操作系统嵌入式软件开发工具包。。3.5StarterWare架构与原理StarterWare(支持C6748)软件包的系统组成框图1.硬件层:TMS320C6748片上外设与存储资源。2.C代码启动层:CPU初始化与CPU配置,完成上电复位后的运行环境搭建。3.系统配置层:器件配置、引脚配置、模块时钟控制与中断处理。4.设备抽象层(DAL):将UART、I2C、SPI、LCD、EDMA、以太网等外设的寄存器操作抽象为统一API。5.中间件/堆栈/库层:USB、Graphics、lwIP等多媒体层、协议栈与库。6.程序应用层:用户的算法、编解码与业务逻辑。。谢谢观看THANKYOUFORWATCHINGDSP原理与应用PrincipleandApplicationofDSP长沙师范学院信息科学与工程学院04第四章TMS320C6748常用外设学容通用输入输出接口GPIO定时器123习内中断系统4.1通用输入输出接口GPIO通用输入输出接口(GPIO)是DSP与外部电路之间的重要的通用引脚,这些引脚可以配置为输入或输出。TMS320C6748将GPIO引脚编排成9个组(BANK0~BANK8),每组(BANK)包含16个GPIO引脚,最多可配置144个GPIO引脚。每组(BANK)引脚的配置与功能由一组寄存器来控制实现,C6748的寄存器通常是32位的,每个32位GPIO寄存器对应两组BANK(共32个引脚)。4.1通用输入输出接口GPIO4.1.1

GPIO的工作原理C6748的GPIO内部结构通常包含方向寄存器(DIR)、置位寄存器(SET_DATA)、清除寄存器(CLR_DATA)、输入/输出寄存器(INDATA/OUTDAT)、边缘检测逻辑模块(EdgeDetectionLogic)与相关寄存器等部分组成,其内部结构框图如右图所示。通过向方向寄存器(DIR)写入适当值来配置GPIO引脚的功能是输入或者输出。GPIO输出数据寄存器(OUT_DATA)保存当前GPIO的电平状态。GPIO的功能:输出功能、输入功能、中断功能4.1通用输入输出接口GPIO4.1.2

GPIO寄存器C6748每组(BANK)包含16个GPIO信号,每个32位的GPIO寄存器对应两组(BANK)GPIO信号。(1)GPIO中断使能寄存器(BINTEN)(2)GPIO方向寄存器(DIRn)0中断禁止

1中断使能0输出

1输入4.1通用输入输出接口GPIO(3)输出数据寄存器(OUT_DATAn)(4)GPIO数据置位寄存器(SET_DATAn)0低电平1高电平0无效

1输出高电平4.1通用输入输出接口GPIO(5)GPIO数据清除寄存器(CLR_DATAn)

0无效1输出低电平(6)GPIO输入数据寄存器(IN_DATAn)0逻辑低电平1逻辑高电平(7)GPIO上升沿中断设置寄存器(SET_RIS_TRIGn)0无效1允许引脚上电平由低变高产生中断(8)GPIO上升沿中断清除寄存器(CLR_RIS_TRIGn)

0无效1禁止引脚上电平由低变高产生中断(9)GPIO下降沿中断设置寄存器(SET_FAL_TRIGn)0无效1允许引脚上电平由高变低产生中断(10)GPIO下降沿中断清除寄存器(CLR_FAL_TRIGn)0无效1禁止引脚上电平由高变低产生中断(11)GPIO中断状态寄存器(INTSTATn)

0无中断1有中断申请4.1通用输入输出接口GPIO4.1.3

GPIO应用实例1.需求分析:控制GPIO0[0]、GPIO0[1]、GPIO0[2]、GPIO0[5]四个引脚上LED的亮灭;2.逐段剖析例4-1代码:使能外设时钟→配置引脚复用→设置方向寄存器→写输出数据寄存器控制LED;for(;;){ Delay(0x00FFFFFF);//延时

GPIOPinWrite(SOC_GPIO_0_REGS,3,GPIO_PIN_LOW);//D10灭GPIO0[2] GPIOPinWrite(SOC_GPIO_0_REGS,1,GPIO_PIN_HIGH);//D7亮GPIO0[0] Delay(0x00FFFFFF);//延时

GPIOPinWrite(SOC_GPIO_0_REGS,1,GPIO_PIN_LOW);//D7灭GPIO0[0] GPIOPinWrite(SOC_GPIO_0_REGS,6,GPIO_PIN_HIGH);//D6亮GPIO0[5] Delay(0x00FFFFFF);//延时 GPIOPinWrite(SOC_GPIO_0_REGS,6,GPIO_PIN_LOW);//D6灭GPIO0[5] GPIOPinWrite(SOC_GPIO_0_REGS,2,GPIO_PIN_HIGH);//D9亮GPIO0[1] Delay(0x00FFFFFF);//延时

GPIOPinWrite(SOC_GPIO_0_REGS,2,GPIO_PIN_LOW);//D9灭GPIO0[1] GPIOPinWrite(SOC_GPIO_0_REGS,3,GPIO_PIN_HIGH);//D10亮GPIO0[2]} 4.2中断系统中断是指DSP实现与外设之间实时交互的一种控制方式。当DSP在执行当前程序时由于内部或外部事件的触发中断请求,DSP暂时停止当前程序的执行,转而去执行相应的中断服务程序;待中断服务程序执行完毕后,DSP再返回原来被中断的程序继续执行。(1)C6748中断处理与响应过程产生中断请求:由外设触发中断条件或软件中断(应用程序中的软件中断指令)提出中断申请;响应中断:CPU按照中断使能状态和中断屏蔽状态判断是否响应可屏蔽中断;对于非屏蔽中断,CPU会立即做出响应;在响应中断时,CPU会清除流水线上尚未执行的指令,并将相关CPU内部寄存器保存在堆栈中,完成保护现场任务;执行中断服务子程序:CPU根据中断向量表找到中断服务子程序的入口地址,跳转并执行中断服务子程序;中断返回:执行完中断服务子程序之后,CPU从堆栈中恢复中断前内部寄存器的值,继续执行中断点之后的应用程序。4.2中断系统(2)C6748中断处理与响应过程C6748中断控制器的硬件架构框图如下图所示。中断选择器(InterruptSelector)将任意系统事件路由到12个可屏蔽中断。事件组合器(EventCombiner)能够将多个系统事件合并为一个单一事件,合并后的事件经过中断选择器送至DSP内核。异常组合器可将任意系统事件组合起来送入到DSP内核的硬件异常。4.2中断系统4.2.1事件组合器事件组合器的基本原理是通过“或”运算将一组系统事件标志“合并”为一个事件;将124个事件分成4组,组内事件按“或运算”归并为一个组合事件输出。4.2.2中断选择器中断选择器能够将128个系统事件(EVT1-EVT128)分配到DSP任意一个可屏蔽中断(INT4-INT15)。事件组合器与中断选择器组合使用能够让DSP同时处理批量中断,提供了中断处理效率。4.2中断系统4.2.3异常组合器C6748的DSP内核具有一个用于系统级、可屏蔽的异常输入(EXCEP),异常组合器(ExceptionCombiner)允许多个系统事件合并为单个异常事件输入到DSP内核,图4-26所示为异常组合器的架构原理。4.2中断系统4.2.4中断向量表中断向量表/中断服务表(IST)主要功能是相应的中断发生的时候,程序要跳转到相应的中断服务地址执行相应的指令。IST中每个中断向量能够存放8条32位指令(中断服务指令包,InterruptServiceFetchPacket(ISFP)),通常会用执行跳转指令,跳转到用户定义的中断服务子函数中;标准的ISFP最后两条指令是一条跳转到中断返回指针指令(BIRP),一条是延时指令(NOP5)以便分支目标能进入流水线的执行阶段。。4.2中断系统4.2.5中断寄存器C6748的DSP内核常用中断寄存器包括中断使能寄存器(IER)、中断标志寄存器(IFR)、中断清除寄存器(ICR)、中断服务表指针寄存器(ISTP)。(1)中断使能寄存器(IER)(2)中断标志寄存器(IFR)0中断禁止

1中断使能0中断未发生

1中断已发生4.2中断系统(3)中断清除寄存器(ICR)(4)中断服务表指针寄存器(ISTP)0中断标志位不清除

1中断标志位清除

ISTB中断服务表(IST)地址的基地址部分。

HPEINT当前挂起的已使能最高优先级中断。4.3定时器TMS320C6748片上有4个64位定时器(Timer0、Timer1、Timer2、Timer3),其中定时器1(Timer1)可以配置为看门狗定时器。定时器有4个基本模式:64位通用定时器,非链式双32位定时器,链式双32位定时器,看门狗定时器(仅Timer1)。

定时器可产生周期性中断与EDMA同步事件;看门狗定时器模式用于当器件处于错误状况时提供恢复机制。4.3定时器定时器具有三种工作模式:单次工作、持续工作和周期重载持续工作。(1)单次工作:定时器运行一个周期然后停止。(2)持续工作:定时器在每个周期结束自动清零并继续工作。(3)周期重载持续工作:定时器在每个周期自动获取重载寄存器的值并继续工作。4.3定时器4.3.164位通用定时器模式

定时器处于64位递增计数器状态,两个32位的计数器寄存器(TIM12和TIM34)组成一个64位的计数寄存器,两个32位的周期寄存器(PRD12和PRD34)组成一个64位定时器周期寄存器。定时器控制寄存器(TCR)的ENAMODE12位是使能与工作模式控制位:ENAMODE12=0定时器不运行并保持当前计数值ENAMODE12=1定时器使能为单次运行,计数值自增到与周期值相等并停止ENAMODE12=2定时器使能为持续运行,计数值将自增到达到周期值,然后自行复位为0并重新开始计数ENAMODE12=3定时器使能为周期性重载持续运行,计数值将自增到达到周期值后自行复位为0,用周期重载寄存器(REL12和REL34)的值重载周期值寄存器(PRD12和PRD34),又开始计数。4.3定时器4.3.2非链式双32位定时器模式

在该模式下,64位定时器分为两个独立的32位定时器:(1)带4位预分频的32位定时器

(2)无预分频的32位定时器定时器的计数器采用TIM12计数寄存器作为32位定时器计数寄存器,采用PRD12周期寄存器作为32位定时器周期寄存器。4.3定时器4.3.2链式双32位定时器模式配置定时器全局控制寄存器(TGCR)的TIMMODE=3时,定时器为链式双32位定时器。预分频器采用TIM34计数寄存器作为32位预分频计数寄存器,采用PRD34周期寄存器作为32位预分频周期寄存器。计数器采用TIM12计数寄存器作为32位定时器计数寄存器,采用PRD12周期寄存器作为32位定时器周期寄存器。4.3定时器4.3.4看门狗定时器模式结构

配置定时器全局控制寄存器(TGCR)的TIMMODE=1、看门狗定时控制寄存器(WDTCR)的WDEN=1时定时器处于看门狗定时器模式。在看门狗定时器模式下,定时器要求周期性执行“喂狗指令”;若没有执行“喂狗指令”,定时器的计数器自增直到达到定时器周期时将产生看门狗超时事件,并导致复位整个处理器。“喂狗指令”是按照顺序先写

A5C6h

到看门狗服务密钥寄存器(WDKEY),然后再写

DA7Eh

到WDKEY来复位看门狗定时器。任何其他的写入WDKEY位都将立即触发看门狗超时事件。4.3定时器4.3.5定时器寄存器C6748片上四组定时器都有各自的控制与功能寄存器组,常用寄存器主要包括:计数寄存器(TIM12和TIM34)、周期寄存器(PRD12和PRD34)、控制寄存器(TCR)、全局控制寄存器(TGCR)、看门狗定时控制寄存器(WDTCR)、重载寄存器(REL12和REL34)、捕获寄存器(CAP12和CAP34)、中断控制和状态寄存器(INTCTLSTAT)和比较寄存器(CMP0-CMP7)。(1)定时器计数寄存器(TIM12和TIM34)

(2)定时器周期寄存器(PRD12和PRD34)4.3定时器(3)定时器控制寄存器(TCR)4.3定时器(3)定时器全局控制寄存器(TGCR)(4)看门狗定时器控制寄存器(WDTCR)4.3定时器4.3.6定时器实例

(1)64位通用定时器实例【例4-2】实现64位通用定时器功能,LED间隔1秒循环点亮。/***********定时器初始化函数******************************/void

TimerInit(void){//配置

定时器2为64位模式TMR_CFG_64BIT_CLK_INT=0x00000013u

TimerConfigure(SOC_TMR_2_REGS,TMR_CFG_64BIT_CLK_INT);//设置周期

TimerPeriodSet(SOC_TMR_2_REGS,TMR_TIMER12,TMR_PERIOD_LSB32);

TimerPeriodSet(SOC_TMR_2_REGS,TMR_TIMER34,TMR_PERIOD_MSB32);//使能

定时器2

TimerEnable(SOC_TMR_2_REGS,TMR_TIMER12,TMR_ENABLE_CONT);}

/***********定时器中断初化****************************/void

TimerInterruptInit(void){ //注册中断服务函数

IntRegister(C674X_MASK_INT4,TimerIsr); //映射中断到DSP可屏蔽中断

IntEventMap(C674X_MASK_INT4,SYS_INT_T64P2_TINTALL); //使能DSP可屏蔽中断

IntEnable(C674X_MASK_INT4); //使能定时器中断

TimerIntEnable(SOC_TMR_2_REGS,TMR_INT_TMR12_NON_CAPT_MODE);}

4.3定时器4.3.6定时器实例

(1)64位通用定时器实例【例4-2】实现64位通用定时器功能,LED间隔1秒循环点亮。/************中断服务函数************************************/void

TimerIsr(void){//禁用定时器中断

TimerIntDisable(SOC_TMR_2_REGS,TMR_INT_TMR12_NON_CAPT_MODE);//清除中断标志

IntEventClear(SYS_INT_T64P2_TINTALL);

TimerIntStatusClear(SOC_TMR_2_REGS,TMR_INT_TMR12_NON_CAPT_MODE);//改变LED状态,两个LED对应引脚GPIO6[12]、GPIO6[13]

GPIOPinWrite(SOC_GPIO_0_REGS,109,Flag);Flag=!Flag;

GPIOPinWrite(SOC_GPIO_0_REGS,110,Flag);//使能定时器中断

TimerIntEnable(SOC_TMR_2_REGS,TMR_INT_TMR12_NON_CAPT_MODE);}

4.3定时器4.3.6定时器实例

(2)非链式双32位定时器实例【例4-3】使用的定时器1非链式双32位模式,使两个LED灯分别以1s、2s为周期闪烁。/***********定时器初始化函数******************************/void

TimerInit(void){//配置定时器1为非链式双32位模TMR_CFG_32BIT_UNCH_CLK_BOTH_INT=0x00000017uTimerConfigure(SOC_TMR_1_REGS,TMR_CFG_32BIT_UNCH_CLK_BOTH_INT);//设置周期

TimerPeriodSet(SOC_TMR_1_REGS,TMR_TIMER12,TMR_PERIOD12);TimerPeriodSet(SOC_TMR_1_REGS,TMR_TIMER34,TMR_PERIOD34);TimerPreScalarCount34Set(SOC_TMR_1_REGS,TMR_Prescale);//使能定时器1TimerEnable(SOC_TMR_1_REGS,TMR_TIMER_BOTH,TMR_ENABLE_CONT);}/***********定时器中断初化****************************/voidTimerInterruptInit(void){ //注册中断服务函数IntRegister(C674X_MASK_INT4,Timer12Isr);

IntRegister(C674X_MASK_INT5,Timer34Isr); //映射中断到DSP可屏蔽中断

IntEventMap(C674X_MASK_INT4,SYS_INT_T64P1_TINT12);

IntEventMap(C674X_MASK_INT5,SYS_INT_T64P1_TINT34); //使能DSP可屏蔽中断

IntEnable(C674X_MASK_INT4);

IntEnable(C674X_MASK_INT5); //使能定时器/计数器中断

TimerIntEnable(SOC_TMR_1_REGS,TMR_INT_TMR12_NON_CAPT_MODE|TMR_INT_TMR34_NON_CAPT_MODE);}

4.3定时器4.3.6定时器实例

(2)非链式双32位定时器实例【例4-3】使用的定时器1非链式双32位模式,使两个LED灯分别以1s、2s为周期闪烁。/************中断服务函数************************************/voidTimer12Isr(void){//禁用定时器中断

TimerIntDisable(SOC_TMR_1_REGS,TMR_INT_TMR12_NON_CAPT_MODE);//清除中断标志

IntEventClear(SYS_INT_T64P1_TINT12);

TimerIntStatusClear(SOC_TMR_1_REGS,TMR_INT_TMR12_NON_CAPT_MODE);//改变LED状态,LED对应引脚GPIO6[12]

Flag12=!Flag12;GPIOPinWrite(SOC_GPIO_0_REGS,109,Flag);//使能定时器中断

TimerIntEnable(SOC_TMR_1_REGS,TMR_INT_TMR12_NON_CAPT_MODE);}voidTimer34Isr(void){//禁用定时器/计数器中断TimerIntDisable(SOC_TMR_1_REGS,TMR_INT_TMR34_NON_CAPT_MODE);//清除中断标志IntEventClear(SYS_INT_T64P1_TINT34);TimerIntStatusClear(SOC_TMR_1_REGS,TMR_INT_TMR34_NON_CAPT_MODE);//改变LED状态,LED对应引脚GPIO6[13]Flag34=!Flag34;GPIOPinWrite(SOC_GPIO_0_REGS,110,Flag);//使能定时器中断TimerIntEnable(SOC_TMR_1_REGS,TMR_INT_TMR34_NON_CAPT_MODE);}4.3定时器4.3.6定时器实例

(3)链式双32位定时器实例【例4-4】使用定时器1链式双32位模式,LED间隔1秒循环点亮。/***********定时器初始化函数******************************/void

TimerInit(void){//配置定时器1为链式双32位模式TMR_CFG_32BIT_CH_CLK_INT=0x0000001Fu

TimerConfigure(SOC_TMR_1_REGS,TMR_CFG_32BIT_CH_CLK_INT);//设置周期

TimerPeriodSet(SOC_TMR_1_REGS,TMR_TIMER12,TMR_PERIOD12);TimerPeriodSet(SOC_TMR_1_REGS,TMR_TIMER34,TMR_Prescale);//使能定时器1

TimerEnable(SOC_TMR_1_REGS,TMR_TIMER12,TMR_ENABLE_CONT);}/***********定时器中断初化****************************/voidTimerInterruptInit(void){

//注册中断服务函数IntRegister(C674X_MASK_INT4,Timer12Isr);//映射中断到DSP可屏蔽中断IntEventMap(C674X_MASK_INT4,SYS_INT_T64P1_TINT12);//使能DSP可屏蔽中断IntEnable(C674X_MASK_INT4);//使能定时器中断TimerIntEnable(SOC_TMR_1_REGS,TMR_INT_TMR12_NON_CAPT_MODE);}

4.3定时器4.3.6定时器实例

(3)链式双32位定时器实例【例4-4】使用定时器1链式双32位模式,LED间隔1秒循环点亮。/************中断服务函数************************************/voidTimer12Isr(void){//禁用定时器中断

TimerIntDisable(SOC_TMR_2_REGS,TMR_INT_TMR12_NON_CAPT_MODE);//清除中断标志

IntEventClear(SYS_INT_T64P1_TINT12);

TimerIntStatusClear(SOC_TMR_1_REGS,TMR_INT_TMR12_NON_CAPT_MODE);//改变LED状态,LED对应引脚GPIO6[12]、GPIO[13]

GPIOPinWrite(SOC_GPIO_0_REGS,109,Flag);Flag=!Flag;GPIOPinWrite(SOC_GPIO_0_REGS,110,Flag);//使能定时器中断

TimerIntEnable(SOC_TMR_1_REGS,TMR_INT_TMR12_NON_CAPT_MODE);}

谢谢观看THANKYOUFORWATCHINGDSP原理与应用PrincipleandApplicationofDSP长沙师范学院信息科学与工程学院05第五章TMS320C6748串行通信外设学容UART通信模块I2C通信模块123习内SPI通信模块第五章串行通信外设

1、串行通信:通过单条传输线按顺序逐位传输数据的通信方式,常用于嵌入式设备之间的信息交互与数据传输。与并行通信相比:串行通信具有连线简单、成本低、抗干扰能力强、易于长距离传输等优点。第五章串行通信基础2、串行通信按同步机制分为:同步通信与异步通信。同步通信:收发双方事先约定数据传输的时序和速率,用共同的时钟信号协调收发;数据以数据块(帧)形式传输,帧头包含同步字符,字符之间没有间隔,传输速率高;典型协议有SPI、I2C。异步通信:以字符为单位传输,字符之间没有固定时间间隔;收发双方使用独立时钟,靠约定字符格式中的起始位和停止位实现同步;硬件成本低、工作灵活、适合长距离和不规则数据传输,但传输效率较低;典型协议有UART、CAN。TMS320C6748内部集成了I2C、SPI和UART三种串行通信外设接口,可快速构建嵌入式系统之间的数据交互与通信方案。5.1I2C通信模块I2C(Inter-IntegratedCircuit)是一种基于两线制的串行数据通信总线:一条串行数据线(SDA)和一条串行时钟线(SCL)。I2C总线支持多主机和多从机架构,但同一时刻仅允许一个主机占用总线。每个连接到总线上的设备都有一个唯一的地址(7位或10位),便于主机访问。通常情况下总线上只有一个主机负责发起所有的数据传输请求;若连接多个主机,则通过仲裁机制解决总线数据传输冲突,决定哪个主机获得总线控制权。5.1.1I2C总线的工作原理总线空闲时SCL和SDA线上都保持高电平;主机需要发送或接收数据时,先发起起始信号通知所有从机总线上要开始数据传输。I2C总线以8位字节为单位传输,传输是高位在前,低位在后;数据字节的最后通常跟随一个确认位(ACK)。5.1.1I2C总线的工作原理

起始信号:在SCL线为高电平期间,SDA线从高电平向低电平跳变(下降沿),表明总线上将开始一次新的数据传输操作。停止信号:在SCL线为高电平期间,SDA线从低电平向高电平跳变(上升沿),表示当前数据传输已经结束。5.1.1.2寻址方式主机发起数据传输时首先传送的是地址字节,通知该地址从机建立通信;符合地址的从机发送ACK信号位之后,主机和该从机才能进行数据字节的传输。

7位地址模式:起始信号后跟随的第一个字节由7位从机地址以及一个R/W位构成。R/W=0表示主机向从机写入(发送)数据;R/W=1表示主机从从机读取(接收)数据。5.1.1.2寻址方式10位地址模式:从机地址由两个字节发送。第一个字节由地址的两个最高位和11110b以及R/W=0(写)组成;第二个字节由剩余的8位地址构成,每个地址字节发送完之后从机必须发送确认(ACK)信息。5.1.2I2C外设结构I2C外设主要由以下部分组成:数据寄存器、控制与状态寄存器、时钟同步器、预分频器、噪声滤波器、仲裁器、中断逻辑生成器、EDMA事件生成器和接口引脚。

发送模式:CPU或EDMA控制器将要发送的数据写入ICDXR,ICDXR的数据被复制到ICXSR并逐位移位到I2Cx_SDA引脚上发送。

接收模式:接收到的数据移位进入ICRSR并被复制到ICDRR中,CPU或EDMA控制器从ICDRR中读取数据。5.1.2I2C时钟生成C6748的I2C外设时钟生成模块由预分频模块和时钟分配器组成。输入时钟首先经过预分频模块降频,降频之后的时钟要保持在6.7~13.3MHz之间。

时钟分配器对预分频模块时钟信号再次进行分频,产生I2C串行时钟:高电平时间由ICCLKH寄存器中的ICCH位决定,低电平时间由ICCLKL寄存器中的ICCL位决定。当I2C外设配置为主机时,该串行时钟会出现在I2Cx_SCL引脚上。5.1.2I2C时钟生成串行时钟频率计算:IPSC=0时:频率=输入时钟/((ICCH+7)+(ICCL+7));IPSC=1时:频率=输入时钟/((ICCH+6)+(ICCL+6));IPSC>1时:频率=输入时钟/((IPSC+1)×((ICCH+5)+(ICCL+5)))。5.1.3I2C寄存器1、自身地址寄存器(IC0AR)2、时钟分配寄存器(ICCLKL和ICCLKH)5.1.3I2C寄存器3、接收数据寄存器(ICDRR)4、传输数据寄存器(ICDXR)5.1.3I2C寄存器5、模式寄存器(ICMDDR)5.1.4I2C应用实例

【例5-1】对EEPROMAT24C02C的数据读写

AT24C02C是Microchip公司容量为2K位(256字节)的串行EEPROM芯片,采用I2C总线接口,支持可编程的3位地址引脚(A0、A1、A2),允许多设备级联;本例从机地址为0x50(A0、A1、A2全部接地),SCL、SDA分别与C6748的I2C0_SCL、I2C0_SDA连接。

操作模式:字节写、页写(一次最多写入8字节)、当前地址读、随机读、顺序读。

写操作:产生起始信号后先发送从设备地址(7位地址,R/W=0主机发送数据),接着发送内存地址,然后发送数据,最后发送停止信号。

随机读操作:先执行写操作(R/W=0)向AT24C02C写入要读取的内存地址,再转为读操作(R/W=1)读取数据,最后发送停止信号。5.1.4【例5-1】I2C核心代码IICInit:先复位/禁用I2C0(I2CMasterDisable),再配置总线速度100kHz(输入时钟24MHz、预分频后8MHz)、设置从设备地址,最后使能(I2CMasterEnable)。IICSend:等待总线空闲→设置发送数据大小(ICCNT→配置主机发送模式并置停止位(I2C_CFG_MST_TX|I2C_CFG_STOP)→启动发送→逐字节写入ICDXR→发送停止信号。IICReceive:等待总线空闲→设置数据大小→配置主机接收模式(I2C_CFG_MST_RX|I2C_CFG_STOP)→

温馨提示

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

评论

0/150

提交评论