arm单片机

2024-09-19

arm单片机(通用8篇)

arm单片机 篇1

ARM学习心得,ARM入门,ARM基础,什么是ARM 一个电子工程师的ARM学习心得 目录:

一 首先说说ARM的发展 二 ARM是硬件还是软件 三 要不要买开发板 买哪家

四 要不要有51 AVR等单片机基础 五 开发都需要学习哪些软件

七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用 八 学习要用多长时间

九 ARM都玩什么 十 我用的什么板子 十一 开发流程

十二 关于JTAG访真器 十三 哪个公司的ARM 我的笔记刚公布就有很多朋友来找我,把我当高手,问我“ARM怎么入门”。我不是高手,仍然是菜鸟。

但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。

首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。

所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵 以下问题常被问到,我就想到哪说到哪吧。一 首先说说ARM的发展

可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。广义的嵌入式无非几种:传统的什么

51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。

客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。

FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。

而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!很佩服他们的战略眼光!

值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。

写的多的是什么?“嵌入式LINUX”

到这相信大家看出来了吧,需要的是硬件中的软件。二 ARM是硬件还是软件

很难说,ARM是硬件,LINUX是软件。

ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。

实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师” 三 要不要买开发板 买哪家

我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。1 买

买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。

另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然 我把接口都外引了,还做了个20X18的LCD背板,板子比较大。

总体下来 元件+LCD屏+PCB=11XX块!够2410的了。

再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。2 做

自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、GPRS模块、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。

当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。

再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。

网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!牛人!但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖 的人。买哪家

个人感觉分3类吧

1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!在这里被ZLG的务实*感动!你看人家那代码写的。

2)感觉硅谷芯微的2440不错

硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~ 3)找个最便宜的

好象最便宜的有卖350的吧?也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。四 要不要有51 AVR等单片机基础

有更好,但没有也无所谓。

两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过C语言程序。你看出来了?我是个不折不扣的菜鸟吧? 但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。例程里有汇编有C,都看懂了就OK,不用自己现写 五 开发都需要学习哪些软件 总结起来最主要的有以下几个吧 ADS调试用

确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。

有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。便宜成AXF以后再在ARM的RAM里调试。2 PLASHPGM FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。

同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊)

调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。JTAG调试原理看我另一篇笔记。简单的就可以把他理解为你自己做的JTAG的驱动就行了。

调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫ARM7.EXE)都是,BANYANT比较好。

需要注意的是,没种调试代理安装方法虽然都简单 但都不一样,需要看说明。而且AXD调试之前都要运行。省钱了,就别怕麻烦了。4 ARM-ELF-TOOLS工具链

里面是UCLINUX开发用的工具比如ARM-ELF-GCC只类的。工具链就是把很多工具打包在一起发布的方便你开发的东西。具体安装方法看我另一篇笔记。另外如果你开发LINUX就要用ARM-LINUX-TOOLS,不一样,不通用。5 U-BOOT 大名鼎鼎的BOOTLOADER生成工具,同类的好象还有VIVI(名字很暧昧~~)生成的BOOTLOADER烧到FLASH里,然后就可以用BOOTLOADER下载 烧写其他了 有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像电脑上的BIOS。当然UCOS的不用这个,用什么我不知道:)最新版本是1.1.4 具体使用方法看我另一篇笔记吧。6 UCLINUX包

UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。7 VMWARE

老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用 搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。2 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板500-1500吧。但是还是推荐选ARM9+LINUX 3 UCLINUX 算投机嵌入式系统:)ARM7上可以跑,由有LINUX近亲,学好好可以比较方便的转向LINUX,像我一样的穷鬼用吧,呵呵 VXWORKS 学好后可以找到高薪工作,但工作机会本身并不比LINUX好找。5 当单片机用

不推荐,虽然我景仰的ZLG一直号召这么干。因为对于学习来说多进程的系统设计才是ARM7的玩头,至少你也要整个UCOS啊:)

有朋友问我先学这个当基础不行吗?那当然可以~~但我当时就用了1周搞定,就是我先的ADS在RAM中调试的笔记。后来我清空FLASH用的小段程序还是当时写的LED闪烁程

序呢。另外1周里其中还因为自己过于菜,没把OM设置好导致晶阵不阵 哈哈。这个是必须做的,但一带而过。目标放的远一点。

八 学习要用多长时间

我从菜鸟到现在两个多月,中间被打扰数次。仍然搞定了PCB设计与制版,RAM调试,FLASH下载,UBOOT移植和下载UCLINUX(没剪裁,用现成的),LCD驱动。

再次坦诚的说:我确实比较菜,说这些不是让大家羡慕,只是告诉你们“你们应该比这个更好”

我相信良好的态度+合适的方法+及时的总结=成绩 九 ARM都玩什么 就几点 1 硬件设计 2 系统移植 3 驱动开发 4 应用开发

没了。其中推荐把注意力放在后两个上,3有难度,4比较灵活,最重要的是都是找工作的砝码。十 我用的什么板子

很多人问我这个问题,我特意写过一个的。再说一次吧。

我是自己做的,RAM、ROM、8019等比较麻烦而当时的自己不理解的都按照龚俊的做的。保持其他不便的情况下做了如下改动。1 加了串口通信的GPS模块、GPRS模块

一个UART0,一个UART1,当与要用超级终端时用跳线切换。2 SD卡,和7843触摸屏

同时挂在SPI总线上,因为SPI只能挂一个设备,同时还做了I/O模拟的准备,把两个设备又通过跳线挂在4个IO上。3 扩了个IIC的35个键子的键盘

用的ZLG的7290,不占用CPU,最大支持64个键子,只上了35个,其他留接口。4 把LCD接口按照买的LCD改装了,可以用FPC线直接连接。

所以改动虽然多,但真正很移植了,初期调试有关的并没动,就是为了现在不那么菜的时候做准备:)十一 开发流程

