DSP与单片机的一种高速通信实现方案((精选8篇))由网友“蜜汁小憨包”投稿提供,下面是小编整理过的DSP与单片机的一种高速通信实现方案,欢迎您阅读分享借鉴,希望对您有所帮助。
篇1:DSP与单片机的一种高速通信实现方案
DSP与单片机的一种高速通信实现方案
摘 要:介绍了一种利用双口RAM实现DSP与单片机高速数据通信的方法,给出了它们之间的接口电路以及软件实现方案。
关键词:DSP;双口RAM;接口电路;数据通信
1 引言
数字信号处理器(DSP)是一种适合于实现各种数字信号处理运算的微处理器,具有下列主要结构特点:(1)采用改进型哈佛(Harvard)结构,具有独立的程序总线和数据总线,可同时访问指令和数据空间,允许实际在程序存储器和数据存储器之间进行传输;(2)支持流水线处理,处理器对每条指令的操作分为取指、译码、执行等几个阶段,在某一时刻同时对若干条指令进行不同阶段的处理;(3)片内含有专门的硬件乘法器,使乘法可以在单周期内完成;(4)特殊的指令结构和寻址方式,满足数字信号处理FFT、卷积等运算要求;(5)快速的指令周期,能够在每秒钟内处理数以千万次乃至数亿次定点或浮点运算;(6)大多设置了单独的DMA总线及其控制器,可以在基本不影响数字信号处理速度的情况下进行高速的并行数据传送。
由一片DSP加上存储器、模/数转换单元和外设接口就可以构成一个完整的控制系统,但这种方案要达到高速实时控制是不可行的。因为一个实时控制系统一般需要完成数据采集、模/数转换、分析计算、数/模转换、实时过程控制以及显示等任务,单靠一片DSP来完成这些工作势必会大大延长系统对控制对象的控制周期,从而影响整个系统的性能。所以我们添加一个CPU,负责数据采集、模/数转换、过程控制以及人机接口等任务,使DSP专注于系统控制算法的实现,充分利用它的高速数据处理能力。从性能价格比的角度出发,这个CPU采用8位的51系列单片机。这时,两个CPU之间的数据共享就成了一个重要的问题。
采用双口RAM(简称DRAM)是解决CPU之间的数据共享的有效办法。与串行通信相比,采用双口RAM不仅数据传输速度高,而且抗干扰性能好。在笔者实验室研制的电力有源滤波器中,选用了TI公司的第三代DSP芯片TMS320C32和51系列单片机89C52作为控制系统的CPU。两个CPU之间通过双口RAM CY7C133完成数据交换。但在实际使用过程中遇到了89C52 与双口RAM总线宽度不匹配的问题,需要进行接口电路的设计。
2 双口RAM CY7C133的内部结构和功能
CY7C133是CYPRESS公司研制的高速2K×16CMOS双端口静态RAM,具有两套相互独立、完全对称的地址总线、数据总线和控制总线,采用68脚 PLCC封装形式,最大访问时间可以为25/35/55 ns。采用主从模式可以方便地将数据总线扩展成32位或更宽。各引脚的功能如表1所示,内部功能框图如图1所示。
CY7C133允许两个CPU同时读取任何存储单元(包括同时读同一地址单元),但不允许同时写或一读一写同一地址单元,否则就会发生错误。双口RAM中引入了仲裁逻辑(忙逻辑)电路来解决这个问题:当左右两端口同时写入或一读一写同一地址单元时,先稳定的地址端口通过仲裁逻辑电路优先读写,同时内部电路使另一个端口的信号有效,并在内部禁止对方访问,直到本端口操作结束。BUSY信号可以作为中断源指明本次操作非法。在主从模式中,主芯片的信号接上拉电阻作为输出,从芯片的信号作为写禁止输入。
3 DSP、单片机与双口RAM之间的接口电路
89C52的地址总线宽度为16位,数据总线为8位;TMS320C32的数据总线宽度为32位,地址总线宽度为24位。而CY7C133的数据总线宽度为16位,地址总线宽度为11位,所以TMS320C32与双口RAM的接口并无特别之处,但是89C52与双口RAM之间的接口电路中就需要对89C52进行总线扩展了。具体做法是利用锁存器74HC373的锁存功能,通过对其使能信号的控制,进行分时读写,实现数据总线的扩展,即利用锁存器作为虚拟总线。具体的读写过程、读写信号及锁存器使能信号的产生将在下面详细说明。DSP、单片机与双口RAM之间的接口电路如图2所示。
TMS320C32分配给双口RAM的地址空间为0x800000h~0x8007FFh。通过三八译码器74HC138对A20~A23和STRB进行译码,给出双口RAM的片选信号CER。89C52分配给双口RAM的地址空间为0x1000h~0x1FFFh。通过二四译码器74HC139对A13~A15进行译码产生双口RAM的片选信号CEL。双口RAM每边都有两个读/写控制信号,分别控制高位字节和低位字节的读/写,在使用时可以根据需要分别对数据的高位和低位进行写入操作。在图2所示接口电路中,两边的两个读/写控制信号分别被连接在一起,也就是说此时双口RAM的读写都是同时读写16位数据。
图2中双口RAM CY7C133的读写信号以及锁存器74HC373的使能信号的产生如图3所示。其中,WR是89C52的写控制信号,RD是89C52的读控制信号,A0是89C52的'地址最低位,A15是地址最高位,R/W是TMS320C32的读写控制信号,BUSYL接89C52的P1口的一个引脚(具体可根据系统实际情形自行选择,图中未画出),BUSYR接TMS320C32的READY信号。
下面讨论一下89C52对双口RAM的读写过程。当89C52对双口RAM进行读数据时,由图3可知此时A0应为低电平,不妨假设地址为0x1000h,则存储在双口RAM中该地址处的16位数据同时被读出,由于高8位数据线与89C52的8位数据线直接相连,所以高8位数据被立即读入89C52中。同时,根据图3中各信号的相互逻辑关系不难判断,U3的使能信号LE有效(高电平),OE无效(低电平),因而低8位数据被送入U3 中锁存起来。接着89C52再进行一次读操作,这时地址变为0x1001h,由于A0变成高电平,双口RAM的读使能信号变成无效电平,所以此次读操作对双口RAM不产生影响。再来看U3的使能信号LE和OE的变化情况,显然LE变成了无效电平,而OE变成了有效电平,上次被锁存的数据(即双口RAM的低8位数据)被送入89C52。当89C52对双口RAM进行写入操作时,注意此时A0应为高电平,不妨假设地址为0x100Ch,同样可根据图3判断U2的使能信号LE和OE均为有效电平,因而数据被同时写入双口RAM中(即此时双口RAM的高8位数据和低8位相同);接着89C52再进行一次写操作,此时地址变为0x100Dh,由于A0变成低电平,U2的片选为无效电平,U2被封锁,数据写入双口RAM的高8位。从上面的分析可知,利用最低地址位A0的不同电平,89C52通过两次连续的读或写操作,成功地实现了对双口RAM中数据的读或写,只不过是读入时是先读入高8位,后读入低8位;而写入则是先写入低8位,后写入高8位。
4 软件实现方案
双口RAM必须采用一定的机制来协调左右两边CPU对它的读写操作,否则会出现读写数据的错误。通常可以用中断、硬件、令牌和软件这四种方式来协调双方,本文采用的是软件方式。从上面的分析中我们可以得知,在接口电路中实际上已经利用89C52的最低地址位A0把双口RAM的存储空间分为奇、偶地址两个空间。其中,奇地址空间专供89C52写,偶地址空间专供89C52读。那么我们只需对TMS320C32的软件作相应处理即可,也就是说,TMS320C32对双口RAM的奇地址空间只读,对偶地址空间只写。这样就避免了TMS320C32和89C52对双口RAM同一地址单元的写入操作。另外,在对双口RAM进行访问之前,CPU首先对本端的BUSY信号进行查询,只有本端/BUSY信号无效时才进行读写操作,进一步保证了数据读写的可靠性。
5 结束语
通过双口RAM实现双CPU之间的数据通信,极大地提高了数据传输速度和可靠性,满足了控制系统的实时、高速的控制要求。本文所设计的89C52与双口RAM之间的接口电路简单实用,成功解决了它们总线匹配的问题,对其他类似需要总线扩展的系统也有一定的参考价值。
篇2:DSP与单片机的一种高速通信实现方案
DSP与单片机的一种高速通信实现方案
摘 要:介绍了一种利用双口RAM实现DSP与单片机高速数据通信的方法,给出了它们之间的接口电路以及软件实现方案。
关键词:DSP;双口RAM;接口电路;数据通信
1 引言
数字信号处理器(DSP)是一种适合于实现各种数字信号处理运算的微处理器,具有下列主要结构特点:(1)采用改进型哈佛(Harvard)结构,具有独立的程序总线和数据总线,可同时访问指令和数据空间,允许实际在程序存储器和数据存储器之间进行传输;(2)支持流水线处理,处理器对每条指令的操作分为取指、译码、执行等几个阶段,在某一时刻同时对若干条指令进行不同阶段的处理;(3)片内含有专门的硬件乘法器,使乘法可以在单周期内完成;(4)特殊的指令结构和寻址方式,满足数字信号处理FFT、卷积等运算要求;(5)快速的指令周期,能够在每秒钟内处理数以千万次乃至数亿次定点或浮点运算;(6)大多设置了单独的DMA总线及其控制器,可以在基本不影响数字信号处理速度的情况下进行高速的并行数据传送。
由一片DSP加上存储器、模/数转换单元和外设接口就可以构成一个完整的控制系统,但这种方案要达到高速实时控制是不可行的.。因为一个实时控制系统一般需要完成数据采集、模/数转换、分析计算、数/模转换、实时过程控制以及显示等任务,单靠一片DSP来完成这些工作势必会大大延长系统对控制对象的控制周期,从而影响整个系统的性能。所以我们添加一个CPU,负责数据采集、模/数转换、过程控制以及人机接口等任务,使DSP专注于系统控制算法的实现,充分利用它的高速数据处理能力。从性能价格比的角度出发,这个CPU采用8位的51系列单片机。这时,两个CPU之间的数据共享就成了一个重要的问题。
采用双口RAM(简称DRAM)是解决CPU之间的数据共享的有效办法。与串行通信相比,采用双口RAM不仅数据传输速度高,而且抗干扰性能好。在笔者实验室研制的电力有源滤波器中,选用了TI公司的第三代DSP芯片TMS320C32和51系列单片机89C52作为控制系统的CPU。两个CPU之间通过双口RAM CY7C133完成数据交换。但在实际使用过程中遇到了89C52 与双口RAM总线宽度不匹配的问题,需要进行接口电路的设计。
2 双口RAM CY7C133的内部结构和功能
CY7C133是CYPRESS公司研制的高速2K×16CMOS双端口静态RAM,具有两套相互独立、完全对称的地址总线、数据总线和控制总线,采用68脚 PLCC封装形式,最大访问时间可以为25/35/55 ns。采用主从模式可以方便地将数据总线扩展成32位或更宽。各引脚的功能如表1所示,内部功能框图如图1所示。
CY7C133允许两个CPU同时读取任何存储单元(包括同时读同一地址单元),但不允许同时写或一读一写同一地址单元,否则就会发生错误。双口RAM中引入了仲裁逻辑(忙逻辑)电路来解决这个问题:当左右两端口同时写入或一读一写同一地址单元时,先稳定的地址端口通过仲裁逻辑电路优先读写,同时内部电路使另一个端口的信号有效,并在内部禁止对方访问,直到本端口操作结束。BUSY信号可以作为中断源指明本次操作非法。在主从模式中,主芯片的信号接上拉电阻作为输出,从芯片的信号作为写禁止输入。
3 DSP、单片机与双口RAM之间的接口电路
89C52的地址总线宽度为16位,数据总线为8位;TMS320C32的数据总线宽度为32位,地址总线宽度为24位。而CY7C133的数据总线宽度为16位,地址总线宽度为11位,所以TMS320C32与双口RAM的接口并无特别之处,但是89C52与双口RAM之间的接口电路中就需要对89C
[1] [2] [3]
篇3:一种数字语音通信系统的DSP实现
一种数字语音通信系统的DSP实现
摘要:介绍了一种甚低频低码率数字通信系统的实现方案,该方案中的软件采用混合编程的方法,硬件则用DSP实现,文章给出了整个系统的DSP软硬件调试方法,并通过调试结果表明该方案具有很好的可行性和实时性。关键词:软件无线电;DSP;混合编程
1引言
现代通信系统已不断由模拟体制向数字化体制过渡,并越来越倾向于采用“软件无线电”的设计方案。即通过构造通用的硬件平台,以使各种相关的通信任务能够用软件完成,从而构成一个具有高度灵活性、开放性的通信系统。现代的DSP通用处理器为实现这一方案提供了极大的便利。
软件无线电的设计思想是:用一个通用、标准、模块化的硬件平台为依托,然后通过软件编程来实现无线电台的各种功能,从而取代基于硬件、面向用途的电台设计方法。功能的软件化实现势必要求减少功能单一、灵活性差的硬件电路,尤其是减少模拟环节,并把数字化处理?A/D、D/A?尽量靠近天线。软件无线电强调体系结构的开放性和全面可编程性。它通过软件的更新来改变硬件的配置结构,从而实现新的功能。软件无线电一般采用标准的、高性能的开放式总线结构,此结构利于硬件模块地不断升级和扩展。
本文介绍一种利用TMS320C31浮点型DSP芯片为核心来设计并实现甚低频低码率数字化语音通信系统的方法。这种通信系统是以DSP硬件为平台,并用硬件来实现系统的外围功能,而用软件来实现核心部分的数字化处理,从而完成整个系统的正常通信工作。
2DSP硬件平台
本通信系统的主要功能是实现语音的数字化传输,其系统功能图如图1所示。具体工作过程如下:
整个通信系统分为两大部分,其工作状态转换由外附的MCU控制。在发送时,语音通过克麦风之后进入语音压缩板进行采样量化及数字化压缩,压缩后的比特流从串口送入DSP内进行调制,调制信号依次通过信道DAC、平滑滤波和功放,然后发送出去;在接收时,前置放大部分送来的`信号再经过一次放大之后送往信道AD转换器,转换的数据FIFO通过中断方式送给DSP进行解调,在DSP内解调之后的数据仍然通过串口送往语音压缩板解压后经扬声器输出。
根据系统要求,本设计选定的DSP是TI公司的TMS320C31。信道AD转换器件选用ANALOGDE-VICE公司的AD7870,它是一个12bit的ADC,具有2μs的片上信号放大时间和8μs的转换时间,最高转换速率为100kHz,可以提供三种输出接口方式?12bit并行方式、字节方式和串行方式?。信道DAC选用的是TI公司的TLV5619,这是一种12bit单通道电压型DA转换器。系统中的ADC和DAC转换器都以并行12bit方式直接和FIFO相连。FIFO?FirstInFirstOut?采用的是双端口RAM构架,其读指针和写指针是完全分开的,可实现读写操作的完全独立,因此,这里选用CYPRESS公司的CY7C425。
3软件实现
本通信系统中的软件采用C语言和混合编程,其中主程序和一部分子程序用C语言编写,而一些运算量比较大的算法子程序则用汇编语言编写,这样,既容易进行调试,又可以提高软件的执行效率,可达到最佳利用DSP芯片的软硬件资源之目的。
整个软件的主程序由发送部分程序段和接收部分段两部分组成,主程序流程图见图2所示,每个程序段又分别是一个独立的程序体,可以独立的实现通信系统的发送和接收功能。
由于要求系统能够实时完成通信任务,故相应的程序须和硬件相互配合,它们各操作之间的同步协调要求很高。而本系统可充分利用DSP芯片所提供的中断和定时器资源来很好地实现系统功能。
串行口发送/接收中断子程序用于完成DSP对串口的发送和接收任务,发送定时器中断子程序流程图如图3所示,图4所示是串口接收中断子程序的流程图。
在系统实现过程中,由于采用了混合
编程,并对运算量比较大的算法用汇编程序来实现,因此,在对128点FFT算法采用汇编语言编程后,可经CCS仿真进行测试。汇编程序的执行时间为111113个时钟周期?2.78ms?,可在一帧时间内?30ms?完成5次FFT和IFFT的帧同步算法,而用C语言实现时的程序执行时间为1812409个时钟周期?45.3ms?。可见,用汇编程序的执行效率有明显的提高。
4结束语
DSP软硬件开发设计是应用TMS320C31芯片进行的,这一方案在运用仿真器进行软硬件联合调试时取得了很好的效果,由此可见,在硬件设计合理的情况下,将C语言和汇编语言很好的结合,可充分发挥各自的优势,从而达到最佳的设计效果。
篇4:TM1300 DSP系统的以太网通信接口的设计与实现
TM1300 DSP系统的以太网通信接口的设计与实现
摘要:介绍了TM1300DSP的特点,给出了通过TM1300的PCI接口驱动以太网芯片来实现以太网通信接口的设计方法。该设计将TM1300和以太网结合起来,因而可以方便地实现视频通信,文章详细介绍了该方案的软件和硬件的设计要点,最后给出了对模拟数据和实际视频压缩码流的传送实验结果。关键词:PCI总线TM1300以太网通信接口pSOS+内核pNA+
1概述
TM1300是Philips公司推出的新一代高性能多媒体数字信号处理器芯片。基于TM1300的DSP应用系统适合于实时声音、图像处理,可广泛应用于会议电视、可视电话、数字电视等应用场合。它不仅具有强大的处理能力,同时还具有非常友好的音频和视频以及SSI和PCI等I/O接口,因此可以根据应用的需要灵活地构造各种视频通信系统。鉴于目前计算机网络的普及和网上视频业务的发展,很有必要为TM1300视频编码系统开发一个以太网接口以拓宽其应用范围。开发以太网接口的一种合理思路是利用TM1300集成的PCI接口来驱动专用的以太网接口芯片。由于目前多数以太网接口芯片(如Real-tek8029,Realtek8139等)都采用PCI接口,因此,可以用PCI总线将数据从TM1300传输到这些专用的以太网接口芯片后,再由它们发送数据,而且TM1300可以在嵌入式操作系统pSOS中运行,同时由于系统pSOS带有TCP/IP协议栈?因此可以方便地完成编码码流的TCP/IP封装。
根据以上思路?笔者在进行了前期测试的基础上进行了电路板的设计?并顺利完成了调试。目前?这个以太网接口已经基本开发成功。本文将对这个设计的技术要点从硬件和软件两个方面进行详细介绍。
2TM1300及PCI总线接口
该系统的硬件结构框图如图1所示。本系统硬件设计的重点是PCI总线接口。PCI总线根据数据位的宽度有32位和64位之分,64位的数据线与32位是兼容的。PC机中常见的是32位PCI总线,它的有用引脚总数是110个,可以分成3组。第一组是基本功能信号线,包括32位共享数据地址线AD〔00..31〕、接口控制线、仲裁线、时钟线、系统复位线、中断线;第二组是附加功能信号线,包括错误报告线、cache功能支持线、JTAG边界扫描线;第三组是电源线,包括设备耗电量标识线、3.3V电源线(12根)、5V电源线(13根)、地线(22根)。
因为Realtek8029不具备PCI的附加功能信号线所支持的cache功能和JTAG边界扫描功能,同时虽然它具有奇偶校验错误报告功能引脚,但该脚可以悬空不用。所以,设计时只需考虑第一组功能信号线的连接即可。
PCI接口的设计有以下几个要点:
(1)PCI总线的仲裁
这里先说明两个概念。首先,PCI总线是多设备共享的,由于PC机里可以有多个PCI设备,所以需要使用仲裁器;其次,PCI设备有主设备和从设备之分,主设备可以发起PCI数据的传送?从设备只能被动地响应主设备的操作以对读操作和写操作做出响应。PCI的仲裁引脚是REQ和GNT,分别为请求线和授权线,而且只有PCI主设备有这两个引脚。一般情况下,REQ通常和GNT成对地连到仲裁器,而设备与设备的REQ和GNT通常是互不相连的。
PCI总线的仲裁过程是这样的:PCI主设备把REQ电平拉低以表示向仲裁器请求占用总线。经仲裁获准后,仲裁器把这个设备的GNT电平拉低以表示请求获准,此后该设备便可以使用总线了。当它不再使用总线时,应使REQ信号变为高电平?仲裁器就不再给它分配总线资源。在本系统中,TM1300是PCI主设备,而Realtek8029是PCI从设备。由于它们不存在共享总线的问题,所以不需要仲裁器,而只是简单地把REQ和GNT短接即可,这就相当于TM1300自己给自己授权。
(2)PCI_IDSEL信号线在设备的PCI配置读写中的作用
PCI有一种特殊的读写周期,称为配置读写。这是因为在系统引导时,如果没有给设备配置I/O或内存地址,软件就只能通过配置来读写访问设备。配置读写有两种,分别称为0型和1型?具体采用哪一种取决于总线的硬件连接。配置读写操作不经过PCI桥时,使用0型,当需要经过PCI桥时,则要用1型,0型读写的地址直接就是总线上的地址,1型读写的地址则要经过PCI桥的译码才能成为最终的总线地址。本设计中,TM1300和Realtek8029是用PCI总线直连的,所以使用0型配置读写。
AD〔00..31〕是PCI总线的共享地址和数据线,每一次PCI传送都分为地址周期和数据周期。在地址周期,采用0型读写时,AD〔00..31〕的内容如下,AD〔00〕和AD〔01〕总为“00”,因为配置读写是以双字为单位的,AD〔02〕~AD〔07〕是要读写的PCI配置空间的寄存器号?AD〔08〕~AD〔10〕是设备的功能号?在一块PCI卡上有多个功能设备时,为了进一步区分不同的设备就要用到这几位,由于Realtek8029是单功能设备,故这几位全为0,AD〔11〕~AD〔31〕是设备选择位,其中必须有且仅有一位为“1”,如图2所示,这在物理上表现为总线的AD〔11〕~AD〔31〕中有一根为高电平?如果输出高电平的这根线与某块PCI卡的PCIIDSEL引脚相连,这块卡就会被激活,这样,在紧接着的数据周期中,它就会将其PCI配置空间相应寄存器中的内容放到总线上以供读取。
(3)PCI_FRAME、PCI_DEVSEL、PCI_IRDY、PCI_TRDY引脚的处理
上述四个引脚均是低电平有效,因此需要接上拉电阻,以保证在设备未驱动该引脚时处于稳定的无效状态,上拉电阻的阻值在1kΩ~10kΩ范围内,阻值越小,则将该信号驱动为有效的时间越短,但太小又会导致电流过大,所以,要权衡考虑,本设计选用4.7kΩ。
上述三点对脱机情况下PCI设备的互连具有较普遍的参考意义,除此之外,本设计还有以下比较特殊的几点:
●应将TM1300的PCI,INTA引脚配置为输入,以便接收Realtek8029的中断;
●PCI时钟由TM1300提供;
●Realtek8029的复位信号也就是TM1300的复位信号,该信号由外部电路提供;
●TM1300的PCISTOP、PCISERR引脚悬空,表示Realtek8029不具备相应的附加功能。另外,TM1300的'PCIINTB、PCIINTC、PCIINTD引脚可以用作用户中断。
3软件设计
该接口设计的软件结构框图如图3所示。其中TM1300运行于pSOS,它是一个简单的实时多任务嵌入式操作系统,带有pNA+网络组件,其pNA+相当于TCP/IP协议栈的扩展,它向上可提供应用程序编程的socket接口,向下可定义一个与网络接口层交互的接口,其中包括8个函数,分别是:ni_init(接口芯片初始化)、ni_broad-cast(发送广播分组)、ni_send(发送普通分组)、ni_getpkb(申请发送缓冲区)、ni_retpkb(归还接收缓冲区)、ni_ioctl(I/O控制操作)、ni_pool(统计量查询)、Announce(网络接口驱动调用它把接收到的数据包提交给pSOS)。其中网络接口层在本应用中就是Realtek8029的驱动程序,它通过硬件抽象层来驱动Realtek8029(硬件抽象层是PCI总线的配置读写和I/O读写指令集的总称)。
软件执行的流程大致是:系统首先启动pSOS,并由它加载网络接口驱动程序,然后调用驱动程序的ni_init函数,同时初始化Realtek8029的PCI配置空间并设置Realtek8029的工作参数,之后启动用户任务。在这里,用户任务为H.263编码进程。它对VI口读入的源图像进行压缩编码后,将调用socket的接口函数sendto(sendto是UDP套接口专用的发送函数),然后把码流发送给pSOS由pSOS根据UDP协议进行封装后,再调用ni_send函数,并由ni_send完成数据包从系统主内存到Realtek8029片上RAM的拷贝,然后启动Realtek8029发送数据。在接收情况下,Realtek8029收到一个完整的数据包后会用中断通知CPU,然后由CPU执行中断服务程序。当中断服务程序将数据包从Realtek8029片上RAM中拷贝到系统的主内存后,系统将调用Announce函数并把数据块的指针、数据长度和其它信息提交pSOS,最后由pSOS将数据包沿协议栈一层层上传并作出相应的处理。
软件的设计和pSOS操作系统的关系比较密切,限于篇幅,本文不对pSOS作详细介绍,。本文接下来重点介绍PCI配置空间的配置过程,这部分对于类似的设计有较普遍的参考意义。PCI配置空间有64个字节,PCI片内的这些寄存器存储了该芯片的厂商号、设备号、设备类型等重要代码,还包括命令寄存器、基地址寄存器等控制其总线行为的寄存器,它们必须在设备初始化时正确配置,否则设备不能工作。
对Realtek8029PCI空间的配置需要三个步骤:
首先是扫描总线,这一步的目的是找到Real-tek8029的配置地址,直观地讲,就是找到它的PCI_IDSEL引脚和哪根AD线相连,因为后续的配置写要根据这个地址来寻址。扫描总线时,要对AD〔11〕到AD〔31〕每根线进行一次扫描,如果哪根AD线连接了一个PCI设备的PCIIDSEL引脚,那么用配置读函数读取PCI配置空间的0号寄存器时,应该返回该设备的设备和厂商代码,如果这根线实际未连接设备,则返回值是0。已知Realtek8029的设备和厂商代码是“0x802910ec”,如果返回值与之相同,说明找到了Realtek8029,这时要记下这根AD线的序号。例如,在硬件上把Realtek8029的PCIIDSEL和AD〔20〕相连,则扫描到的序号就应该是“20”。
其次,用配置写函数配置I/O读写使能,即在command寄存器中写入“0x1”。
最后,用配置写函数配置I/O地址,也就是在I/OBaseAdddress寄存器写入分配给该设备的I/O地址(例如“0xe400”)。具体程序流程图如图4所示。
4调试结果
根据以上设计,笔者在原TM1300视频编码硬件系统的基础上加入了PCI接口,并编写了pSOS下Realtek8029的驱动程序。然后,在这个硬件平台上对Realtek8029的驱动部分进行了数据传送测试。
笔者首先用一个单独的UDP发送任务进行发送速率测试。这个任务主要是高速地向网络上的一台PC发送数据包,数据包的大小是变长的。PC接收并对丢包数进行统计的结果如表1所列。实验表明,在用网线直连的各种测试速率情况下都没有出错,而当接入局域网后,在发送速率为4.5Mbps时有突发的少量错误。由于UDP是不可靠的传输方式,所以这种错误是正常的。测试中,UDP发送的最高速率可以达到5Mbps左右,它与硬件的最高速率(10Mbps)相比还有一定差距,主要原因是数据从系统主内存到Realtek8029片上RAM的拷贝过程目前尚未采用DMA方式,这是需要改进的地方。
表1丢包数统计表(单位:丢包个数/分钟)
连接方式发送速率800kbps1.8Mbps4.5Mbps网络直连000接入局域网002.5
接下来笔者进行了编码和传送的联合测试。编码任务执行H.263数据压缩后,把码流从以太网接口发出,然后在网络上的另一台PC上接收这个码流,并进行解码播放。通过调整编码器的量化步长可以控制编码的输出码率。在实验环境下发现?在量化步长大于等于5、码率在700kbps以下时,基本没有丢包现象,解码得到的图像比较稳定,而当量化步长进一步减小,码率接近1Mbps时,就会出现丢包现象,解码的图像会出现彩色方块。出现这种现象是因为H.263编码器对CPU资源的消耗很大,而且数据在主内存和Realtek8029片上RAM之间的复制采用I/O读写方式也需要一定的CPU资源。这样,当量化步长小于5时,处理的复杂度超过了CPU的能力从而产生了一定的误码。解决的途径一方面是改进数据的传送方式(采用DMA),另一方面是需要对编码任务进行优化。
5小结
本文介绍了PCI总线接口的设计以及PCI空间初始化的步骤,同时对测试结果进行了较详细的分析,提出了以后改进的方向。
篇5:TM1300 DSP系统的以太网通信接口的设计与实现
TM1300 DSP系统的以太网通信接口的设计与实现
摘要:介绍了TM1300 DSP 的特点,给出了通过TM1300的PCI接口驱动以太网芯片来实现以太网通信接口的设计方法。该设计将TM1300和以太网结合起来,因而可以方便地实现视频通信,文章详细介绍了该方案的软件和硬件的设计要点,最后给出了对模拟数据和实际视频压缩码流的传送实验结果。关键词:PCI总线 TM1300 以太网通信接口 pSOS+内核 pNA+
1 概述
TM1300是Philips公司推出的新一代高性能多媒体数字信号处理器芯片。基于TM1300的DSP应用系统适合于实时声音、图像处理,可广泛应用于会议电视、可视电话、数字电视等应用场合。它不仅具有强大的处理能力,同时还具有非常友好的音频和视频以及SSI和PCI等I/O接口,因此可以根据应用的需要灵活地构造各种视频通信系统。鉴于目前计算机网络的普及和网上视频业务的发展,很有必要为TM1300视频编码系统开发一个以太网接口以拓宽其应用范围。开发以太网接口的一种合理思路是利用TM1300集成的PCI接口来驱动专用的以太网接口芯片。由于目前多数以太网接口芯片(如Real-tek8029,Realtek8139等)都采用PCI接口,因此,可以用PCI总线将数据从TM1300传输到这些专用的以太网接口芯片后,再由它们发送数据,而且TM1300可以在嵌入式操作系统pSOS中运行,同时由于系统pSOS带有TCP/IP协议栈?因此可以方便地完成编码码流的TCP/IP封装。
根据以上思路?笔者在进行了前期测试的'基础上进行了电路板的设计?并顺利完成了调试。目前?这个以太网接口已经基本开发成功。本文将对这个设计的技术要点从硬件和软件两个方面进行详细介绍。
2 TM1300及PCI总线接口
该系统的硬件结构框图如图1所示。本系统硬件设计的重点是PCI总线接口。PCI总线根据数据位的宽度有32位和64位之分,64位的数据线与32位是兼容的。PC机中常见的是32位PCI总线,它的有用引脚总数是110个,可以分成3组。第一组是基本功能信号线,包括32位共享数据地址线AD〔00..31〕、接口控制线、仲裁线、时钟线、系统复位线、中断线;第二组是附加功能信号线,包括错误报告线、cache功能支持线、JTAG边界扫描线;第三组是电源线,包括设备耗电量标识线、3.3V电源线(12根)、5V电源线(13根)、地线(22根)。
因为Realtek8029不具备PCI的附加功能信号线所支持的cache功能和JTAG边界扫描功能,同时虽然它具有奇偶校验错误报告功能引脚,但该脚可以悬空不用。所以,设计时只需考虑第一组功能信号线的连接即可。
PCI接口的设计有以下几个要点:
(1)PCI总线的仲裁
这里先说明两个概念。首先,PCI总线是多设备共享的,由于PC机里可以有多个PCI设备,所以需要使用仲裁器;其次,PCI设备有主设备和从设备之分,主设备可以发起PCI数据的传送?从设备只能被动地响应主设备的操作以对读操作和写操作做出响应。PCI的仲裁引脚是REQ和GNT,分别为请求线和授权线,而且只有PCI主设备有这两个引脚。一般情况下,REQ通常和GNT成对地连到仲裁
[1] [2] [3] [4]
篇6:基于DSP的上网方案的软硬件设计与实现
基于DSP的上网方案的软硬件设计与实现
摘要:介绍了TMS320VC33芯片与RTL8019网卡的硬件接口电路的设计以及网卡驱动程序的开发,并将TCP/IP协议嵌入到TMS320VC33芯片中;讨论了TCP/IP协议簇的分层次实现,并根据应用的需要对DSP中实现的TCP/IP协议进行了必要的简化,实现了DSP的上网功能。关键词:TCP/IP协议DSP嵌入式系统
随着现代网络技术的发展,嵌放式系统如单片机、DSP等系统对接入网络的需求日益增加,例如具有远程抄表功能的电表系统、楞以进行远程控制的信息电系统等。本文采用TI公司的TMS320VC33DSP芯片设计与Realtek公司的RTL8019网卡的硬件接口电路,并在DSP中用软件实现TCP/IP协议,使DSP芯片具备上网功能,从而可以用计算机通过网卡与DSP电路板进行大量数据交换并对其进行控制。
1硬件设计
DSP与网卡的硬件接口电路图如图1所示。
DSP的数据总线低16位接ISA网卡的16位数据线,ISA网卡的IOCS16线接高电平,设置网卡为16位的模式。
网卡共有20根地址线。将A7~A8、A10~A19接地,A0~A6和A9分别接DSP的A0~A7,用到的网卡地址为0240H~025FH,映射到DSP的Page3空间,地址映射为C000C0H~C000DFH。
DSP的Reset信号用于复位网卡,由于DSP的Reset信号低有效,而网卡的Reset信号高有效,故中间应接非门。
DSP的Page3和R/W信号用于选能网卡的读写信号IOR、IOW,实现的逻辑关系如图2所示。
IORQ是网卡的中断9,通过非门后接DSP的INT1引脚。
RTL8019网卡有三种工作方式:
第一种为跳线方式,网卡的I/O和中断由跳线决定;
第二种为即插即用方式,由软件进行自动配置plugandplay;
第三种为免跳线方式,网卡的I/O和中断由外接的93C46里的内容决定。
计算机上一是即插即用方式,为了降低软件编程的复杂度,将网卡设置为跳线方式。
上述所有的译码逻辑都在EPM7129中实现。
74ALVC16425是总线驱动芯片,可实现3.3V到5V的电平转换。由于TMS320VC33和EPM7128是3.3V的器件,而ISA总线是5V的,所以信号线不能直接连接,需要通过74ALVC164245进行电平转换和隔离。
2软件设计
2.1网卡硬件驱动程序的设计
网卡驱动程序主要包括以下几部分:
(1)NIC的初始化
NIC是网络接口控制芯片,它负责网络上数据的接收和发送。为了能够使NIC启动并处于准备接收或准备发送数据的状态,必须对相关的寄存器进行初始化。这些寄存器包括CR、DCR、RBCR、PSTART、PSTOP、ISR、IMR、PAR0~PAR5、MAR0~MAR7、CURR、TCP、RCR等。
(2)中断服务程序
中断服务程序一般完成两项任务:一是设置中断标志,以使相关程序能以此发现发生了中断;二取得中断状态寄存器的值,并将引起中断的具体原因提交给相应的程序,这一过程也是通过设置中断原因标志完成的。需要注意的,中断服务程序开始的时候要保护中断现场,待程序处理完成后要恢复中断现场;中断服务程序应尽可能短小,以便在尽可能短的时间内执行完成,因此需要将一些不民要的工作交给其它程序来完成。
(3)帧发送程序
在网络中,帧传输的过程是:发送方将待发送的数据按帧格式要求封装成帧,然后通过网卡将帧发送到网络的传输线上;接收方根据接收到的帧的目的地址研究是否将该帧提交给上层应用程序。帧的发送是指将待发送的数据以帧的形式发送到网络传输线上,因此,帧的发送过程应该包括以下几个步骤:
①装帧;
②将帧送入NIC的发送缓冲区;
③初始化发送控制寄存器;
④启动NIC将该帧发送到网络传输线上。
(4)帧接收程序
帧接收是指将网络上的数据帧接收并缓存于网卡的接收缓冲环中,然后由主机程序将缓存于接收缓冲环的帧读走并存入内存中以备程序使用。从中可以看出,帧的接收过程分成两卡;
①第一步由NIC通过本地DMA将帧存入接收缓冲环;
②第二卡是通过远程DMA并在主机的配合下将接收缓冲环中的帧读入内存。
2.2TCP/IP协议的实现
2.2.1DSP中与PC机中实现TCP/IP协议不同
TCP/IP协议最先是在UNIX系统中实现的,后来在LINUX、DOS和WINDOWS系统中也实现了TCP/IP。但是,在UNIX上实现的TCP/IP协议的源代码并不能直接移植到DSP上来,这是因为PC机和DSP存在着巨大的差异。
PC机的运算速度非常快,一般都有一个多任务的操作系统,可以多任务并行执行,通过硬中断与中断、消息队列和各种插口实现ATCP/IP各协议层之间的通信和整个网络的通信。而DSP运行速度相对较慢,缺乏多任务操作系统的平台,只能通过顺序执行加硬件中断的方式来实现,并且因其还要同时执行数据采集、串口中断等任务,所以中断程序应尽量短,只完成设置各种状态的标志位,而将相对较慢的网络数据包的处理放在主程序中执行,以减少各种任务之间的冲突。
PC机的内存非常大,现在一般都可达到32~128M的存储容量,可以动态地分配和释放内存,很容易实现存储器缓存mbuf、网络控制块ncb等链状结构,且可随意增删;同时能维护多条网络连接,由于计算机处理速度快,几乎不用考虑缓冲区溢出的问题。而DSP内部RAM一般只有十几K,加上外部扩展的RAM也只能达到几十K的容量,一个最大的以太网数据包就有1.5K左右,如果也按PC机的内存管理方式和数据结构,使用mbuf链,RAM肯定不够用,因此只能在RAM中分配一个固定的1514字节的区段来存放接收到的'以太网数据包,接收一包处理一包。
PC机中TCP/IP协议都是分层次实现的,相互之间都是通过参数传递进行联系,这样有利于提高程序的模块化和独立性。而在DSP中,由于参数传递会占用过多的程序空间,且降低DSP的执行速度,所以应尽量减少参数传递,转而使用全局变量和外部变量等来达到值的传递,因此各程序间的依赖程度大,往往会共享某一些变量和数据。
PC机上实现了比较完整的TCP/IP协议。而在DSP中,由于运算速度和内存的限制,不可能支持所有的协议,一般只实现需要的部分,不需要的协议一概都不支持;而且即使需要的协议也不用像在PC机上实现那么复杂,可以根据硬件的具体情况和实现的需求进行必要的简化。
2.2.2TCP/IP协议的具体实现
TCP/IP协议是一个协议簇,包含了很多协议,在DSP上实现的所有协议如图3所示,通常可分为四层(不包括物理层)。
根据DSP的结构特点和所需要实现的功能,在DSP中实现了ARP(地址解析协议)、IP(网际协议)、ICMP(Internet控制报文协议)、UDP(用户数据报协议)和TCP(传输控制协议),并对它们进行了简化。
2.2.2TCP/IP协议的具体实现
TCP/IP协议是一个协议簇,包含了很多协议,在DSP上实现的所有协议如图3所示,通常可分为四层(不包括物理层)。
根据DSP的结构特点和所需要实现的功能,在DSP中实现了ARP(地址解析协议)、IP(网络协议)、ICMP(Internet控制报文协议)、UDP(用户数据报协议)和TCP(传输控制协议),并对它们进行了简化。
在链路层中实现了ARP。每种网络都有自己的寻址机制,以太网通过以太网地址即通常所说的网卡硬件地址MAX进行寻址的,每个网卡出厂时都有一个唯一的MAC地址。IP地址则仅仅是对于TCP/IP簇有意义的地址,是一种虚拟地址。当赋予IP地址的IP包要在以太网中传播时,必须将IP地址转化为以太网地址才能进行正确的传输。ARP协议就是将32位的IP地址动态地映射为48位的以太网地址,从而保证网络的正确传输。ARP协议由两个文件arpin.c和arpout.c实现。arpin.c负责接收网络上广播的arp包,判断arp包的类型是网络上其它机子的请求包还是返回本机的响应包,判断其合法性并进行相应的处理;arpout.c负责主机向网络发送数据报时发送arp请求包以及被arpin.c调用响应收到的arp请求包。
在网络层中实现了IP和ICMP。IP协议是TCP/IP协议簇中最核心的协议,它提供无连接的数据报传送服务,所有上层协议都要以IP数据包格式传输。IP协议由两个文件ipin.c和ipout.c实现。Ipin.c负责接收IP数据包,收到IP包后,首先判断其版本号、
数
据长度、目的地址、检验和是否正确,再根据IP首部的协议类型字段的值交给相应的上层协议处理;ipout.c负责发送IP数据包,接收上层协议传递下来的数据,加上20字节的IP首部,正确设置源IP地址和目的IP地址、协议类型,计算检验和,交给下面的链路层发送。PC机上的IP数据包,当它的长度超过网络的MTU时,允许对它分段;在DSP中,则不支持IP数据包分段,也不支持IP选项字段。ICMP协议负责传递差错报文以及其它需要注意的信息,且由ICMP首部8位的类型字段和8位的代码字段决定信息的种类。在DSP中只实现了对回显请求(类型代码为80)报文的处理,从IP层收到ICMP包后,判断其类型代码段是否为80。如果是,将这两个字段设置为00(回显应答),计算检验和,再交给IP层发送;如果不是,则予以丢弃。从而实现了对ping功能的支持。
图4
在运输层实现了UDP和TCP。
UDP协议是一种面向无连接的不可靠的协议,用两个文件udpin.c和udpout.c来实现。udpin.c实现对udp包输入的处理,判断其端口号、检验和是否正确,正确则将其数据交给相应端口的应用程序,不正确则丢弃;udpout.c实现对udp包输出的处理,从应用程序接收数据,设置相应的源端口号和目的端口号,再交给IP层发送。值得注意的是,计算UDP包的检验和与计算IP包的检验和是不一样的,IP包的检验和只覆盖了IP包的首部,而UDP包的检验和则覆盖了UDP包的首部和所有的数据。UDP包计算检验和时还引入了一个12字节的伪首部,包括4字节的源IP地址、4字节的目的IP地址、1字节的零段、1字节的协议段和两字节的检验和,其目的是让UDP两次检查数据是否正确地到达了目的地。TCP协议与UDP协议虽然同是运输层协议,但是它提供一种面向连接的可靠的字节流服务。TCP协议是所有协议中最复杂、也是最难实现的一块,主要由tcpin.c、tcpout.c、tcptimer.c和tcpstatem.c四个文件分块实现,并根据具体应用的需要进行简化。TCP的控制块tcb用结构体来实现,每一个tcb包含一条TCP连接的所有控制和状态信息,全部的tcb形成了一个双向链表,有利于在所有TCP连接中进行搜索。tcptimer.c负责管理TCP协议中的各种状态信息,它内含前向后向指针,使之形成定时器超时,PC机上的TCP协议包含快慢两个定时器,这里仅仅实现了一个500ms的慢速定时器,因为没有快速定时器,所以不支持ACK报文延迟,收到一帧即立即发送ACK;tcpstatem.c是TCP的状态机函数,根据TCP连接所处的不同状态以及发生的事件来决定TCP连接的状态变迁;tcpout.c负责tcp报文的发送,典型的发送过程是当接收到上层应用程序的数据时,首先发送SYN帧,与目标节点三次握手建立连接,之后加上TCP首部,交给下层IP模块发送,并通过重传定时器实现超时重发、持续定时器发送窗口探测帧等功能,待所有数据发送完毕并得到确认后发送FIN帧,通过四次握手关闭连接,tcpout.c还可在不同状态和事件下被其它程序调用发送ACK帧、RST帧等其它TCP报文;tcpin.c负责接收从下层IP模块接收到的TCP数据包,并根据TCP连接的状态信息以及TCP首部的各个标志位进行分支处理,将数据交给对应端口的上层应用程序,并调用其它函数实现对TCP包的响应和状态变迁。在PC机上往往可以同时维护多条TCP连接;但在DSP上,由于DSP速度和RAM容量的限制,只支持一条TCP连接;这样大大简化了程序的复杂度,同时也满足了实际需要,如果今后有需要,还可以进行扩展。综上所述,TCP/IP协议的具体处理流程如图4所示。
本文通过DSP与网卡的硬件接口的设计及编程,使DSP实现了基于以太网的TCP/IP通信,从而使DSP可以通过网线进行联网,并可以实时地与计算机进行通信,交换大量的数据和控制信息。本文所介绍的技术已经在作者参加的国家“973”项目"复杂自然环境时空定量信息的获取与融合处理的理论与应?quot;的硬件设计中得到应用,并运行良好。
篇7:PLC与单片机串口通信设置模式和实现方法论文
PLC与单片机串口通信设置模式和实现方法论文
摘 要:作为一种应用较为广泛的现代化通信技术模式, PLC与单片机串口通信的合理设置和实现, 能够充分地提升行业内部的信息数据交换效率。相关领域的工作人员在日常管理和建设的活动中, 不断地完善PLC串行口与单片机的通信协议, 优化PLC串行口与单片机的通信流程, 有效地拓展PLC串行口与单片机应用途径, 结合现代科学技术, 为二者的有机融合与合理应用提供更为广阔的空间。本文对PLC与单片机串口设置模式进行了简单概述, 分析了PLC串口参数设置以及单片机串行口通信设置的方式;在此基础上, 进一步分析了PLC与单片机串口通信实现的方式。本文旨在为关注这一领域的人士提供一些可行性较高的参考意见, 为我国通信事业的发展做出积极贡献。
关键词:PLC; 单片机; 串口参数;
对于现代通信事业来说, 串行口的合理接入, 可以提升通信和管理的效率, 以更加方便灵活的'特点, 组成更加高效的通信系统。因此, 如何在此种环境下, 分析出PLC与单片机串口通信设置模式和实现方法, 成为了相关领域工作人员的工作重点之一。
1、 PLC与单片机串口通信设置模式
1.1、 PLC串口参数设置
PLC串行口主要通过对系统寄存器进行设置的方式, 达到系统串行接口初始化的目的。例如, 在进行操作的过程中, 可以应用fp1的系统寄存器, 在制定的位置上, 对串口的波特率进行控制。当串口波特率被控制在h00时, 便可以确定一个起始位、一个停止位以及八个数据位。在这一过程中, 没有奇偶校验位。串口的波特率可以设置在寄存器之中, 通过计算机连接通信的方式, 完成PLC串行口参数设置[1].
1.2、 单片机串行口设置
单片机内部的都有一个串行口, 在发送端和接收端两个位置, 对寄存器进行控制。在对软件进行的设置的过程中, 专业技术人员需要对四种不同的通信方式进行集中管理。在单片机串行口的8位异步通信接口中, 可以通过集成点对点的接口方式, 实现8位数据的同时传输。在每一帧信息当中, 都按照一个起始位、一个停止位和八个数据位的组成结构, 将CPU晶振控制在11.0592 MHz, 应用9600bps的波特率, 实现对寄存器状态以及定时器的溢出率确定工作。
2、 PLC与单片机串口通信实现方式
2.1、 完善PLC串行口与单片机的通信协议
根据前文的分析和论述可以得出, 传统的PLC串行口与单片机可以完成串口通信, 但是在现代化科学技术持续发展的背景下, 传统的规定和标准协议无法持续提供给PLC串行口与单片机合理地使用保障, 相关领域的工作人员需要在日常规划和设计时, 完善PLC串行口与单片机的通信协议, 提升PLC串行口与单片机使用的稳定性和有效性。例如, 我国某地区的通信公司, 在对PLC串行口与单片机进行维护时, 采取了异步串行通信的方式, 着重对字符的格式和波特进行了规定。以协议的方式, 提升了PLC串行口与单片机在通信活动中的可靠性。当地通信公司还将FCS的计算方法进行了优化, 提高了信息数据的传输效率[2].
2.2、 优化PLC串行口与单片机的通信流程
当单片机的串行端口存在一个数据寄存器sbup时, 在特定条件下, 当单片机向数据寄存器当中写入了数据, 就完成了发送的流程。若此时, 单片机向sbup当中读入数据时, 系统便启动了该项接受过程。当发送的过程结束之后, 单片机会同PLC一起发出命令帧格式, PLC对此作出相应的反应, 进而完成响应帧格式设定[3].这一过程通常被称为接受通信过程, 主要由单片机进行启动以及接受等多项操作, 并且基本上不需要应用PLC对程序进行编制。发出命令帧的格式主要为呼叫字符、特殊标志位以及PLC站号等。
2.3、 拓展PLC串行口与单片机的应用途径
PLC串行口与单片机在现代化通信系统当中, 具有较为广泛的应用效果, 作为一种集成电路, 单片机可以组成多种不同的应用系统。单片机构成的应用系统规模各异, 从微型、小型、中型到大型系统, 都可以根据用户的实际需求进行设定。相比之下, PLC串行口与单片机中的PLC在进行系统设计时, 主要采用了配合外围电路系统的方式, 实现功能的设计。例如, 国内某地区通信公司, 在利用PLC串行口与单片机对通信系统进行优化设计的过程中, 采用了C语言和汇编语言等方式, 在多个不同的领域实现了高效应用。针对单片机在日常使用和维护中存在的困难, 当地通信公司的技术部门工作人员还对单片机和PLC进行了系统优化, 借助了PLC快捷且成功率高可靠性好的优势, 提升了通信系统整体使用效率[4].在尽可能降低经济成本的同时, 逐步扩大PLC串行口与单片机的经济效益和社会效益。该地区的通信企业, 将PLC串行口与单片机合理地应用到了日常生活中的公共交通卡、安保系统、全自动家电控制等方面, 为人们的生活带来了极大的便利。
3、 结束语
作为一种应用较为广泛的现代化通信技术模式, PLC与单片机串口通信的合理设置和实现, 能够充分地提升行业内部的信息数据交换效率。相关领域的工作人员在日常管理和建设的活动中, 不断地完善PLC串行口与单片机的通信协议, 优化PLC串行口与单片机的通信流程, 有效地拓展PLC串行口与单片机应用途径, 结合现代科学技术, 为二者的有机融合与合理应用提供更为广阔的空间。
参考文献:
[1]叶翠安。三菱PLC与单片机间串口通信的实现[J].船电技术, , 35 (5) :66-69.
[2]胡家华, 徐鹏, 郑昌雨, 等。PL2303单片机串口转USB口实现串行通信[J].单片机与嵌入式系统应用, , 13 (4) :76-77+81.
[3]党强。PLC与单片机串口通信的实现[J].数字技术与应用, (4) :123+125.
[4]李丽艳。S7-226 PLC与AT89S51单片机串行通信设计研究[J].无线互联科技, (12) :147.
篇8:通过SPI接口协议实现DSP与其它设备的通信
通过SPI接口协议实现DSP与其它设备的通信
摘要:介绍了SPI通信协议,给出了将TI公司生产的TMS320C5402 DSP用于SPI协议通信的串口配置方法和接口电路设计,同时给出了串口McBSP的配置程序。关键词:多通道缓冲串行口 McBSP TMS320C5402 μPD780308 SPI DSP
1引言
随着信息技术革命的深入和计算机技术的飞速发展,DSP技术也正以极快的速度被应用到科技和国民经济的各信领域。在很多工程开发设计中,由于要求实现单片DSP与单片DSP、多片DSP芯片以及及其它处理芯片之间的通信,因此,怎样更高效、(本网网收集整理)更便捷的实现这些通信,已成为广大DSP应用者首先要解决的一个问题。
本文根据笔者在工程应用和调试方面用TI的DSP TMS320C5402与NEC的μPD780308单片机进行通信的经验,介绍并讨论了将TMS320C5402 DSP的多通道缓冲串行口McBSP(Multi-channel Buffered Serial Port)配置为SPI模式(即时钟停止模式),从而实现DSP与其它单片处理器之间的通信设计方法同时给出了实现方法的部分程序代码。
2 多通道缓冲串行口McBSP
多通道缓冲串行口McBSP的功能是提供器件内外数据的串行交换。同以前的串口相比,McBSP串口具有相当大的灵活性。表1给出了有关TMS320C5402的McBSP管脚说明。其中串口接收、发送时钟和同步帧信号既可由外部设备提供,又可由内部时钟发生器提供,从而大大的提高了通信的灵活性。
表1 TMS320C5402的有关McBSP管脚说明
管脚说明说 明DR数据输入端DX数据输出端CLKR接收数据位时钟CLKX发送数据位时钟FSR接收数据帧时钟FSX发送数据帧时钟CLKS外部提供的采样率发生器时钟源3 SPI协议中的McBSP时钟停止模式
SPI协议是以主从方式工作的,这种模式通常有一个主设备和一个或多个从设备,其接口包括以下四种信号:
(1)串行数据输入(也称为主进从出,或MISO);
(2)串行数据输出(也称为主出从进,或MOSI);
(3)串行移位时钟(也称为SCK);
(4)从使能信号(也称为SS)。
图1为设备的SPI接口示意图。该接口在工作时,主设备通过提供移位时钟和从使能信号来控制信息的流动。从使能信号是一个可选的高低电平,它可以激活从设备(在没有时钟提供的情况下)的'串行输入和输出。在没有专门的从使能信号的情况下,主从设备之间的通信则由移位时钟的有无来决定,在这种连接方式下,从设备必须自始至终保持激活状态,而且从设备只能是一个,不能为多个。
TMS320C5402提供的时钟停止模式可用于SPI协议通信,当McBSP被配置为时钟停止模式时,发送器和接收器在内部是同步的,即可将发送数据帧时钟(FSX)用作从使能(即SS),而将发送数据位时钟(CLKX)用作SPI协议中SCK。由于收数据位时钟(CLKR)和接收数据帧时钟(FSR)在内部与FSX和CLKX是相连的,因此,该管脚不能用于SPI模式。
当McBSP被配置为一个主设备时,传送输出信号(BDX)被用作SPI协议的MOSI信号,而接收输入信号(BDR)则被用作MISO信号。图2所示为McBSP用作主设备时的SPI接口示意图。
同样地,当McBSP被配置为一个从设备时,BDX被用作MISO信号,BDR则被用作MOSI信号。图3为McBSP用作从设备的SPI接口示意图。
当TMS320C5402的McBSP被用于时钟停止模式时,寄存器SPCR1的CLKSTP位域和引脚配置寄存器的CLKXP位的配置如表2所列。
表2 时钟停止模式配置
CLKSTPCLKXP说 明
0XX不可用时钟停止模式。时钟被激活用于非SPI模式100时钟开始于上升沿(无延迟)110时钟开始于上升沿(有延迟)101时钟开始于下降沿(无延迟)111时钟开始于下降沿(有延迟)4 其它有关寄存器的配置
为了更好地掌握和了解McBSP作为SPI设备时的有关寄存器配置,现以McBSP作为SPI从设备来介绍有关McBSP的其它有关寄存器的配置,若McBSP做为SPI主设备,则相关配置正好相反。当McBSP作为SPI从设备时,主设备外部产生主时钟。CLKX引脚和FSX引脚必须被设置为输入。由于CLKX引脚和CLKR信号在内部相连接,因而传送和接收回路均由外部主时钟计时(CLKX)。同时,由于FSX引脚和FSR信号也已在内部连接,因此,CLKR引脚和FSR引脚不再需要外部信号的连接。
尽管CLKX信号由主设备外部产生且与McBSP同步,但是,McBSP的采样率发生器仍然必须正确启动SPI从设备,同时,采样率发生器还应被设置为最大速率(CPU时钟速率的一半)。另外,内部采样率时钟常被用来同步McBSP逻辑和外部主时钟以及从使能信号。每次传送时,McBSP一般在从使能信号的上升沿进行FSX输入。也就是说,在每次传送的开始,主设备必须维护使能信号,而在每次传送完成后,则必须消除从使能信号。在两次传送之间,从使能信号不能一直保持为高电平。对正确的SPI从设备而言,McBSP的数据延迟参数必须设置为0,在这种运行模式中,设置值为1或2没有定义。配置McBSP为从设备所需的寄存器位值如表3所列。
表3 SPI操作模式下的寄存器位值表
位 域值功能描述寄存器CLKXM0配置BCLKX引脚为输入PCRCLKSM1由CPU时钟产生的采样率时钟SRGR2CLKGDV1为采样率时钟选择2的划分因素SRGR1FSXM0配置BFSX引脚为输入PCRFSGM0对每个包传送,BFSX信号被激活SRGR2FSXP1配置BFSX引脚为活动低电平PCRXDATDLY0为SPI从设备运行,必须为0XCR2RDATDLY0为SPI从设备运行,必须为0RCR25 程序设计
下面是有关TMS320C5402器件的McBSP各个控制寄存器的配置,该配置程序笔者在实践中已经过测试,并已成功运用在了某工程设计中。
Void McBSP1_Config(void)
{
offlset=0x0000;
SPCR11=0x1800; ;配置串口时钟停止模式CLKSTP=10
offlset=0x0001;
SPCR21=0x0222;
offlset=0x0005;
SRGR11=0x00FA;
offlset=0x0007;
SRGR21=0xa00F;
offlset=0x0002;
RCR11=0x0040; ;接收一帧含一字,一字含16位
offlset=0x0003;
RCR21=0x0044; 接收数据无延迟RDATDLY=00
offlset=0x0004;
XCR11=0x0040; ;发送一帧含一字,一字含16位
offlset=0x0005;
XCR21=0x0044; ;发送数据无延迟XDATDLY=00
offlset=0x000E;
PCR1=0x000; ;发送时钟由外部时钟驱动,CLKX为输入脚CLKX=0,发送时钟极性CLKXP=0,发送帧同步极性FSXP=1
offlset=0x0008;
MCR11=0x0001;
offlset=0x0009;
MCR21=0x0001;
offlset=0x000C;
XCERA1=0x0003;
offlset=0x0001;
SPCR21=0x0262;
offlset=0x0001;
SPCR21=0x0263;
offlset=0x0000;
SPCR11=0x1801; ;接收器有效
offlset=0x0001;
SPCR21=0x02e3; ;发送器有效
Return;
}
6 结束语
串行SPI通信协议是一种标准的通信协议,很多场合下都采用这种机制,文中将DSP作为从设备的目的是时钟可由主设备来提供,因此不用再专门去调试时钟,这种方式在开发中比较方便。

【DSP与单片机的一种高速通信实现方案(精选8篇)】相关文章:
嵌入式实习总结2023-02-11
嵌入式系统低功耗软件技术分析论文2022-11-04
信号处理系统在大学生电子设计竞赛中的应用2022-12-02
红外遥控在汽车中的应用论文2022-04-30
基于高速串行BCD码除法的数字频率计的设计2022-09-21
电子信息工程专业就业前景分析2023-11-15
数字信号处理心得体会2022-09-25
基于流水线技术的并行高效FIR滤波器设计2023-06-11
何为低耗电、超高速的无线技术“UWB”?网络知识2022-04-28
usb设计理念范文2022-07-21