当前位置:首页 > 控制
  • 基于Linux和S3C2410的嵌入式图象传输系统设计

    1 引言 如何更好的获得监控现场的图象数据一直是棘手的一个问题,传统的方法是采用CCD摄象机获取现场的视频信息,这种方法易于实现,但成本较高。随着 ARM系列处理器应用的越来越广和基于linux的嵌入式技术的迅速发展,利用linux自身带有的TCP/IP协议来实现远程监控、图象传输已成为可能。本文提出的正是一种这样的方法,利用市场上很常见的中星微系列的USB摄象头来得到现场的图象数据,利用linux内核中的Video4Linux编程接口函数采集图象,并把得到的图象通过Internet传输到上位机PC上,在PC上实现图象的保存和显示。 2 硬件系统设计原理 系统的硬件功能框图如图1所示,CPU采用的是三星公司的S3C2410。该处理器内部集成了A R M 公司A R M 9 2 0 T 处理器核的3 2 位微控制器,并带有独立的16KB的指令Cache 和16KB的数据Cache、L C D 控制器、R A M 控制器、NAND 闪存控制器、3路UART、4路DMA 、4路带PWM 的Timer、并行I/O口、8路10位ADC、触摸屏接口、I2C接口、I2S接口、2个U S B 接口控制器、2路SPI,主频最高可达203MHZ。在此基础上,平台还进行了相应的配置和扩展,配置了4MB16位的Flash和8MB32位的 SDRAM,通过以太网控制芯片DM9000E扩展了一个网口。引出了一个UART接口,通过RS232可以和宿主机做串口通讯。并引出了一个HOST USB接口,通过在USB接口上外接一个带USB的摄象头将采集到的图象数据放入输入缓冲区中。对缓冲区的数据进行处理,最后通过网口发送到Internet上,在PC上保存和接收。   图 1 S3C2410系统平台的硬件功能框图 3 软件系统设计 本文的软件系统设计采用C/S(客户机/服务器)模式,以S3C2410平台作为服务器,以PC作为客户端。服务器的主要任务是把得到的图象数据发送到Internet上去,客户端的任务主要是从Internet上接收得到的数据,并把数据以保存成文件。下面分别讨论两者的具体实现。 3.1 服务器端软件系统设计 3.1.1 建立宿主机开发环境 本文以PC为宿主机,并带有RedHat9.0系统,开发环境就建立在这个平台上,其主要包括:交叉编译器的的选择和安装、NFS和TFTP服务器的配置等。 对于嵌入式系统的开发,由于没有足够的资源在目标板上运行开发工具和调试工具,所以通常采用交叉编译调试的方式。开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码。然后把可执行文件下载到目标机上运行。本文采用的交叉编译器为arm-linux-gcc,具体安装不再赘述。为了方便调试和下载烧写,可让宿主机支持NFS和TFTP服务器。需要特别说明的是为了支持TFTP服务器需要在安装RedHat9.0时须选择完全安装,如果没有选择完全安装,需要将第三张光盘里面的tftp-server-0.32-4.i386.rpm和tftp-0.32-4.i386.rpm安装到宿主机下。 3.1.2 摄象头驱动程序的实现 系统采用的是最普通的USB摄像头,主芯片为中星微ZC0301P。这种摄象头的一个特点是可以实现硬件JPEG编码。其驱动程序的编写重点包括下面的内容:提供基本的I/O 操作接口函数open、read、write、close的实现、对中断的处理实现、内存映射功能以及对I/O 通道的控制接口函数ioctl的实现等,并把它们定义在struct file_operations中。这样当应用程序对设备文件进行诸如open、close、read、write等系统调用操作时,Linux内核将通过file_operations结构访问驱动程序提供的函数。 当然,现在网上已经有了这种摄象头的通用驱动,可以从相关网站 下载usb-2.4.31.patch.gz,然后将这个补丁打到内核对应的位置即可。但是对有些内核版本的linux系统,在打补丁时,会产生 Config.in.rej和Makefile.rej。这时只需要将这两个文件中修改失败的部分手动添加到对应的Config.in和Makefile 中去就可以了。 3.1.3 linux内核配置 对于已经做过基本移植的linux在配置内核的时有以下几个方面是值得注意的: 1)因为要用到内核中的Video4Linux编程接口函数,所以在配置内核时首先必须选中Video for Linux并且最好是直接编译进内核而不用编译成模块的形式再加载; 2)要选中USB Support、OHCI、UHCI。并在USB Support下的USB Multimedia devices 中选中对应的摄象头,对本系统来说,选择USB SPCA5XX Sunplus Vimicro Sonix Cameras,并把它配置成Module。 3)配置完内核后做make dep, make zImage, make module。则在对应的spca5xx目录下会生成spc5xx..o,可以把spc5xx..o通过NFS mount到目标板上或者加到主文件系统ramdisk中的某个目录下。然后在目标板上做 insmod spca5xx.o就会找到摄象头。 3.1.4 服务器端应用程序的编写 完成驱动程序和内核配置后就开始应用程序的编写了,程序首先用交叉编译器在宿主机上进行编译连接,生成的的可执行文件通过NFS mount到目标板上进行调试。调试成功后再固化到文件系统ramdisk中去。其实现主要有下面几个步骤: 1) 初始化设备基本信息 2) 打开设备文件,读取设备基本信息和信号源基本信息,并设置video_mmap并为定义的帧结构分配缓冲区并初始化线程互斥量 3) 创建图象获取的线程。该线程函数实现以内存影射的方式读取设备中的数据,锁定线程互斥量,接着对帧结构的各个元素赋值。并解锁互斥量。使该过程做一个死循环。 4) 创建一个基于连接的socket,并绑定到一个端口上,开始在该端口上侦听。 5) 当有连接到来时,创建一个图象发送的线程。该线程函数实现:如果确定读取了客户端的数据,则把缓冲区内的一帧数据发送到网络上。让这个过程也为死循环。 6) 控制两个线程的同步 7) 如果程序退出,则关闭套接字,释放分配的资源。 可以看出,程序的内容主要有三个部分:图象采集部分,图象的网络发送部分和程序的多线程控制部分。下面分别介绍一下这三个部分主要涉及的内容。 在图象采集部分,定义了一个数据结构,它的主要成员变量有: Video_capability 包含基本的设备信息(设备名称、支持的最大最小分辨率、信号源信息) video_channel 关于各个信号源的属性 video_mbuf 利用mmap进行映射的帧的信息 video_buffer 最底层对buffer的描述 video_mmap 用于mmap pthread_mutex_t 线程互斥量 截取图象方法有两种:直接读取设备文件和内存影射的方法,本文采用后面一种。采用这种方法后,普通文件被映射到内存地址空间,进程可以象访问普通文件一样访问内存,这样做的一个好处是可以提高效率。做视频截取的两个主要函数是: n ioctl(vd->fd, VIDIOCMCAPTURE, &(vd->mmap)) 若调用成功,开始一副图象的截取。是否截取完毕留给VIDIOCSYNC来判断。 n ioctl(vd->fd, VIDIOCSYNC, &frame)若调用成功,表明一帧截取已完成。可以开始做下一次截取 对于网络发送部分,主要是linux下的socket编程,调用的主要函数有:创建套接字函数socket、端口绑定函数bind、监听函数 listen、等到连接函数accept、数据接收函数read、数据发送函数write等。这些函数的具体定义和用法具体可以查阅相关资料 。需要说明的是为了能够正确发送一帧数据,要把定义的帧的结构体设置为单字节对齐,具体方法是在结构体的定义后面加上 _attribute_((packed))。 多线程编程部分用到的主要函数有:互斥量初始化函数pthread_mutex_init、互斥量锁定函数pthread_mutex_lock、互斥量解锁函数pthread_mutex_unlock、互斥量注销函数pthread_ mutex _destroy、线程创建函数pthread _ create、线程同步函数pthread_join。此外,程序中为了能更好的实现两个进程的同步,还需要用到信号量机制的一些内容。受篇幅所限,这些函数的具体定义和用法请参考相关资料 。 3.2 客户机端软件系统设计 客户端是建立在一台PC机上,用Visual C++ 6.0设计一个基于MFC的界面作为接收端。在接收端主要完成从网络缓冲区内读取数据,并保存成文件的形式,文件以接收到数据的时间为名。图2为图象采集时间间隔为1秒时程序执行的结果。图象大小为320 象素。需要说明的是:服务器端发送的数据采用了单字节对齐,对应的在客户端接收的时候也要采用单字节对齐。在WINDOWS下实现内存单字节对齐的方法是在定义的帧结构体前面加上#pragma pack (1),并在其定义之后加上#pragma pack ()。   图2 客户端程序执行结果(1秒种采集一次图象) 4 结束语 本文提出了一套基于S3C2410平台和linux系统的嵌入式图象采集、传输系统的具体实现,并给出了实验结果。实验结果证明:系统很好的完成了图象采集和传输。得到的图象清晰。服务器可以稳定运行,不会发生断开或退出的现象。本系统可应用于工业现场的监控,也可以与其他系统如门禁系统相结合获得门开或关时现场的重要图象数据。 参考文献 [1] Alessandro Rubini著 LISOLEG译,linux设备驱动程序开发,中国电力出版社,2002 [2] 乔晓丹张鹏,一个基于Linux操作系统的嵌入式网关的实现,微计算机信息,2005年第21卷第7-2期 [3] 朱刚 等,Linux网络编程,科学出版社,2000. [4] 于明俭 等,linux程序设计权威指南 机械工业出版社 2001. [5] http://mxhaard.free.fr/embedded.html

    时间:2014-06-22 关键词: 闪存 接口 嵌入式开发 控制 缓冲

  • 赛灵思XPS 8.2版本开发套件推进嵌入式处理的开发

    新版本的Platform Studio引入了独特的处理支持并增强了设计的便捷性 作者:Jay Gould Xilinx嵌入式解决方案市场部高级产品经理 jay.gould@xilinx.com 如果问使用Xilinx Platform Studio (XPS)嵌入式工具套件的用户,他们需要什么功能来满足其下一代终极处理设计的需要?他们必然会回答:“性能和先进的处理功能。” 为了满足嵌入式环境的要求,工程师必须设法从现有大多数成本经济的器件中一点点地挖掘出性能,并且,他们在设计和调试两个方面都需要方便使用的工具。 XPS 8.2版本是普遍使用的嵌入式开发套件(EDK)的一种,赛灵思在其中增加了新型的高度最优化的MicroBlaze?软处理核,支持一体化的 PowerPC浮点单元(FPU),并且增加了对Virtex-5 LX最新器件的支持。与其纯粹利用单个处理器的时钟频率来衡量性能提升的程度,嵌入式设计工程师不如利用集成了更快速的硬处理核、灵活的软处理核及附加的协处理引擎所有优势的XPS套件,不论它们是FPU、其它IP或用于卸载和分配工作负载的附加的处理核。此外,新型的XPS增加了大量的增强功能、调试可视性,并在使用方便性上进行了改进。 新型器件和处理支持 2006年5月,赛灵思推出了Virtex-5 LX器件,这种FPGA平台在65nm的三栅极氧化层架构上集成了高级系统功能,从而能够完全支持嵌入式处理。与上一代FPGA相比,Virtex-5技术把半导体器件的性能提高了30%,与此同时,功耗降低了30%以上。灵活的处理IP外设容许客户精确地构建需要的定制解决方案,而不必增加额外的器件成本或在昂贵但不需要的器件选择上造成浪费。 为了在高性能Virtex-5 LX器件中最有效地利用嵌入式设计,赛灵思优化了MicroBlaze用于65nm工艺的软处理核,并且增加了一些特殊的增强功能,以实现每条指令较少的周期(CPI)。赛灵思的MicroBlaze 5.0处理器配备5级管线及可选的4或8字高速缓冲存储器以提升性能。新型的MicroBlaze嵌入式处理器与为初期的实例编写的代码后向兼容,所以,客户不会因处理器的退化而遇到麻烦。那些采用Spartan系列FPGA进行嵌入式设计的工程师们可以继续沿用现有的MicroBlaze 4.0核,这个核已经针对高性能应用进行了优化,而且同时拥有有最小的占位面积。 实际上,在基系统生成器(Base System Builder)设计向导内,Platform Studio工具套件自动地针对合适的FPGA器件把优化的MicroBlaze核进行例示。除非客户想手工完成这个过程(而且你行的话),否则,要让设计向导为你优化核配置以加速设计。客户不需要仅仅为了利用一个更快的Virtex-5器件和较高性能的MicroBlaze处理器,就为预存的设计或代码 “设置端口”。不论客户的设计采用的是Virtex或Spartan系列器件,赛灵思都会为客户提供量身定制的优化MicroBlaze解决方案。 性能和调试可视性 此外,使总体嵌入式系统性能最大化的一个方法是利用协处理的概念。嵌入式杂志(Embedded)过去在改进整体性能吞吐量方面已经出版了许多文章,其中就讨论了通过像增加更多的处理器以卸载主处理器或添加“硬件”指令这样的方法(软件算法在FPGA门架构中实现以快速连接到主处理器)。利用那些包含浸入PowerPC 405处理器核的Virtex-4器件,Platform Studio 8.2版本引入了对实现FPU的支持。通过在并行FPGA架构中例示FPU性能,就可以实现重大的性能改进。 随着客户的嵌入式系统变得更为复杂,调试工具需要提供更高级别的可视性。因为硬件和软件组成部分之间的传统分区是模糊的,客户再也不能仅仅依赖于硬件工具来调试硬件及用软件工具来调试代码,要利用在器件、处理、协处理和软件指令的硬件实现上的进展。 作为引入“平台调试”的第一步,赛灵思已经集成了硬件和软件调试器,以提供系统级的观察并减少硬件和软件工程师之间的矛盾。一体化的 ChipScope Pro硬件调试器交叉触发GNU软件调试器,反之亦然,客户现在可以从两个方向反复查找系统上的故障。如果在某一个硬件地址上或在某一个硬件事件之后发现一个问题,那么只需简单地交叉触发软件调试器就能够看到软件正在做什么;如果系统在进入一些软件功能“foo”之后死机,那么,交叉触发硬件调试器就可以看到硬件正在干什么。 在平台调试演变过程中,第二步就是利用安捷伦和赛灵思公司联盟的成果。安捷伦公司提供一种E9524A MicroBlaze追踪工具集,它通过安捷伦的Windows Xpbased逻辑分析仪能够完全分解踪迹,是一种利用数据流跟踪和重构MicroBlaze程序执行历史的易于使用的解决方案(见图1)。 Xilinx EDK 8.2版提供的MicroBlaze跟踪核(MTC)在你的设计内部进行例示,为安捷伦的踪迹工具集提供可视性。你可以捕获实时代码流,这些代码流与来自周围系统的测量值有关。通过打开高速缓冲存储器,强大的触发和深度存储器跟踪都不受影响,因为探测出现在MicroBlaze管线的执行状态。该系统使硬件和软件工程师能够配合工作以尽快地发现和定位系统中存在的设计缺陷。欲了解更多关于安捷伦产品的信息,请访问www.agilent.com/find/microblaze。   图1:安捷伦的MicroBlaze跟踪工具集。   图2:赛灵思Platform Studio调试配置向导。 生产率和使用方便性的改进 除了强大的新的跟踪调试性能之外,XPS 8.2版本还包含许多根据我们的用户建议而实现的增强功能和使用方便性的改进。这些改进和提高进一步实现了新型IP核、RTOS支持和安装以及全新的功能和其它生产率的提升。 在XPS工具套件内部器件之间的更好集成、链接器脚本及数据表生成都可以改进整体生产率。8.2版本改进了IP核的可视性状况,从而有助于版本的控制;我们还加速了调用内部工具和加载大型设计的性能。 新的配置向导(见图2)有助于设置调试时间段,并使它们在后续的时间段更快并更方便地再现。该版本包括对PowerPC高速缓冲存储器突发模式、硬三模以太网 MAC、分散/聚集DMA、及无数新的存储控制器接口的支持。此外,8.2版本是第一个支持美国风河系统公司(Wind River Systems)的VxWorks 6.3及MontaVista公司的嵌入式Linux 2.6的Platform Studio版本。[!--empirenews.page--] 欲了解完整的8.2版本中的新功能,请访问:www.xilinx.com/cn/edk。 结论 8.2版本扩展了获奖的Platform Studio工具套件的基础,增加了用于处理和器件支持的令人振奋的新选项。赛灵思已经针对新的高性能Virtex-5 LX FPGA对MicroBlaze软处理核进行了优化,当与现有的Spartan FPGA相结合时,为客户提供了最终的低成本面积最优化选择或高端系统的吞吐量。 对FPU的支持增强了业已快速的PowerPC处理解决方案,容许客户定制完美的协处理的平衡。除了加速生产率的无数通用XPS增强功能和改进之外,8.2版本已经让我们在平台调试上进入了下一阶段。赛灵思的MicroBlaze跟踪核与安捷伦的跟踪工具集的联合使用,为客户的复杂的嵌入式系统工作带来了新的独具一格的可视性。 欲了解更多关于所有赛灵思嵌入式处理解决方案的信息,请访问:www.xilinx.com/cn/processor。

    时间:2014-12-09 关键词: 嵌入式开发 调试 控制 跟踪 以太

  • 基于ARM9的仿人机器人分布式控制系统

    1 引言 仿人型机器人具有类似于人类基本外貌特征和步行运动功能,还具有视觉、听觉等功能,它可以实现类似人类的行走,灵巧轻便,对行走环境有良好的适应性,既能在平地上行走,又能在非结构的复杂地面上行走,如上下台阶,跨越、绕过障碍物等。另外,仿人型机器人是集材料、机械、电子、能源驱动、计算机感知、传感、控制、虚拟现实与人工智能等多门学科于一体的综合性平台,它的研究能够带动诸多相关学科和技术的交叉发展与进步,并为相关学科的研究提供一个平台。因而,近年来,仿人型机器人的研发受到国内外学者的广泛关注。小型机器人是近年发展起来的仿人机器人的一种,主要的研究集中在日本。小型仿人机器人,结构轻巧,集成度高,运动灵活;未来可在工业、民用、军事等许多方面发挥作用,是机器人技术的发展方向之一。小型机器人的控制不仅要求实时,还要求重量轻,体积小以及低功耗等。 传统的仿人机器人控制系统结构采用集中式控制,如日本仿人机器人HRP-2[1],通常由一台或多台计算机通过多块A/D,D/A模块与下层的驱动器和传感器连接通信。由上位机完成轨迹规划和任务调度,协调下层各控制板对各关节进行控制。这样的控制系统模块繁多,模块之间的连接复杂,依赖性强且相互耦合,降低了系统的开放性和可靠性,增加了功耗,难以完成多轴同步协调运动控制。 随着计算机技术和网络技术的发展,各种新型的控制方式应用于机器人控制。分布式控制系统是在计算机监督控制系统、直接数字控制系统和计算机多级控制系统的基础上发展起来的,是生产过程的一种比较完善的控制与管理系统。与计算机多级控制系统相比,分布式控制系统在结构上更加灵活、布局更为合理和成本更低。分布式控制结构成为机器人控制系统发展的方向。文[2]中作者设计了一种基于CAN总线的分布式的仿人机器人的控制系统。 为此,我们研制了新型的小型仿人机器人控制系统。本实验室研制的小型仿人机器人各关节采用舵机控制,根据要求,本设计需要实现小型仿人机器人腿部的运动控制,达到小型化,低功耗。 2 小型仿人娱乐机器人分布式控制系统 2.1总体方案设计   本文研究的小型仿人娱乐机器人运动控制系统由主控制器ARM9,C8051F320单片机与4片CD4017外部计数器构成的控制单元组成,控制结构简单灵活。USB通信方案满足了主从控制和通信速度的需求。关节执行机构采用舵机,控制方法简单实用。总体控制方式简图见图1。 主控制器端,采用ARM9(S3C2410)作为管理控制器负责协调控制,向单片机发送规划好的运动控制数据并扩展语音,视频等。S3C2410主控制器有一个USB host,连接C8051F320单片机。 单片机端,利用C8051F320中的PCA捕捉比较模块产生PWM控制信号。当单片机通过USB总线接收到由ARM管理控制器发来的数据包时,根据设定的对应关系将数据包中16位控制数据转化为PCA比较值,由PCA模块产生相应占空比的PWM控制信号,分别输出给4片CD4017外部计数器。同时 PCA模块还定时产生一路复位脉冲,同时发送给4片CD4017,确保CD4017多路PWM输出与单片机接收到多舵机控制数据对应关系正确。 CD4017外部计数器将CP引角输入的PWM转化为多路PWM,分别控制与之相连的各舵机转动,实现各杆件位置的开环控制。   2.2 USB通信的实现 在计算机和单片机的控制数据传输领域内,长期以来广泛的使用RS-232,RS-485等通信方式,这些通信方式讯的实时性较差, 故障率较高, 出现故障时, 不容易排查[3]。不能够满足小型仿人机器人的实时性和大批量数据传输的要求。USB总线通信方式作为新一代计算机外设的接口技术,随着USB技术的日益成熟,及独特的优点(对多种设备的广泛适用性,自动配置,容易扩充,易于连接,热插拔,即插即用、高可靠性,低成本,低功耗等),应用前景非常广泛 [4]。 本控制系统中的管理控制器ARM9(S3C2410)集成了一个USB host,采用Linux操作系统;C8051F320器件集成了全速/低速USB功能控制器,用于实现USB接口的外部设备,均支持USB2.0通信协议。单片机端设计了通信固件程序和应用程序,用于接收USB通信内容。 2.3 基于C8051单片机和CD4017外部计数器的关节控制器设计 采用一片单片机与4片CD4017外部计数器的关节控制器设计方案,极大限度的精简了硬件数量,节省了空间,降低了软硬件出错的可能性,也为系统运动功能的扩展提供了足够空间和灵活性(自由度数量设置可在36个以内任意增减)。 基于C8051的设计中有很多方法用于产生PWM波形:软件循环、查询或中断驱动的定时器等。使用可编程计数器阵列PCA产生PWM相对于任何查询机制(基于软件或定时器而言)可以大大降低所需要的CPU带宽,并可以消除在中断驱动的基于定时器的设计中因中断延迟不一致而产生的时序抖动。PCA由一个专用的16位计数器/定时器和5个16位捕捉/比较模块组成。每个捕捉/比较模块有其自己的I/O线。计数器/定时器由一个可编程的时基信号驱动。计数器 /定时器有一个16位的计数器/定时器寄存器、一个用于选择时间基准的方式寄存器和一个包含计数器/定时器运行控制及各模块捕捉/比较标志的控制寄存器。每个捕捉/比较模块有一个用于选择模块工作方式的配置寄存器和一个16位的捕捉/比较寄存器。每个捕捉/ 比较模块的工作方式都可以被独立配置。由于所有的捕捉/比较模块共享一个时间基准,因此它们同步工作[5][6]。本文研究的小型娱乐机器人关节控制器设计中,将PCA配置为独立工作;每个模块的中断服务程序只影响该模块的捕捉/比较寄存器。PCA方式寄存器和配置寄存器设置一次后不再改变,让计数器/定时器寄存器自由运行。 在高速输出方式,每当PCA计数器与模块的16位捕捉/比较寄存器发生匹配时,模块I/O线的引脚上的逻辑电平将发生高低转换,并可以选择产生中断。本应用程序中选择了该中断。[!--empirenews.page--] Y9输出均变为低电平,只有Y0脚输出变为高电平,故可以利用CR的正脉冲输入中断计数[7]。~Y9这10个输出端,计满10个数后计数器复零,同时 CO端输出一个进位脉冲。当CR端有正脉冲输入时,该脉冲的上升沿将触发CD4017复位,此时Y1~CD4017基本功能是对CP端输入脉冲的个数进行十进制计数,并按照输入脉冲的个数顺序将脉冲分配在Y0 本文研究的小型娱乐仿人机器人控制系统方案中,一个CD4017输出7路脉冲,分别发送给7个舵机。 3 实验 控制系统硬件实物连接图如图4。 机器人步行实验完成5步的向前行和5步的后退的行走过程。步行实验过程如图5。 4 结论 根据小型仿人机器人的机构特点和性能要求,构建了以ARM9为主控制器的小型仿人机器人控制系统。设计开发了C8051USB单片机和CD4017外部计数器组成关节控制器,该关节控制器能够实现多舵机的协调控制任务。实践证明,采用该结构之后,整个机器人系统的模块化程度更高,系统的装配和调试更加方便。控制系统实现了小型化、低功耗,而且机器人行走稳定性。 本文作者的创新点 根据小型仿人机器人的机构特点和性能要求,构建了以ARM9为主控制器的小型仿人机器人控制系统。设计开发了C8051USB单片机和CD4017外部计数器组成关节控制器,该关节控制器能够实现多舵机的协调控制任务。实践证明,采用该结构之后,整个机器人系统的模块化程度更高,系统的装配和调试更加方便。控制系统实现了小型化、低功耗,而且机器人行走稳定性。

    时间:2016-04-20 关键词: ARM 仿人机器人 控制系统 嵌入式开发 控制

  • 嵌入式系统中可配置式GPIO模拟SPI总线方法

    在嵌入式系统处理器中有相当一部分处理器不带SPI接口,但基丁SPI接口的设备非常丰富,此外,SPI设备的不同以及处理器对GPIO口位寻址是否支持各处理器各有不同,因而不同处理器中软件模拟GPIO也各不相同。若能提供一种通用可配置可移植的GPIO模拟SPI总线的驱动则能很方便快捷的访问SPI设备,从而提高整个嵌入式系统的开发效率。本文针对GPIO口位寻址与否给出方面,给出了一种可配置GPIO模拟SPI总线的方法并详细介绍了其设计与实现过程,且具有代码小可移植性强使用方便等特点。 1 GPIO规范 SPI是一个全双工的串行接口。它设计成可以在一个给定总线上处理多个互联的主机和从机。在一定数据传输过程中,接口上只能有一个丰机和一个从机能够通信。在一次数据传输中,主机总是向从机发送一个字节数据,而从机也总是向主要发送一个字节数据。可以使MCU与各种外围设备以串行方式进行通信以交换信息。由于SPI总线一共只需3~4位数据线和控制线即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、 8~16位地址线、2~3位控制线,冈此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。在基于SPI总线接口构成的通信网络中,通信可由主节点发起,也可由从节点发起。当主节点发起通信时,它可主动对从节点进行数据的读写操作。工作过程叙述如下:首先选中要与之通信的从节点(通常片选端为低有效),而后送出时钟信号,读取数据信息的操作将在时钟的上升沿(或下降沿)进行。每送出八个时钟脉冲,从节点产生一个中断信号,该中断信号通知上节点一个字节已完整接收,可发送下一个字节的数据。SPI接口网络主从点需完成给出片选信号及时钟信号,它可主动的与各从节点进行信息的交流;而在从节点主动要求服务的情况下,它却是一种半主动的形式。由SPI接口技术构成的网络接口信号线(CLK、MOSI、MISO、/SS和INT)如果辅之以相应完备的通信协议,其服务功能必然会增强,相比于485等主从式分布网络而言,其通信速率也应有较人的提高。 2 GPIO模拟SPl 2.1 SPI硬件结构 SPI接口在内部硬件实际上足两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后,SPI内部硬件结构如图1所示。   2.2 SPI时序 在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器,SPI时序如图2所示。   2.3 SPI写过程模拟 采用掩码方式实现位控制。   3 可配置GPIO设计与实现 GPIO端口可分为支持位寻址和不支持位寻址,需由程序移植人员根据处理器及编译器情况定义GPIO对应的SPI接口,相关文件在SPIHARD.H中。 3.1 GPIO配置     3.2 实现配置的可移植部分 与GPIO口寻址方式无关性代码的实现。   以上实现在EPSON S1C33L11、AT89C52、SPCE061A及PHILIPS ARM LPC2106上都得到验证。

    时间:2014-05-06 关键词: 接口 控制 地址 寄存 总线与接口

  • AD7888与S3C2410的SPI接口及Linux下嵌入式驱动的实现

    串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,它允许CPU与TTL移位寄存器、A/D或D/A转换器、实时时钟(RTO)、存储器以及LCD和LED显示驱动器等外围接口器件以串行方式进行通讯。 SPI总线只需3~4根数据线和控制线即可扩展具有SPI接口的各种I/O器件,其硬件功能很强,实现软件相当简单。串行A/D转换器具有电路简单、工作可靠的特点,而ARM芯片被设计用于手持设备以及普通的嵌人式应用的集成系统,将上述两种实用的芯片和SPI总线技术相结合以实现数据采集十分有效。 1 AD7888的功能与使用 AD7888是美国模拟器件公司推出的一款高速低功耗12位A/D转换器,采用2.7~5.25 V单电源供电,最大通过率可达到125 kSPS。AD7888的输入采样/保持电路在500 ns内获取一个信号,采用单端采样模式,包含8个单端模拟输入,模拟输入电压从0到VREF。AD7888有2.5 V的片内基准电压,也可以使用外部基准电压,范围从1.2 V到VDD。CMOS制造工艺确保了低功耗,正常工作时为2 mW,掉电状态下为3uW。可以选择多种电源管理模式(包括数据转换后自动处于掉电模式),与多种串行接口兼容(SPI/QSPI/MICOWIRE/DSP)。AD7888可广泛应用于电池供电系统(个人数字助理、医疗仪器、移动通信)、仪表控制系统和高速调制/解调器等领域。该器件采用16脚SOIC和TSSOP外形封装,外形及引脚定义见图1和表1。   图1 AD7888的引脚图   AD7888的控制寄存器是8位只写寄存器。数据在SCLK的上升沿从DIN引脚载人,同时获取外部模拟量转换的结果。每次数据的传输需要准备16个连续时钟信号。只有在片选信号下降之后的前8个时钟脉冲的上升沿提供的信息装入控制寄存器。   图2显示了详细的串行接口时序图,串行时钟提供了转换时序,且控制AD7888转换信息的输入输出。CS初始化数据传送和转换处理。在其下降沿之后的1.5个时钟周期开始采样输入信号,这段时间表示为tACQ(获取时间)。整个转换过程还需要14.5个时钟周期来完成,这段时间表示为 tCONVERT(转换时间)。 从AD7888获取数据的整个转换过程需要16个时钟周期。CS上升沿之后,总线返回高阻状态。如果CS继续保持低电平,则准备新一轮的转换。进行采样的输入通道的选择是提前写入控制寄存器的,因此在转换时,用户必须提前写入以备通道的转换。也就是说,在进行当前转换时,用户就必须提前写入通道的地址以备下次转换使用。   图2串行接口时序图 2 S3C2410的主要功能 S3C2410是三星公司推出的采用RISC结构的16/32位微处理器。它基于ARM920T内核,采用五级流水线和哈佛结构,最高频率可达203 MHz,是高性能和低功耗的硬宏单元。ARM920T具有增强ARM体系的MMU(支持WinCE,EPOC 32和Linux)、16kB的指令和数据高速缓存以及高速AMBA总线接口。 S3C2410被设计用于手持设备以及普通的嵌入式应用的集成系统,为了降低整个系统的成本,S3C2410还包括下面的部分:LCD控制器 (STN&TFT)、NAND Flash引导装入程序、系统管理(片选逻辑和SDRAM控制器)、3通道UART,4通道DMA、4通道PWM时钟、I/O口、RTC、8通道10位ADC及触摸屏接口、IIC总线接口、IIS总线接口、USB主口和USB设备口、SD主口和多媒体卡接口、2通道SPI和2通道PLL。 S3C2410有2个SPI口,可以实现串行数据的传输。每个SPI接口各有2个移位寄存器分别负责接收和发送数据。在传送数据期间,发送数据和接收数据是同步进行的,传送的频率可由相应的控制寄存器设定。如果只想发送数据,则接收数据为哑元;如果只想接收数据。则需发送哑元“0xff”。SPI接口共有4个引脚信号:串行时钟SCK(SPICLK0,1)、主入从出MISO(SPICLK0,1)和主出从入MOSI(SPIMOSI0,1)数据线、低电平有效引脚/SS(nSSO,1)。 S3C2410的SPI接口具有如下特点 (1)兼容SPI协议(ver.2.11); (2)有分别用于发送和接收的8位移位寄存器; (3)有设定传送频率的8位寄存器; (4)有轮询、中断和DMA三种传送模式。 3 接口与驱动 根据S3C2410的SPI特点及AD7888的工作原理确定其接口如图3所示。   图3 AD7888与S3C2410的连接图 为了实现S3C2410和AD7888在嵌入式Linux下的高速A/D转换,还编写了两者接口的驱动程序,该驱动程序功能的实现主要由以下几个函数完成。 (1)Init_SPI()完成SPI的初始化 void Init_SPI(void) { int i; rSPPRE0=0x32; rSPCON0=0x1e; for(i=0;i<10;i++) rSPTDAT0=0xff; rGPECON |=0x0a800000; rGPECON&=(~0x05400000); rGPEUP |=0x3800; //GPH5----->CS rGPHCON |=0x0400; rGPHCON&=(~0x0800); rGPHUP&=(~0x20); rGPHDAT |=0x20; } (2)ad_wr()写入要求A/D转换的通道 static ssize_t ad_wr(struCt file *file,const char *bur,size_t count,loft_t *offset) { int ret="0"; int i="0"; dbuf="kmalloc"(count *sizeof(unsigned char),GFP_KERNEL); copy_from_user(dbuf,bur,count); for(i=0;i ADTXdata[i]=dbuf[i]; kfree(dbuf); return ret; } (3)ad_rd()得到A/D转换的结果 statie ssize_t ad_rd(struet file *file,char *bur,size_t count,loft t *offset) { int ret="0"; int i="0"; ad_convert(); ad_convert(); dbuf="kmalloc"(count *sizeof(unsigned char),GFP KERNEL); for(i=0;i dbuf[i]=ADRXdata[i]; copy_to_user(bur,dbuf,count); kfree(dbuf); return ret; } (4)ad_convert()实际完成A/D转换 void ad_convert(void) { rGPHDAT&=(~0x20); udelay(100000); spi_tx_data(ADTXdata[0]); ADRXdata[0]=rSPRDATO; spi_tx_data(0xff); ADRXdata [1 ]=rSPRDATO; rGPHDAT |=0x20; } (5)spi_tx_data()完成发送数据 void spi_tx_data(unsigned char data) { spi_poll_done(); rSPTDAT0=data; spi_poll_done(); } (6)spi_poll_done()轮询SPI状态 static void spi_poll_done(void) { while(!(rSPSTA0&0x01)); } 说明:1)ADTXdata和ADRXdata是unsigned char的全局数组变量,分别负责存放AD7888的控制寄存器数据和A/D转换的结果。2)ad_rd()中ad_convert()调用了2次,第1 次调用用于通知要采某通道的数据,第2次调用用于得到该通道A/D转换的结果。这样虽然牺牲了一些转换的速度,但可使应用程序编程更加直观。 4 结论 应用带SPI接口的串行A/D转换器占用较少的微处理器I/O资源,硬件联接简单、软件易于实现,程序运行效率高。带有SPI接口的串行A/D转换器和ARM微处理器的结合可广泛应用于实现数据采集功能的掌上设备及其他嵌入式的系统,如:医疗仪器、通信设备、抄表设备等领域。

    时间:2014-05-13 关键词: 基准 单端 控制 采样 总线与接口

  • 如何用您的手机控制CAN总线?

    如何用您的手机控制CAN总线?

    传统的CAN通信仅局限于PC机与电气导线连接的现场应用,面对当今移动设备大规模占据生活中的各个领域,我们CAN通信也不能固步自封,在无线与APP应用领域,使用手机等移动设备监控CAN总线成为未来一个趋势。 自1990年奔驰公司发布了第一辆使用CAN-bus通信的轿车之后,CAN-bus便成为了通讯界里一颗闪亮的星星,在车载设备的通讯中更是一枝独秀。但面对目前这快速发展的新世界,传统应用方案下的线缆组网,PC机监控已无法满足我们新时代的需求,限制了CAN-bus通信的应用场合。 如果说手机的使用拉近了人与人之间的距离,那么智能手机的出现,各种APP应用程序的深入用户群体,则是完全改变了新时代人类的生活方式。物联网、智能工厂、智慧城市、智能家居无不瞄准了人人必备的手机平台,这是一个时代的主题,作为通讯界中具有贵族血统的,引领潮流的CAN-bus通信,怎可在这一波兴涛大浪中停滞不前。 曾经,我们在为随时移动的设备而无计可施; 曾经,我们在这炎炎夏日的现场而汗流全身。 这些曾经深深困扰着我们的场景,将随着WiFi转CAN设备“CANWiFi-200T”的问世而被一一解决。 在汽车上,工程机械上,风力发电机组上,我们只需将CANWiFi-200T与现场CAN网络相连,即可快速接入被测设备的CAN通信网络,通过WiFi建立手机端与车载CAN网络通信的桥梁,无需携带笨重的笔记本的电脑前往现场,即可通过随身携带的智能手机,使用已开发好的APP软件,获取分析监控现场数据,快速解决问题。   图 1 车载CAN通信检测   图 2 工程机械CAN通信与检测   图 3 风力发电机组CAN通讯与检测 为应对当前的大网络时代,使用CAN通讯对现场设备控制的高可靠性优势,WiFi网络的快速布网,以太网通讯的大数据量快速可靠传输,以及设备本身超强的转换性能,CANWiFi-200T必将是CAN-bus通讯设备中一款跨时代的产品,是带领CAN-bus通信继续在通讯领域中延续辉煌的中坚力量。 我们还可以通过设备提供的二次开发动态库,按照我们的自身需要来开发个性化的APP软件,无论是现场测试,智能控制、还是运行监控,这都将颠覆我们以往的操作体验。下面来看下由ZLG致远电子开发的一款酷酷的通用型CAN通信测试分析软件,如下图:   图 4 APP软件首界面 图 5 CANWiFi-200T参数配置界面   图 6 APP连接CANWiFi-200T 图 7 通用测试软件主界面   图 8 APP独立数据接收界面 图 9 APP独立数据发送界面

    时间:2017-12-12 关键词: 手机 控制 can总线 总线与接口

  • 可PWM控制的LED电源芯片SM7012应用技术方案

    据市场分析了解,电源管理IC市场未来预计将达到387亿美元,消费电子、网络通信、移动互联领域都是主要的应用市场,汽车电子、新能源领域也逐渐发力。在新产品的应用上,LED电源芯片必不可少。 既然说到LED电源芯片的新产品,那就不得不说一下目前市面上比较常用的一款LED电源芯片SM7012。 LED电源芯片SM7012是一款采用PVM功率控制模式控制的开关电源芯片,这是一款功能比较齐全的LED电源芯片,相对于使用传统技术的LED灯具照明产品来说,性价比较高,适合优先选择这款LED电源芯片方案。 这款LED电源芯片SM7012为我们行业界带来了过温,过压保护等等功能,过温保护,简单点来说,就是能够调节LED家电产品灯具内部的温度。当LED电源芯片SM7012温度达到芯片的额定温度保护点的时候,SM7012的温度已经很高,发热情况也很严重,这个时候,集成了温度过温保护功能的LED电源芯片SM7012就能够通过调节电阻降低电流的输出,达到温度恒定的结果。 LED电源芯片SM7012的另外一个功能就是过压保护,欠压锁定功能。当开关电源启动后,C2 电容上的电压会通过 T2 原边线圈、芯片内部的高压启动 MOS 管向芯片 VDD 电容C4 充电。当 C4 电容电压达到 16V,内部高压启动 MOS 管关闭,同时 PWM 开启,系统开始工作。 当 C4 电容电压下降到 9V 以下,关闭 PWM 信号,同时芯片将会产生复位信号,使系统重新启动。这就是SM7012电源芯片的欠压保护功能。 相信在看到SM7012这款LED电源芯片集成了这么多能够实用在LED灯具产品电源芯片方案应用之后,已经对这款芯片认识了不少。 正因为LED电源芯片SM7012继承了这么多的功能,所以它的应用领域也有典型电磁炉 BUCK 电路应用方案,小功率充电器,小功率适配器,待机电源DVD、DVB 以及其他便携式设备电源方案都能够看到这款比较热门的LED电源芯片驱动芯片。

    时间:2018-06-06 关键词: 控制 开关电源芯片 总线与接口 led电源芯片

  • TMS320VC5402与51单片机的接口设计

    TMS320VC5402与51单片机的接口设计

    TMS320VC5402(VC5402)是德州仪器公司推出的具有较高性价比的定点数字信号处理器。VC5402增强外设由软件等待状态发生器、锁相环时钟发生器、6通道直接存储器访问(DMA)控制器、增强型8位并行主机接口(HPI)等组成。两个可编程的多通道缓冲串口(McBSP)能够全双工、快速地与其他同步串口进行数据交换,硬件连接简单,串口的工作模式和传送数据的格式可通过编程实现。DSP和单片机之间的通信一般利用双口RAM,通过串口或DSP的HPI接口实现。 利用双口RAM实现CY7C026是CYPRESS公司生产的16k×16B高速双口静态RAM,存取速度小于25ns。他具有真正的双端口,可以同时进行数据存取,两个端口具有独立的控制信号线、地址线和数据线,另外通过主?从选择可以方便地扩存储容量和数据宽度。通过芯片的信号量标志器,左、右两端口可以实现芯片资源的共享。由于DSP的数据是16位,而单片机的数据是8位,所以TMS320VC5402与双口RAM的接口并无特别之处,但是89C51与双口RAM之间的接口电路中就需要对89C51进行总线扩展了。具体做法是利用锁存器74HC373的锁存功能,通过对其使能信号的控制,进行分时读写,实现数据总线的扩展,即利用锁存器作为虚拟总线。DSP,单片机与双口RAM之间的接口电路如图1所示。图1 通过双口RAM实现的接口电路双口RAM必须采用一定的机制来协调左右两边CPU对他的读写操作,否则会出现读写数据的错误。通常可以用中断、硬件、令牌和软件这4种方式来协调双方。在接口电路中利用89C51的最低地址位A0把双口RAM的存储空间分为奇、偶地址两个空间。其中,奇地址空间专供89C51写,偶地址空间专供89C51读。那么只需对VC5402的软件做相应处理即可,即VC5402对双口RAM的奇地址空间只读,对偶地址空间只写。这样就避免了DSP和单片机对双口RAM同一地址单元的写入操作。另外,在对双口RAM进行访问之前,单片机和DSP首先对本端的BUSY信号进行查询,只有本端/BUSY信号无效时才进行读写操作,进一步保证了数据读写的可靠性。通过串口实现VC5402多通道缓冲串行口(McBSP)主要特点:双缓冲区发送,三缓冲区接收以便数据的连续性;接收与发送的帧同步、时钟信号独立;多通道发送和接收,最多可以到达128个通道;数据大小可为8,12,16,20,24和32b;μ率和A率压缩;帧同步、数据时钟极性可编程;内部时钟和帧同步可自行设定。VC5402串口通过16b宽度的控制寄存器与内部总线通信。数据接收过程:数据从输入引脚(DR)移位到接收移位寄存器(RSR),然后拷贝数据到接收缓冲寄存器(RBR),接着把数据拷贝到数据接收寄存器(DRR),CPU或者DMA控制器读取DRR。数据输出过程:CPU或者DMA把数据写到数据传输寄存器(DXR),再通过寄存器(XSR)移位到数据输出引脚DX6。对串口寄存器的访问是间接寻址方式,例如要对McBSP数据寄存器进行访问,首先写串口控制寄存器SPCR子地址到子地址寄存器SPSA,然后对数据寄存器进行访问。硬件连接如图2所示。图2 通过McBSP实现的硬件连接McBSP的位时钟由内部采样率发生器产生,为UART波特率×16。在软件的设计中McBSP的16位代表UART的1位。发送时,软件将UART的每一位扩展为16位,再由McBSP发送。接收时,软件将McBSP接收的16位压缩为UART的1位,并进行合并。软件还应负责处理UART的起始位、奇偶校验位和停止位。通过HPI和电平转换器件实现DSP芯片中的HPI(主机接口)是为了满足DSP与其他的微处理器接口而专门设计的。他分为HPI—8和HPI1—6,分别针对具有8位和16位数据线的单片机。每一种又分为标准型和增强型,区别在于标准型只可以访问固定的地址空间,而增强型可以访问整个DSP的片内存储器。利用C5402的增强型8位并行主机接口(HPI)与单片机通信。VC5402DSP的外部I/P引脚用的是3.3V的逻辑电平,而大部分51单片机用的是5V的逻辑电平。前者输出高电平,最小值为2.4V;后者输入高电平,最小值为2.0V。所以前者的输出可以直接接到后者的输入。但是前者允许输入高电平最大值为3.6V,而后者的输出高电平一般都在4.6V以上。所以前者的输入和后者的输出不能直接连接,需要做电平转换。如果引脚数量少,可以直接用三极管电阻来转换。这里由于引脚较多,所以选用TI74LVC16245A芯片来进行电平转换。硬件电路如图3所示。图3 通过电平转换芯片实现HPI的数据传输分为2部分:外部传输和内部传输。外部传输是指主机和HPI寄存器之间的传输,由主机发出指令完成。内部传输是指HPI寄存器和DSP内部RAM之间的传输,由DSP内部的DMA控制器自动完成。主机在进行外部传输时,要先检查内部传输是否完成,这是通过检测HRDY信号实现的。外部传输操作的一般步骤是:检查HRDY信号的电平。为高,表示可以进行传输;为低,表示DSP正在进行内部传输,此时不能进行外部传输。主机发出指令,设置HCNTL0,HCNTL1,BHIL,HR?W信号的状态,以确定读或写的寄存器以及字节的选择。主机发出时序控制信号,按时序进行操作,从而完成一次外部传输。结语双口RAM实现VC5402和89C51之间的数据通信,极大地提高了数据传输速度和可靠性,能满足控制系统的实时、高速的控制要求。利用McBSP的方法,硬件结构简单所用芯片少,但是将占用片上系统中为数不多的同步串行口资源,而且也要占用DSP的处理时间,他是用于传输数据较少,传输速率慢而又希望DSP与单片机之间是紧耦合的场合。HPI方案比较简单,附加硬件少、成本低、数据吞吐量非常大,但不适合于实时控制的场合,因为工作中可能将DSP挂起,影响实时工作。而一般应用在对成本比较敏感而数据量又比较大的场合。读者可以根据系统要求选取合适的方案。

    时间:2018-06-25 关键词: 速度 DSP 信号 控制 存储技术 地址

  • 基于PNX1501的NandFlash在线烧录系统

    基于PNX1501的NandFlash在线烧录系统

    随着电子产品市场的不断扩大,闪存器无疑将获得极大的增长。这种增长在很大程度上取决于存储器的非易失性、低功耗、高密度和重量轻等特点。多项优点集于一身使得闪存器在移动电子和嵌入式领域中得到了极大的应用。而nand-Flash价格便宜量又足,性价比也很高,且十分轻便,抗震性也很不错,很适合用来做数码产品,现在的单片nandFlash芯片的存储容量已经可以做到4 GB。很难想像,在一个大小只有12×20×1.2mm的芯片里可以做到如此的容量。然而,由于Flash管脚多、体积小、一但使用后拆卸很不方便,因此,开发在线烧录系统也就成为嵌入式开发领域不可缺少的一步。1 NandFlash简介NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,该结构强调降低每比特的成本和提供更高的性能,且可象磁盘一样通过接口轻松升级。NandFlash作为高数据存储密度的理想解决方案,可以达到高存储密度,并且写入和擦除的速度也很快。而其应用NAND的困难在于flash的管理问题和需要特殊的系统接口,Nand-Flash器件使用复杂的I/O口来串行存取数据,各个产品或厂商的方法可能各不相同。它用8个引脚来传送控制、地址和数据信息。NandFlash的读、写操作采用512字节的块,这有点像硬盘管理的此类操作。这样,基于NandFlash的存储器就很自然地可以取代硬盘或其他块设备,因为它也可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以,在大多数情况下,在进行写入操作之前必须先执行擦除(在NandFlash闪存中每个块的最大擦写次数是一百万次)。总而言之,现在市面上常见的优盘、MP3和MP4等数码设备的存储系统都是采用NandFlash存储芯片来实现的。2 在线烧录系统构架本文介绍的整个烧录系统由三部分组成,其中PC端通过PCI总线提供待烧录数据并负责控制PNX1051 DSP,而DSP则负责解析,以将上端PC传送的命令和数据通过控制GPIO管脚来控制NandFlash的通信时序以及烧录的实现。图1所示是该烧录系统的系统结构框图。 PNX1501是飞利浦公司推出的一款音视频处理芯片,该芯片的工作主频为300 MHz,并带有丰富的通信接口,可支持DDR、SDRAM、Nand-Flash、NorFlash和IDE等,此外,它还有30多个GPIO脚可以作为普通IO对外围芯片进行控制。本系统只用于实现对NandFlash裸片的烧写,因而不使用其自带NandFlash接口,而采用GPIO直接控制,这样在时序和逻辑上更加灵活。DSP与计算机之间的通信通过PCI总线实现,此外,DSP外扩有32MB DDR,该NandFlash用GPIO0~GPIO7作为数据口,GPIO8~GPIO12作为控制信号脚。对于市场上的专用烧录器件而言,其烧录速度的瓶颈在于数据传输。目前,大多数烧录器的数据传输速度都很低且自身缓存很小。烧录过程中需要与PC频繁进行数据通信,故在烧录比较大的文件系统时,需要花费很长的时间,而且操作极为复杂,更主要的是不能在线烧写,一但制成成品而需要更新时,就必须将Flash芯片拆卸下来,而对于本系统而言,PCI的传输带宽可以达到133 MB/s,即使是很大的文件系统,也能很快传输完毕,此外,由于是在线烧录,不需要对Flash进行拆卸,因此,对于产品的更新极为方便。本系统中选用的HY27US08121M NandFlash为三星公司生产的一款64MB Flash,该器件的块擦除时间为2ms,页写入时间为0.5 ms,可以实现高速读写。3 系统软件目前市场上Flash的存储空间均以块为单位进行管理,每一块大小为32页,每页包含512字节的有效数据空间和16字节的Spare空间,其中有效数据用来存放实际数据,Spare区间则用来存放有效数据的附加描述信息(ECC,坏块信息、索引编号等等)。不同的文件系统有各自不同的数据结构,其中最主要的两部分为ECC和坏块信息。坏块信息通常用该块的第0页或第1页的Spare区第6字节表示(0xFF为有效,其余为无效),ECC则是对全部有效数据进行一系列的异或校验后得出的校验值,通常为3字节(512字节校验)或6字节(256字节校验)。由于制造工艺的原因,Nand-Flash在生产过程中可能会产生坏块,而对于坏块而言,存储信息就可能会丢失,因而不能使用。每块Flash在出厂时已经把原始的坏块信息写入每块的第0页和第1页的Spare区,在擦除时一定要先检查是否为坏块,否则就会把坏块信息一并擦除(再也无法恢复)。此外,为了保证存储信息的可靠性,在从NandFlash中读取数据时还可以引入ECC校验,并对读取的每页512字节数据计算新的ECC,同时和该页Spare区存储的ECC进行比较,这样,可以纠正1 Bit位翻转,或检测2 Bit以上的翻转。本系统中的烧录文件按照飞利浦的协议采用6字节的ECC,由于NandFlash以块和页来管理数据,因此,对于PC端,首先应将数据按照Nand-Flash结构进行映射,其代码如下: 之后便可将烧录文件数据填入DataBuf中,每填完512字节后计算ECC和其它Spare区间内容,填满32页就可开辟新的数据结构并挂入链表中。PC和DSP通信是该系统的关键。设计时可以采用消息方式,也可以在接收端DSP的外挂DDR中开辟一段共享区问,然后由PC直接将数据写入,再发送命令进行烧录。本系统采用第二种方式。对于飞利浦公司的DSP而言,该DSP在驱动中已经将其全部DDR空间映射到PC的物理空间了,因而可直接在驱动SDK中增加简单接口函数,以将有DSP开辟的共享区间的地址通过消息方式传送给PC,这样,PC就能直接对该区问进行读写了。该操作的具体代码如下: 这样,当DSP接到PC发送的烧录命令时,系统便可读取共享缓冲区的内容并开始烧录Flash。其具体的流程如图2所示,部分函数源码如下: 设计时的具体时序可参照芯片资料所提供的时序电路来控制MMIO寄存器以实现GPIO的控制,在此不再赘述。需要注意的是,NandFlash在烧录或擦除过程中,可能会失败并产生坏块。对于坏块的处理。不同系统有不同的方法,主要有直接Skip(跳过)和Reserved Block Area (使用保留块)等,本系统使用前一种方式。此外,为了可靠起见,在时间允许的情况下还应对烧录成功的块数据进行ECC校验,即读取全部数据来计算ECC并和烧录之前计算的ECC进行比较,以判断是否发生了位翻转,从而确定烧录是否正确。如果发生两位以上的翻转,则说明该块烧录错误,应重新选择新块烧录并将原块标记为坏块。4 结束语对DSP外部Flash编程虽然不是一项关键技术,但是它在整个DSP嵌入式系统开发过程之中却起着至关重要的作用,如何方便、快速地实现对引导文件(BootLodaer)和文件系统的烧录,更是直接影响产品的生产与更新的重要环节。通过本系统可以迅速快捷地实现前期所有启动文件的烧录,实际测试证明:烧录40 MB的文件系统只需要不到3分钟,这一点无论从速度上,还是经济上都优于通用编程器件。

    时间:2018-07-12 关键词: 硬盘 控制 存储技术 变成 擦写

  • Nios系统基础上的UItra DMA数据传输模式

    引 言 随着消费类电子,如MP3、3G手机、视频终端以及宽带无线网络的普及,对大容量存储设备的需求越来越强烈。传统的SRAM、SDRAM以及DDR SDRAM等存储设备的价格与容量比,远远比硬盘高;光存储设备虽然更加廉价,但是在便携性上却远逊于硬盘解决方案。现在硬盘厂商提供了各种适用于不同用途的廉价海量存储设备,如1 in(英寸)的微硬盘可以应用于各种小巧的便携设备中,2.5in硬盘可以应用于笔记本和移动存储中,3.5in硬盘可以应用于个人PC和工业自动化中等等。 目前,硬盘支持的最为广泛的IDE接口协议中,规定了PIO、DMA以及Ultra DMA三种数据传输模式,其传输速率PIO<多字DMA < Ultra DMA,如表1所列。随着各种多媒体应用的广泛普及,各种设备不但要求拥有海量存储能力,在完成各种实时业务时对数据的传输速率也提出了严格的要求。   现阶段的设计研究主要集中于单边沿锁存数据的PIO和DMA传输模式。大多数设计主要用PIO模式完成控制命令的写入和读取操作,采用DMA数据传输模式进行直接内存读取操作,提高数据传输的速率。如果在相同系统中使用Ultra DMA数据传输模式,则可以在不提高系统时钟频率的基础上,将系统数据传输速率提高l倍,极大地改善了系统性能,而不需要付出更多的硬件资源。因而硬盘的Ultra DMA数据传输方式在工业自动化、Internet网络、消费类电子和各种嵌入式系统中的需求会不断增加,有着很好的商业前景。 1 Nios系统介绍 该设计是在Altera公司推出的Nios嵌入式系统的平台上,设计可以通过Ultra DMA数据传输方式进行高速硬盘读写的接口模块,并开发出相应的IP核。 1.1 Nios系统结构 Nios嵌入式处理器系统通常由N1os处理器、Avalon交换结构总线和各种外围设备(存储、接口及功能模块)的IP核三部分构成。Altera的SOPC Builder系统开发工具可以自动生成这些组件以及连接它们的总线。 Nios处理器是32位结构可配置并包含五级流水线的通用RISC微处理器,采用改进的哈佛存储器结构;处理器带有分离的数据和程序存储器总线控制,具备高速缓存、中断处理功能。与传统处理器相比,Nios指令系统可通过自定义指令和标准处理器选项,利用硬件来明显提高系统性能。 Avalon交换结构总线是Altera开发的用于Nios嵌入式处理器的参数化接口总线,由l组预定义的信号组成,用这些信号可以连接1个或多个IP模块。Altera的S0PC Builder系统开发工具自动地产生Avalon交换结构总线逻辑,其实现只需要极少的FPGA资源,提供完全同步的操作。 Nios嵌入式处理器系统中的各种存储模块、接口模块和功能模块等都在Altera的标准外围设备库中以IP核的方式提供使用,或是由用户自行设计添加到库中,以IP模块的方式在系统中复用。 实现硬盘高速访问功能模块的设计,实际上是在设计一个完整的IP模块,再在Altera提供的SOPC Builder开发环境的设备库中集成该IP核,以达到设计的目的。 1.2采用Nlos软核处理器构建系统的原因 ①与其他的实现方式相比有着更好的性能价格比。最常见的硬盘读取控制和数据传输方式是通过单片机或是DSP来实现的,使用单片机或DSP中的PIO接口可以很方便地完成单边沿锁存数据的硬盘PIO和DMA数据传输方式,但在实现双边沿锁存数据的Ultra DMA传输方式时,必须在单片机和DSP芯片外添加额外的FPGA芯片,完成Ultra DMA双边沿锁存数据到单边沿锁存数据的转换,增加了系统设计的成本和复杂性。而采用Nios软核处理器完成与硬盘的Ultra DMA传输方式时,不需要添加任何额外的芯片,仅使用FPGA内的其他资源就可以方便地实现双边沿到单边沿的转换工作。 ②与传统的单片机或DSP实现方式相比,Nios嵌入式系统的设计与实现更加简单。从性能上来说,Nios软核处理器与ARM、Intel等的CPU处于同一级别,都能够满足设计的需要,即使是复杂逻辑系统的设计也可以在一片Cyclone或是StratiX芯片上实现全部功能。而且通过使用Altera公司提供的 SOPC Builder开发工具,在IP复用的基础上可以快速开发出完整的系统解决方案。 ③与传统的单片机或DSP实现方式相比,Nios嵌入式系统的可扩展性更好。单片机或DSP内的资源是硬件厂商固化在芯片内的,用户不可能自行添加或删减,在设计时的灵活性受到器件本身的限制;而Nios软核处理器的所有资源都可以任意地添加或删减,只需最终通过电缆下载到FPGA芯片内就可定制出整个系统的功能。因而在基于Nios的系统设计中,通过对设计文件的修改就可以很方便地进行系统功能的扩展。 2 系统的硬件实现 硬件部分由Nios 嵌入式系统、Nios与硬盘的接口模块和其他外围接口电路三部分组成,如图1所示。其中设计的核心部分是Nios系统与硬盘接口模块的IP核设计,主要完成数据传输模式的转换,以及对硬盘的控制与操作两部分任务。Nios嵌入式处理器系统的任务是进行整体控制与协调,并对数据进行处理和暂存;外围接口电路主要用来扩充系统的功能,扩大系统的适用范围。   Nios嵌入式处理器系统由Nios嵌入式处理器、DMA控制器、数据存储区SDRAM、程序存储区F1ash和Avalon总线构成。其中DMA控制器用于实现两个存储器之间,或者存储器和外设之间,或者是两个外设之间的直接数据传输。DMA模块用于连接支持流模式传输的外设,并允许定长或变长的数据传输,而不需要 CPU的干涉。在Ultra DMA数据传输的过程中,可以一次性传输最多256个扇区的数据,所以在系统中使用DMA控制器可以方便地在硬盘与系统中各种支持流传输模式的设备之间建立直通连接,提高系统的数据传输效率。 外围接口电路主要用于系统功能的扩充,如Internet接口可以使系统方便地接人到网络中提供诸如音乐或视频下载、信息共享等服务;串口用于与计算机或其他设备的互连;VGA接口用于视频信号的输出,在系统外部显示图像等等。 硬盘接口部分主要由接口控制逻辑、Avalon总线接口、FIFO和硬盘IDE接口4部分组成。其中接口控制逻辑部分用于对Nios处理器的指令进行译码并执行相应的操作,控制Ultra DMA传输时的握手和控制信号的产生,协调数据传输过程中IDE接口的硬盘数据速率同Avalon总线接口速率的匹配。 FIFO用于数据的缓冲,解决Avalon总线和IDE接口之间的数据速率不匹配问题。在设计中需要对硬盘UltraDMA的六种数据传输模式同时提供支持,而其传输速率却完全不同,必须添加缓冲区用于数据的暂存。 Avalon总线接口用于与Nios处理器系统相连,传输Nios处理器的指令给控制逻辑部分,以及与系统中的其他部分在DMA控制器的协调下完成数据的传输。 硬盘IDE接口部分除输出控制信号并对硬盘返回的信号做出响应外,还要完成单边沿数据锁存模式与双边沿数据锁存模式相互转换的任务,如图2、图3所示。     由于Nios系统内部数据传输时,都使用时钟上升沿来锁存数据;而IDE总线上传输的Ultra DMA数据,在Clock信号的上升沿和下降沿都有数据需要锁存。因而硬盘接口部分两侧的数据,在传输时工作模式各不相同,需要进行必要的缓冲和模式转换。 数据锁存模式转换模块,用于在IDE总线上双边沿锁存数据和系统内部单边沿锁存数据之间进行锁存模式的转换,这是系统设计的核心问题之一。具体来说,就是在读取硬盘数据时需要将IDE总线上传输的双边沿锁存数据转换为系统内部使用的单边沿锁存数据;在写硬盘操作时完成相反的任务。在设计时采用两组寄存器对不同时钟沿的信号进行锁存,在时钟频率不变的基础上,通过数据带宽的扩展,完成双边沿到单边沿的转换功能;在单边沿数据到双边沿数据的转换过程中,采用相反的构架。 3 系统工作流程 系统在完成基于Ultra DMA的数据传输模式的硬盘访问功能时,需要实现对硬盘数据通过Ultra I)MA模式进行的读操作和写操作。其具体的工作流程各不相同,主要区别在于: ①Nios系统内部的协调过程。作为系统处理核心的Nios处理器,必须向硬盘接口逻辑和DMA控制器中发送指令,使其按照设计要求执行相应的操作。向硬盘接口逻辑部分发送读写硬盘的指令时,需要首先命令读操作时使用FIFO对硬盘数据进行缓冲,在写操作时将FIFO中的缓冲数据发送到硬盘中完成写入操作;向DMA控制器部分发送指令,协调接口缓冲区FIFo和系统内存SDRAM中数据的交互过程,以完成对硬盘的读写操作。 ②对硬盘的读写访问操作。在对硬盘进行读写操作时,必须向硬盘的接口寄存器中发送DMA读指令或写指令,其指令码和操作顺序也不尽相同,如图4、图5所示。   4 系统的软件实现 在Nios SDK Shell环境下,使用带Monitor的bootloader程序,可以在程序Debug的同时监控内部存储器的变化,便于硬件设计的检查和程序的调试。软件的编写主要采用C语言,部分嵌入了汇编语言。整个系统软件设计中的重点是以下两部分。 (1)Nios系统内DMA控制器的编程 在DMA传输过程中需要完成的操作有:①配置DMA控制器;②软件启动DMA外设,开始DMA传输;③DMA控制器的主设备读端口从目标地址读取数据,主设备写端口向目标地址写入数据;④DMA传输结束。 这一过程中,需要向DMA控制器的寄存器中写入控制指令来开启一次数据传输过程。要求初始化的寄存器有:status、readaddress、wi rte£Jddress、length和contiol。之后调用系统提供的DMA子程序开启一次DMA操作,使用的DMA子程序有:nr_dma_opy_1_tO_rarlge(在原地址和目标地址之间,传输length长度的数据,原地址固定,而目标地址在每次传输后增加),用于完成数据读取操作时,从FIFO缓冲区中向SDRAM里传输数据;nr_dma_copy_range_to_l(在原地址和目标地址之间,传输 lengt长度的数据,目标地址固定,而原地址在每次传输后增加),用于完成数据写操作时,从SDRAM里向FIFO中缓冲数据。 (2)硬盘的DMA读写命令 在对硬盘进行读写操作时须向硬盘的寄存器内写入DMA读指令(或写指令)和相应参数后才可对硬盘中的数据进行访问。在ATAPI 协议中规定了READ DMA指令和WRITE DMA指令的命令格式,需要向SectorCbunt、SectorNulmber、CyclindeLow、CyblindelrHigh、 Device/Head、Command寄存器中写入参数和命令代码。其中读指令的代码是C8h、写指令的代码是CAh。在写入命令后就可以对硬盘中的数据进行读写操作。 结 语 本系统使用Nios嵌入式系统在单芯片内实现了数据处理、存储访问、数据模式转换等多个功能。采用Altera公司提供的Quartus II 和 SOPC Builder开发工具可以在完成接口功能设计后,快速进行系统的集成设计和系统仿真,最终可以在Altera提供的Cyclone系列芯片上实现整个系统设计。对Nios处理器重新编程可以在不改变系统硬件框架的基础上,方便地增加系统的功能和处理效率,对系统的升级和再开发有很大的便利。

    时间:2014-06-18 关键词: 频率 时钟 控制 驱动开发

  • 基于ARM Linux的图像采集与蓝牙传输

    嵌入式Linux系统具有可移植性好、网络功能强、优秀的GNU编译工具、免费的开放源代码等优点。S3C2410处理器是一款采用ARM920T结构,内部资源非常丰富的32位嵌入式处理器。USB摄像头具有低廉的价格,良好的性能,加上Linux下有V4L支持对其编程,很容易集成到嵌入式系统中。蓝牙技术是目前被认可的短距离无线通信技术,广泛应用于手机、电脑以及汽车免提系统。 本文介绍基于嵌入式Linux的USB图像采集系统,并通过构建好的嵌入式Linux下的蓝牙环境将采集到的图片传送到蓝牙手机上,实现监控功能。 1 软硬件平台概述 系统硬件平台如图1所示。该平台软件上采用嵌入式Linux操作系统;硬件上采用Samsung公司的S3C2410处理器,另外配置了64 MB的NAND Flash存储器和64MB的SDRAM,通过以太网控制芯片CS8900扩展一个10M以太网接口。引出两个USB主口,一个接USB摄像头,一个接USB蓝牙适配器;将通过USB摄像头采集到的图像数据输出到缓冲区中,保存成文件,并通过蓝牙传输到蓝牙手机上。   2 摄像头驱动 在Linux下已经支持的摄像头驱动是采用ov511芯片的摄像头。使用这款芯片的摄像头有网眼2000/3000等系列,而现在市面上常见的摄像头芯片大多采用中芯微的zc0301、zc0302和zc0303等。Linux内核中并没有相关的驱动支持,但可以从网上下载到相关的spca5xx驱动。 本系统就采用市面上最常用的zc0301p1芯片的摄像头。由于是用于ARM开发板上,可以下载专用于嵌入式Linux的spca5xx-LE驱动,LE版的驱动最大限度地减少了内存的使用,符合嵌入式的需要。将下载的驱动加入到内核中,修改Makefile和Kconfig文件,在内核中选中USB_SPCA5XX,编译后就将摄像头的驱动加入到内核映像中了。 3 Video4Linux简介 Video4Linux(简称“V4L”)是Linux下用于获取视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现影像/图片采集、AM/FM广播、频道切换等功能,在远程会议、可视电话、视频监控系统中都有广泛的应用。 在Linux下,所有外设都被看成是一种特殊文件,称为“设备文件”,可以像访问普通文件一样对其进行读写。一般来说,采用V4L驱动的摄像头设备文件是/dev/v4l/video0。为了通用,可建立一个到/dev/video0的连接。 V4L支持两种方式来捕获图像:mmap(内存映射方式)和read(直接读取方式)。 V4L在include/linux/videodev.h文件中定义了一些重要的数据结构,在进行图像的采集过程中,就是通过对这些数据的操作来获得最终的图像数据。 4 图像采集 在图像采集过程中,采用V4L的read方式直接读取设备来获取JPEG格式的图像数据,具体流程如图2所示。   4.1 初始化摄像头设备 指定要操作的摄像头设备文件/dev/video0,调用open()打开该设备文件,将自定义的数据结构vdIn中的成员初始化,包括设备名称 (vd->videodevice)、要采集图像的宽度(vd->hdrwidth)和高度(vd->hdrheight)、像素位数 (vd->bppIn)、帧大小(vd->framesizeIn),为帧数据分配存储空间(vd->pFramebuffer)。   4.2 设定待采集图像的各种属性 zc0301p1摄像头支持JPEG格式的图像采集,定义VIDEO_PALETTE_JPEG为21,将其赋值给图像帧的调色板palette,这是一个必须设置的重要的参数。其他参数(如图像色调、颜色、对比度等)可以先将VIDIOCGPICT传递给ioctl()查看其默认值。     如果发觉以上的参数不符合采集图像的规范,则可以将pict.brightness、pict.colour、pict.contrast、 pict.white-ness、pict.depth等重新赋值,再将VIDIOCSPICT传递给ioctl()来重新设置这些参数。   4.3 进行图像采集 在图像采集过程中,采用read方法直接读取设备文件来获取一帧数据保存到缓冲区中,通过convertframe()函数将 pFramebuffer中的数据转成完整的JPEG格式的数据保存到ptframe缓存中去,再调用fwrite()函数将pt-frame缓存中的 JPEG格式数据写入到指定的文件中去,即得到一幅JPEG格式的图像。   5 蓝牙传输 蓝牙协议规范遵循开放系统互连参考模型(OpenSystem Interconnection/Referenced Model,OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次,如图3所示。   在蓝牙协议体系中,OBEX位于RFCOMM 之上。OBEX提供了对象的表示模型,并通过“Put”和“Get”操作传输对象。设备间的对话遵循客户和服务器间的请求—响应模式。OBEX会话开始由客户端发出连接请求,连接建立成功后服务器发送成功的连接响应,否则发送连接不成功的连接响应。在连接之后,客户端可以通过Put请求向服务器“推送 (Push)”对象,如果对象较大,Put请求可以使用多个Put请求分组,每个请求分组需返回一个Put响应分组。本系统将采集到的图片保存到/tmp/cap.jpeg,现在要将图片通过蓝牙传输到蓝牙手机上。具体实现过程如下: ① 在内核中打上蓝牙补丁,加入蓝牙协议的支持,添加USB蓝牙适配器的驱动。 ② 编译bluez的库和工具。从网上下载bluez-libs、bluez-utils和dbus库,用arm-linux-gcc完成交叉编译,得到了arm版的bluez库和bluez的工具以及dbus-daemon工具。这是蓝牙适配器在ARM Linux的环境下正常工作所必需的。 ③ 启动USB蓝牙适配器。要使USB蓝牙适配器正常工作,需要用到步骤②中编译得到的dbus-daemon工具和一些蓝牙工具(如hciconfig、hcid等)。dbus是一个消息传递系统,应用程序间可通过它来相互传递消息。dbus-daemon是一个守护进程,是运行hcid所必需的,hcid用来读入hcid.conf文件。该文件是蓝牙设备的一个配置文件,在该配置文件中设置好蓝牙设备的类型、classid、配对码、设备是否可被搜索等其他的属性。 ④ 实现文件传输。本系统采用OBEX协议的客户/服务器模式来传递采集到的图片文件,需要用到蓝牙的Object PUSH服务。首先用sdptool工具搜索到蓝牙手机的MAC地址以及Object PUSH服务所占用的频道,然后用rfcomm工具将该频道绑定到虚拟串口,最后运行obex_test完成文件的传输。 图4是采用Object PUSH服务来实现文件传输的流程。   结 语 本设计实现了ARM Linux环境下的图像采集工作,构建了ARM Linux下的蓝牙工作环境;通过蓝牙的OBEX协议和Object PUSH服务,实现了ARM Linux平台与蓝牙手机之间的文件传输。利用嵌入式系统和无线传输实现远程监控,符合数字化、网络化的发展趋势。

    时间:2014-06-22 关键词: 存储 控制 缓冲 摄像 驱动开发

  • Tensilica 106Micro新添ThreadX RTOS支持

    Express Logic公司日前宣布在免版税实时操作系统领域提供ThreadX RTOS和中间件支持Tensilica Diamond Standard 106Micro 32位微控制器IP核。 ThreadX是Express Logic针对高要求实时应用小面积速度快免版税的RTOS。免版税的业务模式令ThreadX对于高容量器件来说极具吸引力。ThreadX配有 Express LogicTCP/IP协议栈NetX、文件系统FileX、USB协议栈USBX以及GUI开发包PEGX,所有这些都支持Tensilica最新的 Diamond Standard 106Micro产品。 Tensilica市场兼业务发展副总裁Steve Roddy表示,“从Tensilica发布最初的六款钻石标准系列的控制器、CPU和DSP产品以来的18个月,Tensilica从钻石系列IP核用户团体那里已看到对ThreadX极大的兴趣。ThreadX操作系统的速度、简易性和低成本是具备面积、功耗和性能优势的Diamond 106Micro controller最佳补充。” 低功耗Diamond Standard 106Micro是针对SoC(片上系统)设计中简单控制器应用而设计。Tensilica为其钻石标准系列处理器IP核提供了一个已经通过验证的基础架构,该架构包括由 Tensilica直接提供软件开发工具,以及由Bytetools公司、FS2公司、Macraigor Systems公司和Sophia Systems公司提供的JTAG探针支持、由ARM(Artisan)公司和Virage Logic公司提供的存储器和库、由Cadence公司、CoWare公司、Magma公司和Synopsys公司提供的流行的EDA工具支持和CoWare公司的CoWare Platform Architect上Diamond 106Micro模型。 Express Logic公司总裁William E. Lamie表示,“Tensilica公司钻石系列IP核为开发工程师提供了小面积高性能,正如ThreadX一般,Express Logic坚信ThreadX和Diamond 106Micro的组合将令开发工程师将低成本的产品快速推向市场。”

    时间:2014-07-24 关键词: 存储 SoC 控制 EDA 驱动开发

  • 基于ARM Linux的图像采集与蓝牙传输

    嵌入式Linux系统具有可移植性好、网络功能强、优秀的GNU编译工具、免费的开放源代码等优点。S3C2410处理器是一款采用ARM920T结构,内部资源非常丰富的32位嵌入式处理器。USB摄像头具有低廉的价格,良好的性能,加上Linux下有V4L支持对其编程,很容易集成到嵌入式系统中。蓝牙技术是目前被认可的短距离无线通信技术,广泛应用于手机、电脑以及汽车免提系统。 本文介绍基于嵌入式Linux的USB图像采集系统,并通过构建好的嵌入式Linux下的蓝牙环境将采集到的图片传送到蓝牙手机上,实现监控功能。 1 软硬件平台概述 系统硬件平台如图1所示。该平台软件上采用嵌入式Linux操作系统;硬件上采用Samsung公司的S3C2410处理器,另外配置了64 MB的NAND Flash存储器和64MB的SDRAM,通过以太网控制芯片CS8900扩展一个10M以太网接口。引出两个USB主口,一个接USB摄像头,一个接USB蓝牙适配器;将通过USB摄像头采集到的图像数据输出到缓冲区中,保存成文件,并通过蓝牙传输到蓝牙手机上。   2 摄像头驱动 在Linux下已经支持的摄像头驱动是采用ov511芯片的摄像头。使用这款芯片的摄像头有网眼2000/3000等系列,而现在市面上常见的摄像头芯片大多采用中芯微的zc0301、zc0302和zc0303等。Linux内核中并没有相关的驱动支持,但可以从网上下载到相关的spca5xx驱动。 本系统就采用市面上最常用的zc0301p1芯片的摄像头。由于是用于ARM开发板上,可以下载专用于嵌入式Linux的spca5xx-LE驱动,LE版的驱动最大限度地减少了内存的使用,符合嵌入式的需要。将下载的驱动加入到内核中,修改Makefile和Kconfig文件,在内核中选中 USB_SPCA5XX,编译后就将摄像头的驱动加入到内核映像中了。 3 Video4Linux简介 Video4Linux(简称“V4L”)是Linux下用于获取视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现影像/图片采集、AM/FM广播、频道切换等功能,在远程会议、可视电话、视频监控系统中都有广泛的应用。 在Linux下,所有外设都被看成是一种特殊文件,称为“设备文件”,可以像访问普通文件一样对其进行读写。一般来说,采用V4L驱动的摄像头设备文件是/dev/v4l/video0。为了通用,可建立一个到/dev/video0的连接。 V4L支持两种方式来捕获图像:mmap(内存映射方式)和read(直接读取方式)。 V4L在include/linux/videodev.h文件中定义了一些重要的数据结构,在进行图像的采集过程中,就是通过对这些数据的操作来获得最终的图像数据。 4 图像采集 在图像采集过程中,采用V4L的read方式直接读取设备来获取JPEG格式的图像数据,具体流程如图2所示。   4.1 初始化摄像头设备 指定要操作的摄像头设备文件/dev/video0,调用open()打开该设备文件,将自定义的数据结构vdIn中的成员初始化,包括设备名称 (vd->videodevice)、要采集图像的宽度(vd->hdrwidth)和高度(vd->hdrheight)、像素位数 (vd->bppIn)、帧大小(vd->framesizeIn),为帧数据分配存储空间(vd->pFramebuffer)。   4.2 设定待采集图像的各种属性 zc0301p1摄像头支持JPEG格式的图像采集,定义VIDEO_PALETTE_JPEG为21,将其赋值给图像帧的调色板palette,这是一个必须设置的重要的参数。其他参数(如图像色调、颜色、对比度等)可以先将VIDIOCGPICT传递给ioctl()查看其默认值。     如果发觉以上的参数不符合采集图像的规范,则可以将pict.brightness、pict.colour、pict.contrast、 pict.white-ness、pict.depth等重新赋值,再将VIDIOCSPICT传递给ioctl()来重新设置这些参数。   4.3 进行图像采集 在图像采集过程中,采用read方法直接读取设备文件来获取一帧数据保存到缓冲区中,通过convertframe()函数将 pFramebuffer中的数据转成完整的JPEG格式的数据保存到ptframe缓存中去,再调用fwrite()函数将pt-frame缓存中的 JPEG格式数据写入到指定的文件中去,即得到一幅JPEG格式的图像。   5 蓝牙传输 蓝牙协议规范遵循开放系统互连参考模型(OpenSystem Interconnection/Referenced Model,OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次,如图3所示。   在蓝牙协议体系中,OBEX位于RFCOMM之上。OBEX提供了对象的表示模型,并通过“Put”和“Get”操作传输对象。设备间的对话遵循客户和服务器间的请求—响应模式。OBEX会话开始由客户端发出连接请求,连接建立成功后服务器发送成功的连接响应,否则发送连接不成功的连接响应。在连接之后,客户端可以通过Put请求向服务器“推送(Push)”对象,如果对象较大,Put请求可以使用多个Put请求分组,每个请求分组需返回一个Put 响应分组。本系统将采集到的图片保存到/tmp/cap.jpeg,现在要将图片通过蓝牙传输到蓝牙手机上。具体实现过程如下: ① 在内核中打上蓝牙补丁,加入蓝牙协议的支持,添加USB蓝牙适配器的驱动。 ② 编译bluez的库和工具。从网上下载bluez-libs、bluez-utils和dbus库,用arm-linux-gcc完成交叉编译,得到了 arm版的bluez库和bluez的工具以及dbus-daemon工具。这是蓝牙适配器在ARM Linux的环境下正常工作所必需的。 ③ 启动USB蓝牙适配器。要使USB蓝牙适配器正常工作,需要用到步骤②中编译得到的dbus-daemon工具和一些蓝牙工具(如hciconfig、 hcid等)。dbus是一个消息传递系统,应用程序间可通过它来相互传递消息。dbus-daemon是一个守护进程,是运行hcid所必需的,hcid用来读入hcid.conf文件。该文件是蓝牙设备的一个配置文件,在该配置文件中设置好蓝牙设备的类型、classid、配对码、设备是否可被搜索等其他的属性。 ④ 实现文件传输。本系统采用OBEX协议的客户/服务器模式来传递采集到的图片文件,需要用到蓝牙的Object PUSH服务。首先用sdptool工具搜索到蓝牙手机的MAC地址以及Object PUSH服务所占用的频道,然后用rfcomm工具将该频道绑定到虚拟串口,最后运行obex_test完成文件的传输。[!--empirenews.page--] 图4是采用Object PUSH服务来实现文件传输的流程。   结 语 本设计实现了ARM Linux环境下的图像采集工作,构建了ARM Linux下的蓝牙工作环境;通过蓝牙的OBEX协议和Object PUSH服务,实现了ARM Linux平台与蓝牙手机之间的文件传输。利用嵌入式系统和无线传输实现远程监控,符合数字化、网络化的发展趋势。

    时间:2015-01-06 关键词: 存储 控制 缓冲 摄像 驱动开发

  • 基于Linux和S3C2410的嵌入式图象传输系统设计

    1 引言 如何更好的获得监控现场的图象数据一直是棘手的一个问题,传统的方法是采用CCD摄象机获取现场的视频信息,这种方法易于实现,但成本较高。随着 ARM系列处理器应用的越来越广和基于linux的嵌入式技术的迅速发展,利用linux自身带有的TCP/IP协议来实现远程监控、图象传输已成为可能。本文提出的正是一种这样的方法,利用市场上很常见的中星微系列的USB摄象头来得到现场的图象数据,利用linux内核中的Video4Linux编程接口函数采集图象,并把得到的图象通过Internet传输到上位机PC上,在PC上实现图象的保存和显示。 2 硬件系统设计原理 系统的硬件功能框图如图1所示,CPU采用的是三星公司的S3C2410。该处理器内部集成了A R M 公司A R M 9 2 0 T 处理器核的3 2 位微控制器,并带有独立的16KB的指令Cache 和16KB的数据Cache、L C D 控制器、R A M 控制器、NAND 闪存控制器、3路UART、4路DMA 、4路带PWM 的Timer、并行I/O口、8路10位ADC、触摸屏接口、I2C接口、I2S接口、2个U S B 接口控制器、2路SPI,主频最高可达203MHZ。在此基础上,平台还进行了相应的配置和扩展,配置了4MB16位的Flash和8MB32位的 SDRAM,通过以太网控制芯片DM9000E扩展了一个网口。引出了一个UART接口,通过RS232可以和宿主机做串口通讯。并引出了一个HOST USB接口,通过在USB接口上外接一个带USB的摄象头将采集到的图象数据放入输入缓冲区中。对缓冲区的数据进行处理,最后通过网口发送到Internet上,在PC上保存和接收。   图 1 S3C2410系统平台的硬件功能框图 3 软件系统设计 本文的软件系统设计采用C/S(客户机/服务器)模式,以S3C2410平台作为服务器,以PC作为客户端。服务器的主要任务是把得到的图象数据发送到Internet上去,客户端的任务主要是从Internet上接收得到的数据,并把数据以保存成文件。下面分别讨论两者的具体实现。 3.1 服务器端软件系统设计 3.1.1 建立宿主机开发环境 本文以PC为宿主机,并带有RedHat9.0系统,开发环境就建立在这个平台上,其主要包括:交叉编译器的的选择和安装、NFS和TFTP服务器的配置等。 对于嵌入式系统的开发,由于没有足够的资源在目标板上运行开发工具和调试工具,所以通常采用交叉编译调试的方式。开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码。然后把可执行文件下载到目标机上运行。本文采用的交叉编译器为arm-linux-gcc,具体安装不再赘述。为了方便调试和下载烧写,可让宿主机支持NFS和TFTP服务器。需要特别说明的是为了支持TFTP服务器需要在安装RedHat9.0时须选择完全安装,如果没有选择完全安装,需要将第三张光盘里面的tftp-server-0.32-4.i386.rpm和tftp-0.32-4.i386.rpm安装到宿主机下。 3.1.2 摄象头驱动程序的实现 系统采用的是最普通的USB摄像头,主芯片为中星微ZC0301P。这种摄象头的一个特点是可以实现硬件JPEG编码。其驱动程序的编写重点包括下面的内容:提供基本的I/O 操作接口函数open、read、write、close的实现、对中断的处理实现、内存映射功能以及对I/O 通道的控制接口函数ioctl的实现等,并把它们定义在struct file_operations中。这样当应用程序对设备文件进行诸如open、close、read、write等系统调用操作时,Linux内核将通过file_operations结构访问驱动程序提供的函数。 当然,现在网上已经有了这种摄象头的通用驱动,可以从相关网站 下载usb-2.4.31.patch.gz,然后将这个补丁打到内核对应的位置即可。但是对有些内核版本的linux系统,在打补丁时,会产生 Config.in.rej和Makefile.rej。这时只需要将这两个文件中修改失败的部分手动添加到对应的Config.in和Makefile 中去就可以了。 3.1.3 linux内核配置 对于已经做过基本移植的linux在配置内核的时有以下几个方面是值得注意的: 1)因为要用到内核中的Video4Linux编程接口函数,所以在配置内核时首先必须选中Video for Linux并且最好是直接编译进内核而不用编译成模块的形式再加载; 2)要选中USB Support、OHCI、UHCI。并在USB Support下的USB Multimedia devices 中选中对应的摄象头,对本系统来说,选择USB SPCA5XX Sunplus Vimicro Sonix Cameras,并把它配置成Module。 3)配置完内核后做make dep, make zImage, make module。则在对应的spca5xx目录下会生成spc5xx..o,可以把spc5xx..o通过NFS mount到目标板上或者加到主文件系统ramdisk中的某个目录下。然后在目标板上做 insmod spca5xx.o就会找到摄象头。 3.1.4 服务器端应用程序的编写 完成驱动程序和内核配置后就开始应用程序的编写了,程序首先用交叉编译器在宿主机上进行编译连接,生成的的可执行文件通过NFS mount到目标板上进行调试。调试成功后再固化到文件系统ramdisk中去。其实现主要有下面几个步骤: 1) 初始化设备基本信息 2) 打开设备文件,读取设备基本信息和信号源基本信息,并设置video_mmap并为定义的帧结构分配缓冲区并初始化线程互斥量 3) 创建图象获取的线程。该线程函数实现以内存影射的方式读取设备中的数据,锁定线程互斥量,接着对帧结构的各个元素赋值。并解锁互斥量。使该过程做一个死循环。 4) 创建一个基于连接的socket,并绑定到一个端口上,开始在该端口上侦听。 5) 当有连接到来时,创建一个图象发送的线程。该线程函数实现:如果确定读取了客户端的数据,则把缓冲区内的一帧数据发送到网络上。让这个过程也为死循环。 6) 控制两个线程的同步 7) 如果程序退出,则关闭套接字,释放分配的资源。 可以看出,程序的内容主要有三个部分:图象采集部分,图象的网络发送部分和程序的多线程控制部分。下面分别介绍一下这三个部分主要涉及的内容。 在图象采集部分,定义了一个数据结构,它的主要成员变量有: Video_capability 包含基本的设备信息(设备名称、支持的最大最小分辨率、信号源信息)[!--empirenews.page--] video_channel 关于各个信号源的属性 video_mbuf 利用mmap进行映射的帧的信息 video_buffer 最底层对buffer的描述 video_mmap 用于mmap pthread_mutex_t 线程互斥量 截取图象方法有两种:直接读取设备文件和内存影射的方法,本文采用后面一种。采用这种方法后,普通文件被映射到内存地址空间,进程可以象访问普通文件一样访问内存,这样做的一个好处是可以提高效率。做视频截取的两个主要函数是: n ioctl(vd->fd, VIDIOCMCAPTURE, &(vd->mmap)) 若调用成功,开始一副图象的截取。是否截取完毕留给VIDIOCSYNC来判断。 n ioctl(vd->fd, VIDIOCSYNC, &frame)若调用成功,表明一帧截取已完成。可以开始做下一次截取 对于网络发送部分,主要是linux下的socket编程,调用的主要函数有:创建套接字函数socket、端口绑定函数bind、监听函数 listen、等到连接函数accept、数据接收函数read、数据发送函数write等。这些函数的具体定义和用法具体可以查阅相关资料 。需要说明的是为了能够正确发送一帧数据,要把定义的帧的结构体设置为单字节对齐,具体方法是在结构体的定义后面加上 _attribute_((packed))。 多线程编程部分用到的主要函数有:互斥量初始化函数pthread_mutex_init、互斥量锁定函数pthread_mutex_lock、互斥量解锁函数pthread_mutex_unlock、互斥量注销函数pthread_ mutex _destroy、线程创建函数pthread _ create、线程同步函数pthread_join。此外,程序中为了能更好的实现两个进程的同步,还需要用到信号量机制的一些内容。受篇幅所限,这些函数的具体定义和用法请参考相关资料 。 3.2 客户机端软件系统设计 客户端是建立在一台PC机上,用Visual C++ 6.0设计一个基于MFC的界面作为接收端。在接收端主要完成从网络缓冲区内读取数据,并保存成文件的形式,文件以接收到数据的时间为名。图2为图象采集时间间隔为1秒时程序执行的结果。图象大小为320 象素。需要说明的是:服务器端发送的数据采用了单字节对齐,对应的在客户端接收的时候也要采用单字节对齐。在WINDOWS下实现内存单字节对齐的方法是在定义的帧结构体前面加上#pragma pack (1),并在其定义之后加上#pragma pack ()。   图2 客户端程序执行结果(1秒种采集一次图象) 4 结束语 本文提出了一套基于S3C2410平台和linux系统的嵌入式图象采集、传输系统的具体实现,并给出了实验结果。实验结果证明:系统很好的完成了图象采集和传输。得到的图象清晰。服务器可以稳定运行,不会发生断开或退出的现象。本系统可应用于工业现场的监控,也可以与其他系统如门禁系统相结合获得门开或关时现场的重要图象数据。 参考文献 [1] Alessandro Rubini著 LISOLEG译,linux设备驱动程序开发,中国电力出版社,2002 [2] 乔晓丹张鹏,一个基于Linux操作系统的嵌入式网关的实现,微计算机信息,2005年第21卷第7-2期 [3] 朱刚 等,Linux网络编程,科学出版社,2000. [4] 于明俭 等,linux程序设计权威指南 机械工业出版社 2001. [5] http://mxhaard.free.fr/embedded.html

    时间:2015-02-16 关键词: 闪存 接口 控制 缓冲 驱动开发

  • 基于ARM Linux的图像采集与蓝牙传输

    嵌入式Linux系统具有可移植性好、网络功能强、优秀的GNU编译工具、免费的开放源代码等优点。S3C2410处理器是一款采用ARM920T结构,内部资源非常丰富的32位嵌入式处理器。USB摄像头具有低廉的价格,良好的性能,加上Linux下有V4L支持对其编程,很容易集成到嵌入式系统中。蓝牙技术是目前被认可的短距离无线通信技术,广泛应用于手机、电脑以及汽车免提系统。 本文介绍基于嵌入式Linux的USB图像采集系统,并通过构建好的嵌入式Linux下的蓝牙环境将采集到的图片传送到蓝牙手机上,实现监控功能。 1 软硬件平台概述 系统硬件平台如图1所示。该平台软件上采用嵌入式Linux操作系统;硬件上采用Samsung公司的S3C2410处理器,另外配置了64 MB的NAND Flash存储器和64MB的SDRAM,通过以太网控制芯片CS8900扩展一个10M以太网接口。引出两个USB主口,一个接USB摄像头,一个接USB蓝牙适配器;将通过USB摄像头采集到的图像数据输出到缓冲区中,保存成文件,并通过蓝牙传输到蓝牙手机上。   2 摄像头驱动 在Linux下已经支持的摄像头驱动是采用ov511芯片的摄像头。使用这款芯片的摄像头有网眼2000/3000等系列,而现在市面上常见的摄像头芯片大多采用中芯微的zc0301、zc0302和zc0303等。Linux内核中并没有相关的驱动支持,但可以从网上下载到相关的spca5xx驱动。 本系统就采用市面上最常用的zc0301p1芯片的摄像头。由于是用于ARM开发板上,可以下载专用于嵌入式Linux的spca5xx-LE驱动,LE版的驱动最大限度地减少了内存的使用,符合嵌入式的需要。将下载的驱动加入到内核中,修改Makefile和Kconfig文件,在内核中选中 USB_SPCA5XX,编译后就将摄像头的驱动加入到内核映像中了。 3 Video4Linux简介 Video4Linux(简称“V4L”)是Linux下用于获取视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现影像/图片采集、AM/FM广播、频道切换等功能,在远程会议、可视电话、视频监控系统中都有广泛的应用。 在Linux下,所有外设都被看成是一种特殊文件,称为“设备文件”,可以像访问普通文件一样对其进行读写。一般来说,采用V4L驱动的摄像头设备文件是/dev/v4l/video0。为了通用,可建立一个到/dev/video0的连接。 V4L支持两种方式来捕获图像:mmap(内存映射方式)和read(直接读取方式)。 V4L在include/linux/videodev.h文件中定义了一些重要的数据结构,在进行图像的采集过程中,就是通过对这些数据的操作来获得最终的图像数据。 4 图像采集 在图像采集过程中,采用V4L的read方式直接读取设备来获取JPEG格式的图像数据,具体流程如图2所示。   4.1 初始化摄像头设备 指定要操作的摄像头设备文件/dev/video0,调用open()打开该设备文件,将自定义的数据结构vdIn中的成员初始化,包括设备名称 (vd->videodevice)、要采集图像的宽度(vd->hdrwidth)和高度(vd->hdrheight)、像素位数 (vd->bppIn)、帧大小(vd->framesizeIn),为帧数据分配存储空间(vd->pFramebuffer)。   4.2 设定待采集图像的各种属性 zc0301p1摄像头支持JPEG格式的图像采集,定义VIDEO_PALETTE_JPEG为21,将其赋值给图像帧的调色板palette,这是一个必须设置的重要的参数。其他参数(如图像色调、颜色、对比度等)可以先将VIDIOCGPICT传递给ioctl()查看其默认值。     如果发觉以上的参数不符合采集图像的规范,则可以将pict.brightness、pict.colour、pict.contrast、 pict.white-ness、pict.depth等重新赋值,再将VIDIOCSPICT传递给ioctl()来重新设置这些参数。   4.3 进行图像采集 在图像采集过程中,采用read方法直接读取设备文件来获取一帧数据保存到缓冲区中,通过convertframe()函数将 pFramebuffer中的数据转成完整的JPEG格式的数据保存到ptframe缓存中去,再调用fwrite()函数将pt-frame缓存中的 JPEG格式数据写入到指定的文件中去,即得到一幅JPEG格式的图像。   5 蓝牙传输 蓝牙协议规范遵循开放系统互连参考模型(OpenSystem Interconnection/Referenced Model,OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次,如图3所示。   在蓝牙协议体系中,OBEX位于RFCOMM之上。OBEX提供了对象的表示模型,并通过“Put”和“Get”操作传输对象。设备间的对话遵循客户和服务器间的请求—响应模式。OBEX会话开始由客户端发出连接请求,连接建立成功后服务器发送成功的连接响应,否则发送连接不成功的连接响应。在连接之后,客户端可以通过Put请求向服务器“推送(Push)”对象,如果对象较大,Put请求可以使用多个Put请求分组,每个请求分组需返回一个Put 响应分组。本系统将采集到的图片保存到/tmp/cap.jpeg,现在要将图片通过蓝牙传输到蓝牙手机上。具体实现过程如下:[!--empirenews.page--] ① 在内核中打上蓝牙补丁,加入蓝牙协议的支持,添加USB蓝牙适配器的驱动。 ② 编译bluez的库和工具。从网上下载bluez-libs、bluez-utils和dbus库,用arm-linux-gcc完成交叉编译,得到了 arm版的bluez库和bluez的工具以及dbus-daemon工具。这是蓝牙适配器在ARM Linux的环境下正常工作所必需的。 ③ 启动USB蓝牙适配器。要使USB蓝牙适配器正常工作,需要用到步骤②中编译得到的dbus-daemon工具和一些蓝牙工具(如hciconfig、 hcid等)。dbus是一个消息传递系统,应用程序间可通过它来相互传递消息。dbus-daemon是一个守护进程,是运行hcid所必需的,hcid用来读入hcid.conf文件。该文件是蓝牙设备的一个配置文件,在该配置文件中设置好蓝牙设备的类型、classid、配对码、设备是否可被搜索等其他的属性。 ④ 实现文件传输。本系统采用OBEX协议的客户/服务器模式来传递采集到的图片文件,需要用到蓝牙的Object PUSH服务。首先用sdptool工具搜索到蓝牙手机的MAC地址以及Object PUSH服务所占用的频道,然后用rfcomm工具将该频道绑定到虚拟串口,最后运行obex_test完成文件的传输。 图4是采用Object PUSH服务来实现文件传输的流程。   结 语 本设计实现了ARM Linux环境下的图像采集工作,构建了ARM Linux下的蓝牙工作环境;通过蓝牙的OBEX协议和Object PUSH服务,实现了ARM Linux平台与蓝牙手机之间的文件传输。利用嵌入式系统和无线传输实现远程监控,符合数字化、网络化的发展趋势。

    时间:2015-05-18 关键词: 存储 控制 缓冲 摄像 驱动开发

  • 如何基于C2000内置12位ADC设计电能计量方案?

    如何基于C2000内置12位ADC设计电能计量方案?

    摘要 本应用笔记介绍了基于C2000内核和片内12位ADC实现软件电能计量的方案。C2000是德州仪器半导体有限公司生产的32位高性能实时微控制器,广泛应用于诸如马达驱动,数字电源等各种和功率控制相关的实时控制领域,而电能和功率的计算在以上应用中往往作为反馈控制的输入信号存在。因此,将软件电能计量算法集成到C2000平台上是实现各种实时控制SOC方案的关键。本文介绍了在C2000上实现软件计量算法的具体方法以及TI基于C2000的软件计量库的使用方法,同时给出了测试结果。 1 C2000计量库介绍 1.1应用背景 节能环保的倡导和推行使大部分家用电器都有对能耗统计的需求,对于这个巨大的应用市场,将C2000芯片在家电电机电源上的应用优势在最小硬件成本添加代价下兼容拓展能耗统计功能是本次设计的目的。 C2000芯片专注于电机电源控制,其优秀的性能已被业界普遍认可。本次设计是基于C2000 Piccolo系列芯片搭建的软件测试平台,实现一套满足智能家居能耗计量的软件库,使用最小的硬件代价实现对C2000应用领域的丰富。 1.2硬件平台及软件库介绍 本次参考设计硬件平台使用C2000 Piccolo Entry Line Control Pad,这是TI提供的一套低成本C2000开发板,基于此平台搭建的电路进行计量库开发可以使用户在逐步学C2000开发编程的同时实现一套能耗计量软件。 此参考设计实现一个单相电能计量方案。参考设计的目的旨在实现一个完整的单相计量库。使用户在这个参考设计的基础上快速建立自己的单相计量方案。代码库提供有功功率,无功功率,视在功率,有功能量以及无功能量,同时还能测量回路电流有效值,电压有效值,功率因数,频率等参数,满足单相电能计量的需求,软件支持数字校表。 2 第二部分 计量电路及功能描述 2.1计量代码库 调用计量库时,只需要将emeter目录下的所有文件都添加进来,就能够使用计量功能了。其中文件emeter-interface.h中声明了所有对外调用接口,供程序调用,以实现校表和计量数据读取等功能。算法库默认配置ADC转换率为3200点/秒,转换数据为12bit,数据范围0—4096,实现单相计量。函数adc_interrupt()实现对原始转换数据的运算,measurement_callback()负责进一步处理adc_interrupt()中预处理的数据。因此可以在ADC每个中断中调用adc_interrupt(adc_raw[2]),也可以缓存多个点然后再循环调用此函数,函数入参adc_raw为信号输入,adc_raw[0]为电压转换数据,adc_raw[1]为电流转换数据。adc_interrupt(),measurement_callback()实现流程如图1所示:   计量前端电路由电压信号调理电路和电流信号调理电路组成。电压信号调理电路使用电阻器对输入工频信号分压,并经过运算放大器缓冲后送至MCU ADC输入引脚。电流互感器输出电流信号通过负载电阻转换成电压信号,经过运算放大器放大后送至MCU ADC输入引脚。推荐电路如图2所示:   上图电压输入分析如下: 市电220V交流输入,经10k和15k并联再串联2M电阻分压,输入交流电压为220V*(6/(2000+6))=0.66V,直流电压3.3*10/25=1.32V。总的输入电压幅值0.66*1.414+1.32=2.25V,输入信号3.3V以内。电流互感器输入5A/2.5mA(根据互感器具体型号定),取样电阻电压2.5*10=25mV,经运放20倍放大(具体放大倍数调整R9,R10),输入交流信号25*20=0.5V,总的输入电流幅值(10A)1*1.414+1.6=3.014V,输入信号3.3V以内。当使用锰铜电阻获得电流信号时,电流信号调理电路形式如下:   2.2函数说明 emeter-interface.h文件中声明的主要函数和宏定义如下: int32_t get_parameter(int address) 介绍:获取各种计量参数从地址address。 入参:16位整型address地址 出参:返回该地址上的数据。 可中断重入,可中断中使用。 uint8_t set_parameter(int address, int32_t value) 介绍:设置各种校表参数和表参数到地址address。 入参:16位整型,address地址32位有符号整型value值 出参:返回1表示操作成功,返回0表示操作失败。 不可中断重入,不可中断中使用。 void measurement_setup (void) 介绍:代码库初始化,在上电之初调用。 入参:无 出参:无 void measurement_callback (void) 介绍:此函数周期性(1s)调用,以更新实时数据。 入参:无 出参:无 不可中断重入,不可中断中使用。 void adc_interrupt(int16_t * adc_raw) Application Report ZHCA501–Jan 2013 介绍:可以在ADC每个中断中调用adc_interrupt(adc_raw[2]),也可以缓存多个点然后再循环调用此函数, 函数入参adc_raw为信号输入,adc_raw[0]为电压转换数据,adc_raw[1]为电流转换数据 入参:电压电流输入ADC值数值,adc_raw [0]电压,adc_raw [1]电流。 出参:无 2.3 地址及相应功能介绍 考虑到代码将来的改动或扩展,地址不具体定义。使用枚举变量让编译器自动生成。用户可以include的这个变量定义,使用枚举地址设置和获取数据。 int32_t get_parameter(int address)函数地址枚举变量定义如下: 获取实时数据结构 enum get_parameter_table { AFE_BASE_A = 0x0000, AFE_GET_ACTIVE_POWER, AFE_GET_REACTIVE_POWER, AFE_GET_APPARENT_POWER, AFE_GET_ACTIVE_ENERGY, AFE_GET_REACTIVE_ENERGY,[!--empirenews.page--] AFE_GET_VRMS, AFE_GET_IRMS, AFE_GET_POWER_FACTOR, AFE_GET_FREQUENCY, AFE_GET_ENERGY_MODE, AFE_GET_STARTUP_I, AFE_GET_PULSE_CONST, AFE_GET_POWER_GAINA0, AFE_GET_PHASEOFFSET_A0, AFE_GET_VGAINA, AFE_GET_IGAINA, AFE_GET_IOFFSETA, }; 以下对每个地址进行解析: AFE_GET_ACTIVE_POWER 描述:有功功率 单位:10mW AFE_GET_REACTIVE_POWER 描述:无功功率 单位:10mVar AFE_GET_APPARENT_POWER 描述:视在功率 单位:10mVA AFE_GET_VRMS 描述:电压有效值 单位:10mV AFE_GET_IRMS 描述:电流有效值 单位:1mA AFE_GET_POWER_FACTOR 描述:功率因数 单位:0.0001 AFE_GET_ACTIVE_ENERGY 描述:两回路中较大有功电能脉冲数 单位:依赖脉冲常数 AFE_GET_REACTIVE_ENERGY 描述:两回路中较大无功电能脉冲数 单位:依赖脉冲常数 AFE_GET_FREQUENCY 描述:系统频率 单位:0.01Hz AFE_GET_POWER_GAINA0 描述:功率增益 AFE_GET_PHASEOFFSET_A0 描述:电压电流角差补偿 AFE_GET_VGAINA 描述:电压增益 AFE_GET_IGAINA 描述:电流增益 AFE_GET_IOFFSETA 描述:电流偏置 单位:1mA AFE_GET_POFFSETA 描述:功率偏置 单位:10mW AFE_GET_ENERGY_MODE 描述:能量累计模式 单位:0绝对值累计1正能量累计 ZHCA501–Jan2013 描述:启动电流 单位:1mA AFE_SET_PULSE_CONST 描述:脉冲常数 获取实时数据结构 enum set_parameter_table { AFE_SET_BASE = 0x00, AFE_SET_POWER_GAINA0, AFE_SET_PHASEOFFSET_A0, AFE_SET_VGAINA, AFE_SET_STARTUP_I, AFE_SET_FREQUENCY, AFE_SET_SAMPLES_10S, AFE_SET_IGAINA, AFE_SET_IOFFSETA, AFE_SET_POFFSETA, AFE_SET_ENERGY_MODE, AFE_SET_PULSE_CONST, AFE_SET_CAL_INIT, }; AFE_SET_POWER_GAINA0 描述:功率增益 AFE_SET_PHASEOFFSET_A0 描述:电压电流角差补偿 AFE_SET_VGAINA 描述:电压增益 AFE_SET_STARTUP_I 描述:启动电流 单位:1mA AFE_SET_IGAINA 描述:电流增益 AFE_SET_IOFFSETA 描述:电流偏置 单位:1mA AFE_SET_POFFSETA 描述:功率偏置 单位:10mW AFE_SET_PULSE_CONST 描述:脉冲常数 AFE_SET_CAL_INIT 描述:校表初始化 AFE_SET_CAL_END 描述:校表结束 AFE_SET_SAVE_FUNC 描述:用户设置校表数据保存函数 3 校表介绍 3.1 校表寄存器 校表寄存器在火线零线等同对待。 功率增益寄存器   电压电流角差补偿寄存器   有功偏置寄存器   电流增益寄存器   电流偏置寄存器   电压增益寄存器   3.2 校表方法 本计量库提供了专门的接口对计量参数进行校准。校表软件在pc端运行,通过串口通讯,进行参数设置。具体操作可参考示例代码。 3.2.1 功率增益及偏置校准 功率增益校准可以进行单点和两点校准。当单点校准时,功率偏置默认为0。当两点校准时,功率偏置为功率相对0点的截距。校表可以通过脉冲也可以通过多次读取功率值求平均进行。两点校表公式如下:(最好取100%Ib 和5%Ib两点) 功率增益校验公式:   EH和EL为大电流和小电流时功率的误差。(如100%Ib和5%Ib两点功率的误差)NH2L为大电流和小电流的比差。(如NH2L=100%Ib/5%Ib=20) 功率偏置校验公式:   PGEN是在小电流时的标准功率值。 无功的增益和偏置类似于有功,可参考有功校准。以下是一个单点校表的例子,说明如何编写校表软件: 1. EH =0.5% 2. 原始的P1_GAINn=10000 3. 新的P1_GAINn+1=10000/(1+0.5%)=9950[!--empirenews.page--] 3.2.2 电压电流角差校准 电压电流的角度补偿使用的是软件同步。 角差补偿使用下面公式   fM是电网频率。如果fM=50Hz,fm=256×4096=1MHz,每个步长是0.017°,当功率增益和偏置都校准完毕后,才对角差进行校准。步骤如下: 1. 在100%Ib点,设置功率因数为0.5L。 2. 获取当前脉冲的误差E。并将E带入下面公式   公式计算如下例: 1. E =0.3% 2. 原始的 P1_PHASEn = 6 3. 新的 P1_PHASEn+1 =10+6=16 3.2.3 电压增益校准 电压增益校准步骤如下: 1. 将电压设置成固定的电压值,如:220V 2. 如下公式   3. 设置VRMS_FACTORn+1 到功率增益寄存器,步骤如下: 1) VRMSGEN = 220V and VRMSmeasure = 219V 2) 原始的 VRMS_FACTORn = 2000 3) 新的 VRMS_FACTORn+1 =2000*220/219=2009 3.2.4 电流增益校准 此校准类同电压增益校准。 3.3 校表软件使用 3.3.1 校表软件界面介绍   图4的校表软件界面分为5个模块:1,串口连接模块;2,实时数据模块;3,校正数据设置模块;4,校正数据读出模块;5、通讯数据模块。 3.3.2 实时数据模块使用 实时数据模块将电表实时测量的数据通过串口读出在校表软件中显示,实时显示数据包括:Voltage(V)有效电压值(单位:伏特),Current(A)有效电流(单位:安培),Active Power(W)有功功率(单位:瓦特),Reactive Power(Var)无功功率(单位:乏),Apparent Power(VA)视在功率(单位:伏安),Power Factor 功率因素Frequency(Hz)频率(单位:赫兹)。点击Read按钮,可以显示电表实时测量的数据。 3.3.3 校正数据设置模块使用 校表软件目前只支持Voltage Gain有效电压增益、Current Gain有效电流增益、Power Gain有功功率增益、Phase Offset相位偏置单点校正。默认电压校正点为:220V有效电压,电流校正点为:1A有小电流,有功功率校正点为:220W;相位偏置校正点为:220V、1A、0.5L。 校正步骤: 1,使用校表仪器输出220V有效电压,1A有效电流,功率因素1.0的信号,送至电表电压、电流输入端; 2,在Volage Gain中输入默认有效电压校正值220,点击Setting设置; 3,在Current Gain中输入默认有效电流校正值1,点击Setting设置; 4,在Power Gain中输入默认有功功率校正值220,点击Setting设置; 5,使用校表仪器输入有效电压,1A有效电流,功率因素0.5的信号,送至电表电压、电流输入端; 6,在Phase Offset中输入offset值,一个单位对应0.02°,输入一个数值,然后通过实时数据窗口读出新的功率因素,反复校正,直至读出功率因素接近0.5即可; 7,校正完毕后,点击Save保存数据,电表将最后的校正数据保存至MCU FLASH中。 3.3.4 校正数据读出模块使用 校正数据读出模块可以通过串口将电表FLASH存储的V Gain,I Gain,Phase Offset,P Gain校正数值的读出。 3.3.5 通讯数据模块使用 通讯数据模块实时显示串口收发的数据。设置过程中如果出现“Time out!”提示,表示连接超时,应当检查通讯线路连接,然后重新发送命令。校正数据设置成功后,通讯数据模块提示“Set successful!”。通过按键Clear Logs,可以清空通讯数据窗口历史数据。 4 结论 4.1 硬件平台 本方案在C2000F280270 Control Pad上进行搭建了测试平台,并在标准的电能表测试设备上进行了精度测试。图5为实际测试的样机:   4.2 软件资源占用 本方案占用的C2000资源如下表所示。   4.3 测试数据 本方案测试精度如下: 电压电流频率   有功功率和无功功率:   功率因素:  

    时间:2017-03-10 关键词: c2000 adc 控制 驱动开发

  • 基于DSP控制的三电平变频器的研究

    基于DSP控制的三电平变频器的研究

    0 引言 三电平逆变器相对于传统的两电平而言,它可以使主开关器件的电压降低一半。由于输出多了一个电平,可以使du/dt 降低一半,从而使输出电压谐波减小,有利于实现输出电压波形的正弦化,特别适合于高压大容量的电力电子变换系统。它普遍采用空间电压矢量脉宽调制的控制策略,将DSP数字控制技术应用于三电平逆变器,不仅简化了系统的硬件结构,提高了系统性能,还可以实现系统的优化控制。 1 系统结构 1.1 系统的主电路结构 图1为变频器主电路结构图,它大体上由4 部分组成:二极管组成的AC/DC整流器;IGBT 构成的DC/AC逆变器;电压和电流信号采样检测电路和由DSP 组成的控制电路。主电路采用了传统的交—直—交变频结构,整流部分采用12 脉波二极管整流电路,逆变部分采用二极管箝位逆变电路,它是由日本学者Ajura Nabae 教授于1981 年提出来的,并且得到了广泛应用。这种电路通过多个功率器件串联,按一定的开关控制产生需要的电平级数,在输出端合成相应的正弦波。 三电平变频器的整流电路标准配置为12脉波整流电路(即输入变压器为三绕组,二次采用D和Y接法,两组二次绕组对应线电压之间的相位差为π/6,从而使整流后的电压波形具有12个脉波,同时大大减少了整流器产生的谐波电流),而输入侧采用谐波滤波器可以进一步减少整流器产生的谐波电流。 由于箝位二极管把开关器件两端的电压限制在直流母线电压的一半,所以相对于两电平逆变器,三电平电路中的开关器件所承受的电压应力大大减轻,而输出功率增加了一倍。 1.2 驱动电路的设计 IGBT 驱动电路选择的合理性和设计的正确性对功能的实现极其重要。IGBT 的通态电压、开关时间、开关损耗、承受短路能力等参数均与门极驱动条件密切相关。 IGBT 的驱动电路包括电气隔离和晶体管放大电路两部分,多采用专用的混合集成驱动器,常用的有三菱公司的M579系列(如M57962L 和M57959L)和富士公司的EXB系列(如EXB840、EXB841、EXB850和EXB851),其内部具有退饱和检测和保护环节,当发生过电流时能快速响应,慢速关断IGBT,并向外部电路给出故障信号。本次设计选用三菱公司的M57962L,正驱动电压均为+15V左右,负驱动电压为-10V,如图2所示。本次设计共有12路这样的驱动。 2 变频器设计基本原理 2.1 三电平空间电压矢量PWM(SVPWM) SVPWM控制技术最初源于电动机磁链跟踪技术。这种方法是从电动机的角度出发,其目标是使交流电动机产生圆形磁场。在交流电机调速系统中,为了产生恒定的电磁转矩,必须保证定子电流产生圆形旋转的磁场,这种以产生圆形旋转磁场为目标,合理控制开关导通和关断的PWM控制就是磁链跟踪技术。磁链的轨迹是靠电压空间矢量相加得到,因此 这种控制方法也称为电压空间矢量控制。 当用三相平衡的正弦电压向交流电动机供电时,电动机的定子磁链空间矢量幅值恒定,并以恒速旋转,磁链矢量的运动轨迹形成圆形的空间旋转磁场(磁链圆)。因此如果有 一种方法使逆变电路能向交流电动机提供可变频电源、并能保证电动机形成定子磁链圆,就可以实现交流电动机的变频调速。 三电平电压型逆变电路如图3 所示。三电平逆变器的每一个桥臂上有4 个开关管、4个反向恢复二极管和2个箝位二极管。 通过控制开关管Vi1、Vi2、Vi3、Vi4(其中i=a、b、c) 的开通和关断可以在该i桥臂输出三种不同的电平,即Udc/2、0、- Udc/2。当一个桥臂上Vi1、Vi2 两管导通,Vi3、Vi4两管关断时,开关状态Si为1,桥臂输出电压为Udc/2;Vi2、Vi3两管导通,Vi1、Vi4两管关断时,开关状态Si为0,桥臂输出电压为0;Vi3、Vi4两管导通,Vi1、Vi2两管关断时,开关状态Si为-1,桥臂输出电压为- Udc/2,每相的开关状态有3种即1、0、-1。因此三相三电平逆变器有27 种开关状态,其中有效的有19种,称为基本电压空间矢量。按照空间矢量幅值大小可分把基本电压空间矢量为四类:零电压空间矢量(零矢量)v0;小电压空间矢量(小矢量)v1、v4 、v7、v10、v13、v16;中电压空间矢量(中矢量)v3、v6、v9、v12、v15、v18;大电压空间矢量(大矢量)v2、v5、v8、v11、v14、v17。其中零电压空间矢量对应三个开关状态(1 1 1)、(0 0 0)、(-1 -1 -1),每个小电压空间矢量都有两种开关状态,电压空间矢量图如图4所示。 2.2 恒U/f控制原理 在进行电机调速时,要获得良好的性能指标,须保持磁通量椎m额定不变。如果磁通太弱就没有充分利用电机的铁芯,是一种浪费;如果过分增大磁通,又会使铁芯饱和,过大的励磁电流使绕组过热而损坏电机。 三相异步电动机的每相电动势的有效值为 要保持磁通量额定不变,变频调速中须维持E/f= 常数。但是,电机定子气隙电势难以直接测量、控制。 因此,变频器要维持恒磁通,只要使U与f成比例改变即可。该控制方式简称恒U/f控制。 3 控制策略 3.1 系统的控制结构 普通变频器一般采用速度开环变压变频控制,如图5所示。 该系统采用电压空间矢量调制技术实现变压变频控制,可以由开环给定一个频率值或者由系统中的某一参数和其反馈值经过PI 调节得到系统的输出频率,通过U/f曲线得到一个电压值,再由SVPWM波形发生器产生SVPWM触发脉冲,这样就可以通过改变功率器件IGBT 的占空比实现对输出电压的控制,通过控制逆变桥的工作周期来控制输出频率。在整个控制系统中,主要包括频率斜坡函数发生器、U/f函数发生器、电流限制调节器、电压限制调节器、转差补偿、低频阻抗压降补偿、PI 调节等控制环节。图5中的控制部分主要由数字化来实现,其控制核心由数字化信号处理器(DSP)完成。其时钟频率为40 MHz。 3.2 DSP的选型 DSP是一种特别适合于进行数字信号处理运算的微处理器,其内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速地实现各种数字信号处理算法。 为了满足三电平逆变器的控制要求和SVPWM控制算法运算量大及实时电压、电流检测、分析和计算的特点,结合本系统需要较强的数字信号处理能力和DSP应用普及程度,DSP选用TMS320LF2407A。 3.3 系统的软件设计 为了获得良好的运行效果,合理地编制控制软件是十分重要的。在软件设计时,为了调试方便,系统软件采用模块化结构,即每一模块完成一定的功能。程序由主程序、ADC中断服务子程序、功率驱动保护(PDPINT)中断服务子程序和PWM 中断服务子程序组成,其流程图如图6和7所示。 主程序的工作主要是完成初始化,并对启动、停止按钮状态及过流过压查询。 ADC 中断服务子程序的工作是采样电压、电流信号。 功率驱动保护(PDPINT)中断服务子程序的工作是封锁PWM输出,保护功率器件。 PWM 中断服务子程序的工作如下: 1)确定参考电压矢量的大小和角度,判断矢量属于哪个扇区,大的扇区比较容易判断,只要判断大小就可以确定在哪个大扇区; 2)确定参考电压矢量属于哪个小三角形区中; 3)根据所在小三角区位置确定该扇区参考电压矢量对应的空间矢量,计算各个对应空间矢量的作用时间; 4)再根据电压的比较(采样电压的大小)对控制因子调整,合理分配小矢量的作用时间,合理安排脉冲顺序; 5)根据参考电压矢量的幅值确定开关模式; 6)根据开关模式把相对应矢量作用时间写入对 应的比较寄存器中。 4 实验结果 根据前面介绍的系统硬件电路和软件控制算法,对制作的原理样机进行了实验研究。实验测试了异步电动机轻载稳态运行情况,以此来检测原理样机的可行性,对实验结果进行了波形记录,如图8、图9、图10所示。实验用电机的参数如下:额定电压Un=380 V,额定电流In= 4.87 A,额定频率f=50 Hz,额定功率Pe=2 200W。 实验过程测试了在不同频率输出时电机的电流,从实验波形可以看出,其输出电流是正弦波,由于采用了死区补偿,即使在低频时,波形的畸变也不大。这和前面分析的理论相一致。但从实验波形也可看出,有谐波产生,产生谐波的原因主要来自以下几个方面:第一,利用DSP产生的SVPWM波形,不能严格保证输出的PWM波形的面积与理想中相对应的正弦波面积完全相等;第二,SVPWM波形控制方法本身不可避免地造成逆变器输出波形有所失真;第三,功率开关器件存在固有的开通与延时时间。

    时间:2018-09-04 关键词: DSP 变频器 控制 三电平 驱动开发 异步电机

  • 中国智造乘风启航 维宏伺服顺势而生

    中国智造乘风启航 维宏伺服顺势而生

    对于大多数机械而言,控制与驱动技术才是机械结构领域中的关键技术,智能伺服驱动器的使用使机械设备具备了数字化的许多优势,同时树立起新的行业标准。始于20年前的工业的自动化不再适应产品的灵活性需求,越来越多的功能从机械动力轴转移到电子驱动系统中,特别是精细机械加工,由于产品趋向多样化,激发出对于设备灵活性的更大需求,跟随着工业4.0的步伐伺服驱动的应用也越来越多。 机械行业呼唤高性能伺服 随着科学技术的不断发展进步,各种特种需求加工品的出现,对机械技术和设备都提出了新的要求,在流通领域中发挥着越来越大的作用。目前机械设备竞争日趋激烈,而高度自动化、智能化、多功能、高效率、低消耗的机床设备越来越受到行业的青睐。   进入21世纪以来,较之传统机械,新型机械要求具有简洁化、高生产率、配套更完善,更具自动化等特点。未来的机械将配合产业自动化趋势,促进设备总体水平提高。如高智能数控系统、编码器及数字控制组件、动力负载控制等新型智能设备已经普遍应用到机械设备中,使设备使用者在操作过程中更具有独立性、灵活度、操作正确性、高效率和兼容性。我国还基本停留在测试仿制阶段,自行开发能力弱,缺少科研生产中试基地。统计显示我国机械品种虽有万种以上,但配套数量少、缺少高精度和大型化产产品,不能满足市场需求,产品质量差距表现在产品性能低,稳定性和可靠性差、外观造型不美观、表面处理粗糙,许多元器件质量差,寿命短、可靠性低,影响了整体产品的质量。 数控印刷设备、包装设备、激光加工设备、机器人、自动化生产线等在对位置的控制精度要求比较高的场合,交流伺服驱动的需求也越来越旺盛,数字化交流伺服系统的应用越来越广,国内企业对国产伺服产品的期待也越来越强烈。 国内伺服产品市场格局 在国内伺服市场中,厂商主要分为四大派系:欧美系、日系、台系和大陆品牌。欧美厂商以博世力士乐、路斯特、西门子、丹纳赫、施耐德、罗克韦尔自动化等为代表,品牌总的市场占有率大约在35%左右。日系以安川、松下、三菱为代表,占据约26%的市场份额;以东元和台达为代表的台系伺服在大陆市场的推广也如火如荼,其技术水平和价格水平居于进口中端产品和国产品牌之间,市场占有率从几年前的微不足道提高到大约10%;大陆品牌近几年的多数在低端市场徘徊,占据了29%的市场份额。 维智伺服助推 驱动设备转型 WISE(维智)系列驱动器,是维宏在运动控制领域产业链上的又一扩展应用。过载能力强、定位准、响应快、操作简单便捷,与维宏控制系统搭配使用,加工效果佳,支持20位高分辨率编码器;提供硬件保护、软件保护和故障记录等保障性功能。 出色的定位精度和低速平稳性 支持20位高分辨率编码器,满足机器设备高精度定位控制及平稳低速运转的应用需求。可以降低扭矩的变动幅度,提升电机的高精准度,同时大幅度增强低速平稳性。 应用更加智能、简便 具有在线/离线惯量辨识、多功能实时自动增益调整,响应调整便捷。还可通过上位调试软件,设置自动调整增益模式,选择多种刚性级别,从小负载到大负载精确调整。 摩擦转矩补偿功能 提供机械类摩擦补偿功能,降低机械类摩擦补偿的影响,提高速度响应能力。 外部干扰观测功能 利用外部干扰观测器将估算出的外部干扰值加在转矩指令相抵消的方向上,大大提高转矩响应的水平,使电机速度变化幅度减至最少,从而减少系统振动。 功能强大的驱动器调试软件 驱动器调试软件操作界面简洁直观。多功能型参数编辑器,可实时编辑和上/下传参数,并可对已修改参数打印参考;自动调整增益设置模式,增益调整更加直观、方便;试运行具备带软限位的点动、单步、单步连续、回零点等功能;波形采集显示功能,同时对4通道实时采集,并具有触发采集功能,可设置多种触发条件。

    时间:2015-05-23 关键词: 驱动 控制 机械结构 行业资讯

  • 基于DSP实现的LCD液晶屏显示技术

    l 引 言 随着电子产品集成化的发展.液晶显示屏在便携式仪器中实现图像或文字的显示应用更为广泛。同时在当今信息时代,数字图像处理技术对实时性、运算量大的要求越来越高,所以高运算速度的DSP|3">DSP芯片在数字图像处理领域得到了广泛的应用;其使数据采集、控制与人机界面融为一体,由于DSP处理速度快,整个系统能够由一片DSP芯片控制.体积更小、功耗更低、更便于携带[1]。目前大多数液晶控制器的接[1电路及驱动程序主要是针对单片机设计的[2],DSP的液晶屏接口电路参考资料相对较少,而在实际应用中,单片机的硬件资源远远不够。所以本文提出一种由DSP控制实现LcD液晶屏显示的方案。 2 硬件设计 本系统采用TI公刮的加强型定点DSP芯片TMS320VC54lOA[3],其频率可达160 MHz,内部有64 kRAM空间,可以灵活的映射为数据或程序存储窄间。 液品模块采用信利公司的MG一128128-2中规模液品屏[2]。该模块内置有T6963C控制芯片,T6963C的最大特点是具有独特的硬件初始值设置功能,显示驱动所需的参数如占空比系数,驱动传输的字节数/行及字符的字体选择等均由引脚电平设置。这样T6963C的初始化在上电时就已经基本设置完成。软件操作的主要精力就可以全部用于显示画面的设计。 本系统中使VC5410A采用1/O空间扩展方式控制液晶模块。由于向液晶模块写数据、写指令和写控制信号时。需要锁存总线,所以采用了锁存芯片74HC573实现总线的锁存。74HC573由8个D触发器组成。这8个D触发器具有共同的锁存使能(LE)和输出使能 。LE的下降沿将DO~D7上的数据锁存到O0~O7上的数据不随D0~D7变化。 DSP与液晶显示模块部分接口电路如图l所示。LE的下降沿将D0~D7上的数据锁存到O0~O7上,当LE为低时O0~O7上的数据不随D0~D7变化。锁存器的使能端由Vc5410A的A10和IS控制,即把控制信号锁存在地址为0400H的I/O空间上。其真值表如表1昕示。 系统中相类似的锁存电路有3个,写数据(指令)锁存电路的使能端由DSP的A11和IS控制,将数据或指令锁存住地址为0800H的I/O空间上,读数据锁存电路使能端DSP的A9和IS控制,将所读的数据锁存在地址为020OH的1/O空间上。DSP的低8位数据线和液晶模块的数据总线连接.负责将控制指令和显示数据送到显示模块的数据线上。 vc5410A的内部存储空间有限,所以本系统扩展了一个64 Mb/s的外部程序存储器SST39VF400A,该芯片的数据线和地址线分别与DSP芯片的对应相连,片选信号由 控制,读写控制引脚与DSP的读写信号R/w相连。

    时间:2018-08-30 关键词: DSP 图像 控制 液晶显示 技术教程

  • PWM控制的分类解析

    PWM控制的分类解析

    现在的科学技术的快速大战,市场上出现了越来越多的PWM控制方法,对于PWM控制的问题而言,PWM控制的基本原理很早就已经提出,而对受电力电子器件发展水平的制约。在上世纪80年代以前一直未能实现.直到进入上世纪80年代,随着全控型电力电子器件的出现和迅速发展。 PWM控制技术才真正得到应用.随着电力电子技术,微电子技术和自动控制技术的发展以及各种新的理论方法,如现代控制理论,非线性系统控制思想的应用,PWM控制技术获得了空前的发展.到目前为止,已出现了多种PWM控制技术。 采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同.PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形.按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。 根据PWM控制技术的特点,到目前为止主要有以下8类方法: 等脉宽PWM法 VVVF(Variable Voltage Variable Frequency)装置在早期是采用PAM(Pulse Amplitude Modulation)控制技术来实现的,其逆变器部分只能输出频率可调的方波电压而不能调压.等脉宽PWM法正是为了克服PAM法的这个缺点发展而来的,是PWM法中最为简单的一种.它是把每一脉冲的宽度均相等的脉冲列作为PWM波,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化.相对于PAM法,该方法的优点是简化了电路结构,提高了输入端的功率因数,但同时也存在输出电压中除基波外,还包含较大的谐波分量。 随机PWM 在上世纪70年代开始至上世纪80年代初,由于当时大功率晶体管主要为双极性达林顿三极管,载波频率一般不超过5kHz,电机绕组的电磁噪音及谐波造成的振动引起了人们的关注.为求得改善,随机PWM方法应运而生.其原理是随机改变开关频率使电机电磁噪音近似为限带白噪声(在线性频率坐标系中,各频率能量分布是均匀的),尽管噪音的总分贝数未变,但以固定开关频率为特征的有色噪音强度大大削弱.正因为如此,即使在IGBT已被广泛应用的今天,对于载波频率必须限制在较低频率的场合,随机PWM仍然有其特殊的价值;另一方面则说明了消除机械和电磁噪音的最佳方法不是盲目地提高工作频率,随机PWM技术正是提供了一个分析,解决这种问题的全新思路。 SPWM法 这个世界上最痛苦的离别方式是,从你们分开的那一刻开始,你没有办法再次走进他的生活,他却仍在你的生活中无处不在 SPWM(Sinusoidal PWM)法是一种比较成熟的,目前使用较广泛的PWM法.前面提到的采样控制理论中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同.SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值.该方法的实现有以下几种方案。 等面积法 该方案实际上就是SPWM法原理的直接阐释,用同样数量的等幅而不等宽的矩形脉冲序列代替正弦波,然后计算各脉冲的宽度和间隔,并把这些数据存于微机中,通过查表的方式生成PWM信号控制开关器件的通断,以达到预期的目的.由于此方法是以SPWM控制的基本原理为出发点,可以准确地计算出各开关器件的通断时刻,其所得的的波形很接近正弦波,但其存在计算繁琐,数据占用内存大,不能实时控制的缺点。 硬件调制法 硬件调制法是为解决等面积法计算繁琐的缺点而提出的,其原理就是把所希望的波形作为调制信号,把接受调制的信号作为载波,通过对载波的调制得到所期望的PWM波形.通常采用等腰三角波作为载波,当调制信号波为正弦波时,所得到的就是SPWM波形.其实现方法简单,可以用模拟电路构成三角波载波和正弦调制波发生电路,用比较器来确定它们的交点,在交点时刻对开关器件的通断进行控制,就可以生成SPWM波.但是,这种模拟电路结构复杂,难以实现精确的控制。 软件生成法 由于微机技术的发展使得用软件生成SPWM波形变得比较容易,因此,软件生成法也就应运而生.软件生成法其实就是用软件来实现调制的方法,其有两种基本算法,即自然采样法和规则采样法。 自然采样法 以正弦波为调制波,等腰三角波为载波进行比较,在两个波形的自然交点时刻控制开关器件的通断,这就是自然采样法.其优点是所得SPWM波形最接近正弦波,但由于三角波与正弦波交点有任意性,脉冲中心在一个周期内不等距,从而脉宽表达式是一个超越方程,计算繁琐,难以实时控制。 规则采样法 规则采样法是一种应用较广的工程实用方法,一般采用三角波作为载波。其原理就是用三角波对正弦波进行采样得到阶梯波,再以阶梯波与三角波的交点时刻控制开关器件的通断,从而实现SPWM法。当三角波只在其顶点(或底点)位置对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(即采样周期)内的位置是对称的,这种方法称为对称规则采样。 当三角波既在其顶点又在底点时刻对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(此时为采样周期的两倍)内的位置一般并不对称,这种方法称为非对称规则采样。规则采样法是对自然采样法的改进,其主要优点就是是计算简单,便于在线实时运算,其中非对称规则采样法因阶数多而更接近正弦.其缺点是直流电压利用率较低,线性控制范围较小。以上就是关于PWM控制几大类方法,希望越来越多的设计者会参与到这类设计中的行列。

    时间:2020-03-24 关键词: 分类 控制 pwm

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站

更多

项目外包

更多

推荐博客