这里是我的开发流程 设计原理图(含WIGGLER的JTAG访真器)2 设计PCB(含WIGGLER的JTAG访真器)3 制版 焊接电压,确定电压没问题 焊接44B0+JTAG电路+WIGGLER的JTAG访真器+周边电路,用BANYANT+仿真器连接,BANYANT提示错误,但可以显示44B0编号,好象是0X0F0F0F0F只类的,说明44B0没问题 焊接晶体+RAM+ROM+周边电路,用BANYANT+仿真器连接,可以显示正确的44B0了 7 用BANYANT+仿真器连接,开AXD,在命令行窗口操作RAM,看可不可以修改,可以的话(用内存窗口看RAM地址)RAM就没问题 可以用这个命令“setmem 0xc000000,0xffffffff,32”

我的RAM挂在BANK6上 所以地址是0XC000000,你要是改了就也得改。8 用我写的《自己写了个C工程模板又写了个使用说明 》里的方法调试程序吧,写个简单的,我当时写个LED闪烁的。看好使不。把程序按照《FLASH烧写总结 》里的烧到FLASH里,测试一下 10 按照《UBOOT 移植操作》移植UBOOT 11 按照《UCLINUX下载简单说明》下个UCLINUX 12 看看驱动开发的方法,自己写个驱动看看 13 还有很多事东西着你玩 呵呵

十二 关于JTAG访真器

JTAG访真器现在用的多是简板的,一个244那种,用的没什么不好。

按照并口定义不同分几种,建议选WIFFLER定义的,因为支持的软件多。这个网上多的是,不多说了。

值得提的是有的JTAG访真器原理图上有跳线用来使能复位信号,这个一般不跳上。就是不用复位信号,因为JTAG协议里本身也可以控制44B0复位。当然,板子上的复位信号跳线也不用跳。十三 哪个公司的ARM 这个是问题比较简单。1 ARM7主要就几个公司的

三星,PHILIP,ATMEL的

ATMEL的有比较便宜的AT91SAM7S32 和AT91SAM7S64 专为8位应用产品量身定做,价格很便宜好象《3刀吧。和PHILIP的21XX差不多,资料太少,项目中选还不错。其他两家上面说了的不多说了吧 ARM9 这个玩2410和2440的多吧,现在2440还比较火啊 可以考虑买个了 但是2410就比较便宜了,作为学习来说反到和不错,推荐整一个:)

其实ARM9用的最多的领域应该是消费电子,比如手机PDA,而这上面用的多的应该是INTEL的和TI的吧。

但是INTEL的TI的入门材料少,价格高,自己看情况定吧。

硅谷芯微技术中心: 芯片级IT教育第一品牌 开设课程:单片机、嵌入式、ARM、Linux、Android、iphone、PCB设计 硅谷芯微推荐:嵌入式ARM9驱动实战开发班

本文由JACK转载与网络,如有版权问题,请通知本人删除

arm单片机 篇2

8位的51单片机长期占据着微控制器(MCU)的主流市场,但随着技术与需求的发展,32位微控制器应用增长率也在不断攀升。目前,基于ARM内核的32位微处理器在市场上处于领导地位[1,2]。

基于ARM嵌入式处理器的片上系统解决方案可应用于企业应用、汽车系统,家庭网络和无线技术等市场领域。ARM CortexTM系列提供了一个标准的体系结构来满足以上各种技术的不同性能要求,基于ARM架构有3个分工明确的系列:A系列面向复杂的尖端应用程序,用于运行开放式的复杂操作系统;R系列针对实时系统;M系列专为低成本控制和微控制器应用开发。Cortex-M3是基于ARM架构的处理器,是专门为了在微控制器等对功耗和成本敏感的应用领域实现高系统性能而设计的,它简化了可编程的复杂性,使ARM架构成为各种应用方案的良好选择[3]。

Luminary Micro公司(已被TI公司收购) Stellaris提供一系列的微控制器是首款基于ARΜRCortexΤΜ-Μ3的控制器,它们为对成本尤其敏感的嵌入式微控制器应用方案带来了高性能的32位运算能力。 这些具备领先技术的芯片使用户能够以传统的8位和16位器件的价位来享受32位的性能。其中,LM3S811 微控制器正是针对工业应用方案而设计的,包括测试和测量设备、工厂自动化、建筑控制、运动控制、医疗器械、火警安防以及电力能源等[4]。

TH12864等图形点阵液晶显示器以其工作电压低、功耗低、寿命长、不产生电磁辐射污染、可以显示复杂的文字及图形等优点, 已被广泛应用在各种仪器仪表、电子设备和家用电器等领域[5,6,7]。

本文尝试将基于ARM的LM3S811 微控制器与TH12864显示模块相结合的技术应用。

1 系统硬件设计

1.1 LM3S811主控芯片

本次系统硬件设计的主控芯片选择TI公司LM3S811芯片[8,9],其电源电压为3.3 V,最高时钟频率50 MHz,64 kHz的单周期FLASH;3个32位通用定时器,可分成6个16位定时器使用;一组同步串行接口(SSI),2个异步串行接口(UART);4通道模数转换器(ADC),1组模拟比较器和I2C接口;3个脉宽调制信号(PWM)模块,32个通用输入输出管脚(GPIO)及硬件看门狗等。LM3S811系统方框图如图1所示。

1.2 TH12864显示模块

本次系统设计的显示模块选择带中文字库的TH12864,其电源电压为3.3 V。TH12864液晶显示模块是128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置国标GB2312码简体中文字库(16×16点阵)、128个字符(8×16点阵)及64×256点阵显示RAM(GDRAM)。可提供8位并行及串行2种连接方式,具有多种功能:光标显示、画面移位、睡眠模式等。 其中TH12864的管脚功能如下:

1:VSS,地(GND);2:VDD,电源;3:V0,背光调节;4:CS,片选信号;5:STD,串行数据;6:SCLK,串行时钟;14: DB0-DB7,并行数据;15:PSB,串并口选择,串行模式为低电平有效;17:/RST,复位;19:LEDA,背光正极;20:LEDK,背光负极[10]。

1.3 LM3S811主控芯片与TH12864显示模块的连接

为节约系统硬件资源以便其他用途,故选择TH12864显示模块为串行模式。则主控芯片LM3S811只需要占用3个GPIO管脚即可,保留PWM等用于小车驱动等,选择与比较器和I2C复用的PB2,PB4和PB6,如图2所示。

2 系统软件设计

系统软件设计分为底层驱动程序、中层实现程序和上层应用程序。软件以IAR集成开发环境为开发平台,用C语言编写,便于维护和移植[11,12]。下面是部分源程序。

2.1 底层驱动部分

底层驱动程序完成的功能是实现TH12864的硬件时序[10]。

程序如下:

驱动程序先预处理3个字节要发送数据的具体内容,片选后,依次循环,按时钟信号发送每个字节的每一位,其中延时不能省略。

2.2 中层实现程序

中层实现程序完成主要功能是,按照TH12864的用户指令集,用底层驱动程序发送指令,完成初始化、显示、清除、设定等功能。例如初始化程序:

从前两句可以看出LM3S811在设置GPIO时,比普通51单片机设置要简单许多,无需记忆众多的寄存器,由于厂家提供了Stellaris外设驱动库函数,只要调用相应API接口函数即可,简化了编程的复杂性,对于新学者也可以迅速上手编程工作。

2.3 上层应用程序

在底层驱动程序和中层实现程序的基础上,程序移植方便。可以根据系统需求完成字符、汉字和图片等实际显示内容。

此次系统实现了开机图片显示,欢迎词和小车状态的循环动态显示,速度显示及电子秒表等功能。

3 结 语

通过本次系统集成的设计、制作、调试和验证,完成并实现了基于ARM单片机的小车显示系统功能。实现了LM3S811对于TH12864显示模块的控制,其底层驱动程序可以供大家参考。在实现过程中发现,在硬件方面,LM3S811的主频较高,运算能力较强,外设资源丰富。在软件方面,由于厂家提供了Stellaris外设驱动库函数,降低了编程的难度,可以快速上手工作。此外,本系统也可以推广应用到其他小型仪表或设备显示系统。

参考文献

[1]宁殿燕,张仲礼,王继矿,等.基于ARM Cortex M3内核矿井直流电法仪的研制[J].西安科技大学学报,2011(1):11-15.

[2]崔琪琳,吴晓凤.基于ARM的光源跟踪系统的设计[J].电子测试,2011(2):61-64.

[3]YIU Joseph.Cortex M3权威指南[M].北京:北京航空航天大学出版社,2010.

[4]Texas Instruments.StellarisR LM3S811 Microcontroller[EB/OL].[2011-01-09].http://www.ti.com/stellaris.

[5]倪景峰,周腾,马恒.SMC12864液晶显示器在密闭监测系统中的应用[J].测控技术,2011,30(1):97-99.

[6]辛阿阿,厉善亨.基于12864液晶模块的动态波形显示实现方法[J].仪器仪表用户,2010,17(3):56-57.

[7]宋稳力,陈昌旺,黄文婷.液晶显示模块YG-12864-A的接口设计[J].现代显示,2005(6):35-37.

[8]黄争.德州仪器高性能模拟器件在高校中的应用及选型指南[M].上海:德州仪器半导体技术(上海)有限公司大学计划部,2010.

[9]周立功.Cortex M3开发指南[M].广州:广州致远电子有限公司,2008.

[10]深圳彩晶科技.12864中文字库液晶显示模块使用手册[EB/OL].[2009-08-15].http://www.szcaijing.com.

[11]王道新,熊祖彪,陈竞,等.基于IAR集成开发平台的ARM程序设计方法[J].电子设计应用,2005(10):102-104.

ARM学习心得体会 篇3

1.懂得了如何使用IAR的软件使用,使用前要先进行环境的设置,具体见文档IAR使用说明。

2.第一次是学习点亮LED灯,在点亮LED灯中学习到如果要点亮LED灯必须学会调用已经写好的库函数,对系统进行初始化SystemInit();对IO口进行初始化GPIOInit();,还得对GPIO口的设置GPIOSetDir--设置GPIO口为输入为1的IO口,设置完成后就可以对IO口成为输入输出方向,当要点亮LED灯时,要使用到GPIOSetValue();函数,当为确定好某个IO口确定时,后一个为0时可以设置LED灯为点亮了,然后就可以对IO口进行设置了,用法和单片机基本一致,具体可以参考程序《闪灯》。

3.蜂鸣器的鸣响很简单,就是首先对蜂鸣器的IO端口进行设定以驱动蜂鸣器,GPIOSetDir(PORT3, 3, 1);当蜂鸣器需要鸣响时,直接对PORT3_3端口进行赋值0《GPIOSetValue(PORT3, 3, 0);》不让蜂鸣器鸣响则是(GPIOSetValue(PORT3, 3, 01);)就可以了。4.串口的使用

串口开始时要初始化出口,并且通过串口打印前会把数据存在数据缓存区里面,如果我们需要通过输入值来控制ARM板子的功能时,可以读取缓存区(UARTBuffer[UARTCount-1])的内容(缓存区的内的数据都是字符型数据【char】)然后就可以通过输入的值来处理,可以用中断方式,也可以用查询方式,可参考串口中断程序 5.中断的使用

使用中断时需要初始化中断例如:

init_timer32(TEST_TIMER_NUM,TIME_INTERVAL);

// 初始化定时器 enable_timer32(TEST_TIMER_NUM);

//使能定时器使定时器工作 LPC_SYSCON->SYSAHBCLKCTRL |=(1<<6);//能AHB时钟,为GPIO提供时钟源

通过定时器就可以在定时器内直接操作例如图1:

图1 定时器的使用操作要先开使能,与定时器的定时方式如 图2

图2 6.外部中断

外部中断时要先对外部中断的方式进行设置,是下降沿触发还是上升沿触发方式或其他,图3 7.步进电机

InitStep();

//步进机相关引脚初始化

对了步进电机的引脚初始化后就可以对步进电机的转动方向进行控制了,如图4

图4 当MOTOR_CCW 时,为反转方式 8.键盘扫描

对键盘进行操作时,可以对键盘进行操作,可以通过串口输入1~8来控制灯的闪动情况,初始化如图5

图5 对键盘的操作时使用可以参考如下图6:

图6 9.I2C 在I2C中首先要在头文件定义一个#define __DEBUG_FLASH,使后面的程序生效。图7所示:

图7 在I2C里面要输出温度值的后面三位小数要经过处理,如图8所示:

图8 10.ADC芯片

在用到ADC芯片时,可以显示阻值或者mv显示,需经过处理如图9所示:

ARM硬件笔试题及答案 篇4

的值为(D )。

A. 0x20xx

C. 0x20xx B. 0x28 D. 0x87

2、寄存器R15除了可以做通用寄存器外,还可以做( A)

A. 程序计数器 B. 链接寄存器

C. 堆栈指针寄存器 D. 基址寄存器

3、嵌入式系统有硬件和软件部分构成,以下(C)不属于嵌入式系统软件。

A. 系统软件 B. 驱动 C. FPGA编程软件 D. 嵌入式中间件

4、μCOS-II操作系统属于(B)

A、顺序执行系统 B、占先式实时操作系统

D、分时操作系统 C、非占先式实时操作系统

5、ARM指令集是( B)位的。

A. 16

C. 8 B. 32 D. 24

6、假设R1=0x31,R2=0x2 则执行指令ADD R0,R1,R2 LSL #3 后,R0的值是( C)

A. 0x33

C. 0x39 B. 0x34 D. 0x38

7、ARM寄存器组有(C )个状态寄存器

A、7

C、6 B、32 D、37

8、Unicode编码与(A)编码方式兼容。

A、ASCII码 B、GBK

arm单片机 篇5

1 基于ARM7单片机的发射机自动控制系统总体结构设计及功能说明

1.1 发射机自动控制系统总体结构设计介绍

DF500A型国产500 k W短波发射机的核心控制系统主要由ARM7单片机系列的芯片LPC2388为核心处理器组成的。LPC2388芯片是Philis公司生产的基于实时仿真的32位ARM7TDMI-S微处理器, 适用于为了各种需要而进行通讯的应用。它包含了4个UART、1个SPI、2个同步串行端口 (SSP) 、3个I2C接口、2路CAN通道、1个I2S接口、10/100Ethernet MAC、USB2.0等接口并支持OTG等功能。LPC2388具有高达512 K的Flash存储器和96K的SRAM。Flash在ARM的局部总线上, 能够进行高性能的CPU访问:有两个AHB系统, 可以同步进行Ethernet DMA、USB DMA和片内Flash执行程序;先进的中断向量控制器, 可以支持多大32个中断, 还具有通用定时器、RTC、看门狗等功能模块。LPC2388的工作电压一般3.0~3.6 V, 有空闲、睡眠、掉电和深度掉电等四个低功耗模式;内部有4 MHz的RC振荡器, 还选择作为系统时钟, 片内PLL可使系统时钟最高工作在72 MHz;封装在LQFP144。以上这些特点使它非常适合工业控制等领域。

DF500A型国产500 k W短波发射机的自动控制系统硬件架构主要包括通信控制板 (ARM1) 、调谐控制板 (ARM2) 、逻辑控制器、上位机组成, 整机的自动控制系统架构如图1所示。

ARM1通信控制板主要功能是负责与上位机、ARM2、CPLD进行通信, 协调控制发射机开关机、调谐以及状态信息、报警信息的及时上传。ARM2调谐控制板主要是负责调谐, 接收ARM1发送的调谐命令, 上传通过A/D转换获取的状态信息, 以及通过D/A接口控制发射机进行调谐;同时, ARM2可通过显示器及键盘实现手动微调马达。

1.2 发射机自动控制系统控制板功能说明

1.2.1 母板

母板负责链接ADC模/数转换板、DAC数/模转换板、通信控制板ARM1、调谐控制板ARM2和通信接口板, 进行各个电路板之间信号的链接和转换。

1.2.2 ADC模/数转换板

ADC电路板行主要由两个多路选择开关 (ADG40) 和一个AD转换芯片 (AD7233) 及其外围电路组成, 并且整个控制系统的电源 (+24V) 从该板输入。功能是把十三路马达位置数据和各种表值数据的模拟数据转换成数字量送给调谐板ARM2。

1.2.3 DAC数/模转换板

DAC电路板主要由两个DA转换芯片 (AD7839) 及其外围电路组成。功能是把调谐控制板AMR2传送过来的13路马达控制信号由数字量转换成模拟量去控制13路电机, 并且激励器的控制从该板输出。

1.2.4 通信接口板

通信接口板功能是负责控制板和外围设备的接口, 光耦隔离进行电平转换, 驱动外围设备。X2是逻辑控制的接口, X6是波段控制的接口。

1.2.5 通信控制板ARM1

通信控制板ARM1主要由ARM7芯片LPC2388和i Port模块组成, 主要负责与上位机通信、调谐控制板ARM2通信和一些逻辑控制功能。通信控制板ARM1实现的逻辑功能有关机、黑灯丝、红灯丝、高压合、高压断、复位、快速灯丝、封锁音周、封锁PSM指令。

1.2.6 调谐控制板ARM2

调谐控制板ARM2主要由ARM7芯片LPC2388和液晶显示模块组成, 主要是负责调谐控制、与逻辑控制器通信、与通信控制板ARM1通信、液晶显示、指示灯和一些逻辑控制功能。调谐控制板ARM2实现的逻辑功能有高功率、低功率、升功率、降功率和启动调谐。

1.2.7 逻辑控制器

逻辑控制器主要采用两片EPM7512EAQI208作为核心处理器 (一片负责所有的逻辑控制, 一片负责与上位机通信) , 输入接口电路、输出接口电路、状态指示灯电路作为外部接口电路。它主要完成如下三方面的功能:一、实时采样。控制器系统实时采样一百多路发射机风路、水路、灯丝、高压、马达等各个节点的状态量, 并通过RS232串行通信方式上传至上位机。二、故障处理。控制器系统通过采样到的状态量分析发射机的运行状况, 并采取相应保护措施。三、控制命令处理。操作人员可以通过上位机控制或手动按键控制实现整个发射机的过程控制

2 ARM7单片机的发射机自动控制系统软件设计思想

2.1 通信控制板ARM1的软件设计介绍

单片机ARM1主要负责与上位机通信, 它的通信任务包括:接收上位机发送的控制命令;上传ARM2及CPLD的状态信息;上传命令执行过程中的日志信息。单片机ARM1与上位机的通信采用UART3串行接口模块实现。

通信控制板ARM1设计思想如下。

(1) LED指示工作状态, 1Hz频率闪烁。

(2) 为每个通讯设计一个单独任务, 用于上发和下传指令。

(3) 关机、开机、调谐三个独立的任务用于实现控制逻辑。

(4) 扫描运行图任务, 根据本地运行图自动触发运行时间, 给调谐任务发送信号量。

(5) 上传状态信息任务, 该任务每隔2 s向PC端发送最新的CPLD状态信息和ARM2读取的状态信息。

2.2 调谐控制板ARM2的软件设计介绍

单片机ARM2主要负责发射机的调谐控制, 以串口中断方式实时从UART1获得ARM1发送的消息, 如果是ARM1的58字节状态信息, 则更新ARM2中保持的ARM1状态, 如果是粗调完成、前级调谐完成或者是末级调谐完成命令, 则发送相应的信号量给调谐任务, 控制调谐任务的处理流程, 具体的调谐流程请参考图3。

调谐控制板ARM2软件设计思想中调谐控制板ARM2软件主要由5个任务模块组成如下。

(1) 任务0:采样任务, 该任务每隔25 ms对AD转换数据进行一次采样, 经过中值滤波后将采样值保存。

(2) 任务1:命令接收处理任务, 该任务通过串口接收ARM1发送的命令, 并执行。执行的命令包括粗调、前级细调、末级细调、马达置位等。

(3) 任务2:按键与显示任务, 该任务接收按键中断, 处理按键命令, 并控制显示屏做相应的显示。

(4) 任务3:回传状态信息任务, 该任务每隔2 s向ARM1回传ARM2采样到的当前各变量的数值。

(5) 任务4:LED指示灯任务。该任务每隔1 s控制指示灯1和2的亮灭, 显示ARM2程序正在正常运行。

2.3 通信控制板ARM1与调谐控制板ARM2之间通信功能的软件设计介绍

通信控制板ARM1与调谐控制板ARM2之间通信包括:通信控制板ARM1发送命令控制ARM2调谐;接收调谐控制板ARM2上传的状态信息转发给上位机。ARM1的UART1与ARM2的UART3通过母板连接实现串口通信, 无外接接口。

2.4 通信控制板ARM1与逻辑控制器CPLD的通信

通信板ARM1与逻辑控制器CPLD之间的通信包括:接收逻辑控制器CPLD发送的状态信息用于逻辑判断控制逻辑控制器CPLD开关机以及调谐控制板ARM2的调谐, 同时逻辑控制器CPLD的状态信息需要转发给上位机;通过GPIO接口向逻辑控制器CPLD发送控制命令。

通信板ARM1通过UART2与逻辑控制器CPLD的串口通信获得逻辑控制器CPLD的状态信息, UART2在调谐板ARM2板上通过X3 (RS232接口) 与CPLD连接。

通信板ARM1通过两组GPIO向逻辑控制器CPLD发送控制指令。两组GPIO在通信接口板上与逻辑控制器CPLD接口, 其中通信接口板的15针X1用于发送控制命令, 15针X3用于发送波段设置命令。

3 结语

DF500A型国产500 k W发射机的核心控制系统采用了基于ARM7单片机的嵌入式系统, 在硬件结构上设计与逻辑控制系统在一个自成一体的控制箱内, 可以使整机系统集成化, 便于提高性能, 具有运行稳定, 实时性好, 抗干扰能力强等特点。发射机的自动控制系统经过几年来的试运行和不断优化, 其稳定性和可靠性得到提高, 基本上能够满足安全播出的需要。

参考文献

[1]赵娜, 赵刚.基于51单片机温度测量系统[J].微计算机信息, 2007 (6) :146-148.

[2]陶杰, 吴小红.一种微机单片机模型多机串口通信的实现[J].绍兴文理学院学报:自然科学版, 2011 (12) :122-124.

基于ARM的波浪浮标设计 篇6

在众多海浪发电装置设备中均存在着对海浪能量的转换效率低下的问题。针对效率转换问题, 蔡元奇教授提出了利用实时调节海浪发电装置中摆子的固有自振频率与海浪频率相同的方法, 进而与海浪产生谐振, 从而减少了发电装置的能量损耗, 提高转换效率[1,2]。因此, 需要实时掌握海浪的频率参数, 要保证得到的海浪频率的准确可靠。

本文设计了多功能海浪识别仪, 以Cortex-A8作为主处理器, 基于Linux操作系统, 有很强的可移植性与扩展性。通过加速度传感器采集浮标的加速度, 对此信号采取EMD处理, 并对分解之后的IMF进行阈值筛选, 获得有效分量, 然后对该分量进行希尔伯特黄变换, 从而准确计算出海浪的实时频率[3]。通过陀螺仪、电子罗盘、GPS可以精确定位波浪识别仪的准确方位以及姿态。通信网络采用GPRS网络, 实时将采集到的数据传输到岸边监控中心。

1 系统总体结构及功能

海浪数据采集传输系统主要由数据采集、数据传输及数据处理三部分[4]组成, 系统框图如图1所示。数据采集部分由加速度传感器、陀螺仪、电子罗盘及GPS组成, 主要作用是采集浮体的线加速度、角加速度、方位角以及GPS坐标。数据传输部分由GSM/GPRS收发模块组成, 能够通过网络使手机短信实时接收现场数据。数据处理部分由S5PV210处理器完成数据筛选、算法及处理。

2 系统硬件设计

2.1 S5PV210处理器

S5PV210是三星公司推出的高性能应用处理器, 采用了Cortex-A8内核, 运行主频可达1 GHz, 可搭载Linux系统, 带有2路SPI、4路I2C与4路UART接口。

2.2 加速度传感器

选用基于VTI的3D-MEMS电容传感技术的高性能低功耗的SCA3060三轴加速度传感器, ±2 g的测量量程、精度可达1 mg, 完全满足设备测量环境的客观要求。将采集到的三个轴方向上的加速度数据通过SPI总线传输给处理器。电路图如图2所示。

2.3 陀螺仪模块

选用L3GD20三轴陀螺仪芯片。它提供了较宽的测量量程, 用户有足够的选择空间。为了满足测量所需, 同时保证测量精度, 该系统中选用±500°/s量程, 测量精度可达±0.015°/s。该芯片采用I2C总线方式与处理器进行数据传输。

2.4 GPS模块

采用Gstar GS-87模块, 它是一个高效能、低功耗的智能型卫星接收模块。其工作电压为3.3 V, 定位精度可达10 m以内, 通过串口与处理器进行通讯, 通过GPRS网络将所需数据传回监控中心。

2.5 GSM/GPRS模块

选用中兴的MF210模块, 本设计中利用SIM卡通过联通网络进行实时数据传输, 外围电路图如图3所示。

2.6 电子罗盘

选用SCH9005集成电路模块, 该芯片集成了高精度气压传感器和高精度磁传感器, 且具有温度测量、气压测量、指南针方位测量功能。气压测量分辨率为±1 h Pa, 测量范围是300 h Pa~1 000 h Pa, 罗盘精度为±2°, 分辨率为1°, 以地磁的正北角为0°, 模块采用I2C接口将数据传送给处理器。

3 系统软件设计

3.1 数据采集部分

Linux操作系统中, 上层用户空间通过调用内核空间的系统接口函数来完成对底层硬件的操作。因而要完成芯片的功能, 首先需要编写底层的驱动程序, 其次是上层的应用程序。本设计中所选芯片运用到了I2C、SPI、UART 3种通信协议方式。虽然Linux系统内核一般自带有3种总线的驱动程序, 但是其总线子系统框架复杂, 不易移植, 且编写应用程序时不方便, 因而考虑重新编写基于对GPIO端口操作的字符设备驱动来完成对传感芯片的数据操作[5]。

S5PV210芯片带有3路I2C、两路SPI接口和4路UART接口。电子罗盘和陀螺仪选用I2C方式通信, 在I2C字符驱动程序中, 直接通过地址映射对寄存器进行操作, 配置寄存器I2CCON、I2CSTAT, 设置其工作方式为主机模式, 使能I2C中断, 设定其工作频率为400 k Hz。

GPS和GPRS的串口传输选用“dev/tty S0”和“dev/tty S1”, 在上层用户空间中直接编写应用程序, 设置串口波特率为9 600 bit/s, 8 bit数据传输, 无奇偶校验位。程序读取GPS返回的GPRMC (推荐定位信息) , 该信息包含了UTC时间, 定位状态, 经纬度, 地面速率以及航向角。

3.2 数据传输部分

系统采用GPRS网络传输方式实现现场和岸边通信。

对于GPRS网络传输时, 处理器将经过处理后得到的海浪频率、仪器的倾斜角、GPS地理方位等数据发送给GPRS网络, GPRS网络提供通信链路, 将这些信息发送给固定IP地址, 在监控中心的上位机程序需要进行socket网络编程, 通过静态IP地址看到数据。

在ARM发送端, Linux系统启动之后, 首先要对串口进行初始化, 配置串口参数, 其次, 对GSM模块设置AT指令, 主要用到的指令有AT+CGDCONT=1, “IP”, “CMNET”接入网络;AT+TCPSERV设置上位机IP地址, AT+TCPPORT配置上位机监听端口设置。然后, 通过AT+CONNETCIONSTART请求建立网络连接, 再通过AT+OTCP登陆网络, 数据传输时, 将数据打包封装直接发送到GPRS网络, 流程如图4所示。

3.3 数据处理

3.3.1 海浪频率的提取

以所测得的三轴加速度为数据分析对象推算出海浪频率, 由于海浪波形具有随机性, 混乱性, 而且在测量加速度信号时, 采集系统的测量误差、外界环境的干扰或其他因素的影响, 使得测量到的加速度信号包含大量的噪声。这些噪声理论上可以使用傅里叶变换和小波变换进行分析处理, 可是在实测数据中, 发现所测信号为非平稳非线性信号, 而傅里叶变化并只能处理平稳信号, 虽然小波变换在理论上能够处理非平稳非线性信号, 但是在实际实践过程中, 发现处理效果并不理想, 所以引入了希尔伯特黄变换算法。

该算法可以简单的表示为两个步骤, 首先需对原始信号进行EMD分解。EMD分解主要目的是将原始信号分解为多个IMF分量。IMF具有以下两个特点:其极点数个数和零点数个数最多相差一个;其极大值点确定的包络线与极小值点确定的包络线的和必须为零。

(1) 将信号x (t) 的极大值与极小值形成的包络线取平均得到均值曲线l (t) , 之后用原始信号x (t) 减去均值曲线l (t) 得到l1 (t) , 判断l1 (t) 是否满足IMF分量的两个条件, 若满足则得到第一个IMF, 若不满足, 则将l1 (t) 视为新的原始信号继续重复以上步骤。最后得到n个IMF与一个残余分量r。

在n个IMF中, 为了获取原始信号中的主要成分信号分量, 将分量信号与原始信号的相关系数设为筛选参考量, 当相关系数大于0.7时, 可确定该IMF为原始信号主要成分, 筛选阈值设为0.7。

(2) 进行Hilbert变换。对于信号x (t) , Hilbert变换定义为:

对每一个IMF进行Hilbert变换, 从而得到了信号的瞬时频率。借助Hilbert变换, 可得到x (t) 的解析信号:

其中x (t) 可表示为:

则信号瞬时幅值、相位分别为:

对θ (t) 求导, 即可获得瞬时频率:

根据式 (2) , 推出Hilbert变换卷积形式为:

则由卷积定理:

其中g (t) 的傅里叶变换为F[g (t) ]=-jsgn (ω) , 且:

因此, 在实际编程过程中可以以傅里叶变换为基础得到Hilbert变换[6], 即:

3.3.2 浮体倾角的提取

L3GD20陀螺仪可以测得三个方向上的角加速度, 对各方向上的角加速度积分即可得到该方向上的倾角度数。由于陀螺仪在输出时, 会存在数据漂移, 如果直接对数据积分会造成偏移误差越来越大, 最后导致数据无法使用。因此, 用卡尔曼滤波对数据进行处理[7], 卡尔曼滤波实质上是依据实测数据对随机量进行最小二乘估计, 可以对物体的实时运行状态进行估计和预测。

3.4 软件整体流程

海洋波浪作为观测对象, 其频率很低不会超过5 Hz, 根据采样定理, 将三轴加速度传感器的采样频率设定为10 Hz。采样点数为2 048, 采样时间为3.5 min。将陀螺仪采样频率设为20 Hz。软件整体流程如图5所示。

4 实验条件及结果

为了较为准确地测试系统采集数据的稳定性及准确性, 将测试地点选为湖水面积为33 km2的东湖内, 湖面的波浪相比于海浪, 没有海风的作用、气压变化、地形因素等客观条件影响, 其波浪形成条件虽然不如海浪严苛和复杂, 且波浪振幅和频率均比海浪小。但是, 两者之间具有波浪的共性, 均是由风产生的水面波动, 均可视作由无限多个振幅不同、频率不同、方向不同、相位杂乱的波组成, 因此可以作为测试场地达到我们测量波浪频率的目的。

试验现场平均波高为3~5 cm, 频率为1 Hz左右, 但是由于试验期间受到冲锋舟的影响, 致使波高有时达到10 cm左右, 频率降低到0.5 Hz左右。

利用MATLAB对采集到的角度与线加速度进行分析, 其角度曲线图如6所示, 经过卡尔曼滤波之后的角加速度进行积分, 不会再产生多大的漂移与误差, 效果良好, 其波形近似正弦曲线, 间接反映出良好的波浪震荡特性。角度的大小可近似反应波浪振幅的强度, 当角度震荡越大, 波浪振幅强度越强。

由希尔伯特算法计算得到的频率数据如表1所示, 算法处理时间约为10 s, 能够很迅速地处理数据, 分析得出波浪频率, 保证实时性。计算所得频率与实际频率相符, 经多次验证, 该算法能够很好地从非平稳非线性的随机信号中, 获取信号主要成分, 能够保证数据输出的可靠性。

本文借助ARM及Linux开发平台完成了对波浪频率、温度及气压的测量, 实现了浮标的姿态及定位, 通过GPRS网络实时地将数据反馈到监控中心, 达到了远程海浪数据监测的目的。

该设计具有良好的实时性、可靠性及准确性。其创新点在于将希尔伯特算法运用于加速度信号的分析当中, 并且通过希尔伯特变换计算出了波浪的瞬时频率, 同时以Linux系统为平台, 具有很强的扩展性, 方便波浪浮标采集系统的二次开发。

参考文献

[1]蔡元奇.共振波力发电装置:中国, CN201110233308.7[P].2011-08-16.

[2]蔡元奇.共振波力发电装置:中国, CN201120295878.4[P].2011-08-16.

[3]文圣常.海浪理论与计算原理[M], 北京:科学出版社, 1984.

[4]刘国栋.波浪浮标数据处理方法研究[D].天津:天津大学, 2011.

[5]徐海林.基于ARM-Linux的IIC串行通信[J].微处理器与可编程控制器, 2013 (20) :85-86.

[6]贾玮.基于DSP的EMD算法实现[D].太原:中北大学, 2009.

基于ARM的条码精密测量系统 篇7

利用条码技术进行精密测量的典型仪器是1990年Leica公司开发成功的数字水准仪NA2000, 这种光电一体化的新型仪器, 具有测量速度快、精度高、操作简单、读数直观, 能自动计算高差、高程, 自动记录数据, 计算机数据处理和容易实现基准测量一体化等诸多特点。国内目前对该技术的研究较少, 本文提出了一种基于ST半导体公司的32位高性能处理器STR912FW44X6的测量系统方案。

系统结构

本系统由以下几个部分组成:条码标尺、光学系统、CMOS图像采集模块、STR912主控板、键盘与液晶显示模块、电源模块和计算机测试系统。硬件结构框图如图1所示。

系统工作原理如下:带有精密位置信息的条码图像通过光学系统, 成像在CMOS图像传感器光敏面上, STR912FW44X6处理器对SVI公司的LIS-1024图像传感器进行自动曝光控制后, 采集图像信息, 经过算法处理, 获得条码带有的位置信息。

当系统进行高速图像采集时, STR912FW44X6处理器将采集信号通过以太网接口送往计算机测量系统, 进行最终的数据处理。

硬件设计

图像采集模块

图像采集模块主要由线阵CMOS图像传感器 (L I S-1 0 2 4) 、运算放大器 (TLV2221IDBVR) 组成。视频信号经运算放大器放大后传送到STR912FW44X6主处理器进行A/D转换, 转变为数字图像信号。

STR912FW44X6主处理器直接控制图像采集时序, 图像采集模块本身并没有自动曝光功能, 对环境光强的变化需要由主芯片对采集到的图像信号进行分析, 然后通过对图像传感器的控制来实现自适应环境光强的功能。

主机板模块

系统主芯片是基于ARM966E-S核的高性能嵌入式芯片STR912FW44X6, 运算速度达96MIPS, 支持单周期DSP指令。芯片的系统外围包括时钟、复位、电源管理、向量中断控制器 (VIC) 、内部PLL、RTC、定时器、9个可编程DMA通道和多达80个GPIO。还有8通道10位ADC、3相电机控制器、PWM输出和多种通讯接口。

芯片内建双组Flash, 可利用芯片上任意通讯口实现在系统编程功能。主芯片外接1片64MB内存 (芯片ST-M25P64) 来扩展存储空间。

主机板外围接口

主要有CMOS图像传感器接口、RS-232接口、I2C接口和10/100M以太网接口。

CMOS图像传感器的接口主要实现对图象传感器的自动曝光控制和图象采集;RS-232接口 (芯片SP3222) 实现程序下载, 与上位机通讯, 接受上位机指令控制;I2C接口实现主芯片与键盘和液晶显示模块之间的通讯;10/100M以太网接口 (芯片STE100P) 配合计算机软件实现高速图像采集。

键盘与液晶显示屏模块

键盘模块选用ATMega48芯片实现键盘控制和I2C通讯, 以及LCD屏模块I2C通讯。

软件设计

系统软件的流程如图2所示。

软件功能

软件的功能主要是图像的条码定位算法, 包括以下内容:

·条码检测:从条码信号中提取各种特征参量, 通常包括各条码边缘位置、中心、宽度的检测, 码字划分。

�·根据标尺已知参数确定物像比, 同时求出视距, 计算基准位置相对于目标码位置的相对距离, 按物像比放大到真实尺寸d2 (精度结果) 。

·解码:相当于信源编码的逆过程, 计算目标码字的码字位置d1 (粗读结果) 。标尺最终读数d s为粗读与精读结果之和:ds=d1+d2。

本系统采用了等间隔周期性位移条码, 利用条码等间距结构, 通过提取与条码等间距对应的特征谱线计算物像比, 进而得到条码的等效宽度序列, 最后根据条码周期性实现解码。

软件架构

整个软件采用嵌入式操作系统µCOS-II作为主要载体, 软件主要分五个线程, 系统上电启动后五个线程并行工作。五个线程分别是:串口控制、I2C接口控制、以太网接口控制、系统菜单控制、数据采集和解码。

测试结果

为了考察系统的性能, 设计了与精度为0.004mm的螺旋测微计比对实验。利用螺旋测微计测量条码标尺实际移动的数值, 每次条码标尺移动0.500mm, 总共测量11次数据, 得到11个不同位置处的条码值, 计算差值进行比对。测量结果如表1所示。

从测量数据看出, 系统测量数据的偏差值在±0.0185mm以内, 说明系统的测量达到了一定的精度。

对系统分辨率作了初步测试。保持条码和测量系统的相对位置不变, 连续测量10次数据, 如表2所示。

测量数据平均值为130.5049mm, 系统测量算术偏差在±0.3µm内, 即现有系统的分辨率约为0.3µm。采用系统误差标定, 软件算法改进等措施后, 有望进一步提高系统的测量精度。

结语

本系统是一种基于A R M的精密视觉测量平台, 实现了条码的精密测量功能。在该平台上进一步开发, 形成的系统可以应用于一维、二维长度的精密测量, 具有较为广阔的应用前景。

摘要:本文介绍了一种基于32位高性能处理器的视觉精密测量系统的软硬件设计。图像传感器采集的条码图像通过精密定位算法得到绝对位移值, 由以太网接口实现高速图像采集。该系统适用于高精度定位的各种位移测量。

关键词:ARM,嵌入式系统,视觉测量,条码

参考文献

[1].王凤鹏、王志兴、张晓, 一种新的数字水准仪测量算法, 江西科学, 2007, 25 (3) , 1

[2].ST产品目录, 2006

基于ARM的数字温度系统设计 篇8

1 数字温度传感器DS18B20

DS18B20是一种基于片上温度测量技术的数字温度传感装置, 根据传感器数据传输协议由微控制器通过软件在单线总线上产生复位及数据读写时序, 并通过时序进行数据通信。

DS18B20有以下特点:

(1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(2)测温范围为-55℃~+125℃,固有测温分辨率0.5℃。

(3)支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温。

(4)工作电源:3~5V/DC。

(5)在使用中不需要任何外围元件。

(6)测量结果以9~12位数字量方式串行传送。

在计算温度值时用资料里面给定的公式:实际温度(触摸屏显示的温度)=测量的温度(温度传感器测量的温度值在存储区)×0.0625。

2 硬件设计

总线控制器采用三星公司的3 2位ARM9微控制器2440, 它有正常,慢速,空闲,睡眠几种模式, 并且性能稳定, 可靠性高。内核为ARM920T, 控制器主频400MHZ。

数字温度传感器输出的是数字信号,可以直接与ARM连接,而不需要ADC。ARM读取DS18B20的数据,每秒提取一次ARM中的数据,进行处理,转化为实际温度。当温度超过35℃时,四个LED全亮,蜂鸣器响,屏幕显示警告对话框。硬件结构如图1所示:

3 软件设计

该设计使用的是TX2440开发板,在实验之前,首先在PC机上搭建软件设计的平台。

VMware6.5中安装Red Hat Linux9.0操作系统。配置Samba服务器,PC机的windows就可以跟虚拟机的Linux共享磁盘。配置nfs服务器,下位机和PC机就可以像访问本地文件一样访问远端系统上的文件。通过nfs挂载, 不需要下载程序,开发板可以运行在PC机上编译好的程序。

安装gcc和arm-linux-gcc。gcc编译出来的程序在本地(PC机)执行,arm-linux-gcc编译出来的程序在目标机 (ARM平台) 上执行。安装Qt和Qt/E。Qt是一个跨平台的C++图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt/E是Qt的嵌入式版本。

4 运行结果

等待测温时的状态如图3所示:

正常测温时的状态如图4所示:

5 在设备中的应用

在许多设备中,需要实时温度监控。使用数字式温度传感器和合理的现场总线技术,加上系统设计上采用完善的软硬件抗干扰措施,使系统有很强的抗干扰能力.该系统具有投资省,安装施工方便,维护工作量小,测温精度高,运行稳定可靠.性能远优于传统的模拟巡回检测系统.本系统具有广阔的应用前景。

6 结语

本文设计是以S3C2440为控制器,采用数字温度传感器DSl8820进行温度测量。DSl8820集温度测量和A/D转换于一体,直接输出数字信号。大大简化了硬件电路;现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗十扰性,适合于恶劣环境的现场温度测量;而且在一根通信线上可以挂很多这样的数字温度计,能方便地实现多点测温功能。

该测温系统简单,软件界面友好,测温精度高,连接方便,占用口线少,转换速度快,与处理器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期。

摘要:为了满足测温系统系统对处理速度、实时性和可扩展性等技术指标方面的更高需求, 以高性能的嵌入式ARM9芯片为处理器, 采用嵌入式操作系统Linux, 本文设计了一种软硬件易移植、易裁减, 结构优化的电子交易信息终端。根据资源需求, 给出了测温系统系统设计的硬件结构。在硬件目标平台上移植了Linux操作系统, 构建了嵌入式软件开发平台, 提出了新颖的带中间件模块设计的系统软件结构, 确定了系统任务划分及优先级设定, 并给出了主程序执行流程, 同时阐述了系统实现的一些关键技术。

关键词:ARM,Linux,ds18b20,测温系统

参考文献

[1]宋宝华.设备驱动开发详解[M].人民邮电出版社, 2008.02::21-93

[2]曾庆钟, 温志渝, 陈伯胜.基于ARM的多点测温系统设计[J].现代电子技术, 2007 (17) :127-129

[4]戴振华, 杨海涛, 康云.温室智能温度控制系统设计[J].电子质量, 2007 (12) :31-34

上一篇:《金色花》导学案下一篇:渔家傲·秋思教案