arm单片机范文
时间:2023-04-09 11:57:51
导语:如何才能写好一篇arm单片机,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
关键词:arm; LM3S811; 微控制器; TH12864; 液晶显示; 驱动程序
中图分类号:TN873.93; TP271文献标识码:A文章编号:1004373X(2011)22006503
Design of Car Display System Based on ARM MCU
ZHANG Dong, QIN Changli, XIE Dadi, WU Xiaoru
(Collage of Physics and Electronic Information , Yan’an University, Yan’an 716000, China)
Abstract: In order to accomplish a design scheme of car display system, an implementation method of hardware and software is designed according to the main functions and characteristics of LCD module TH12864 and microprocessor LM3S811 in the series of ARMsR CortexTMM3 based 32bit microcontroller. The basic driver program are conveniently designed by using the Stellaris peripheral driver library function. The testing and verification results show that the functions of the driver program and display program are ideal. The hardware resources of microprocessor LM3S811 is rich and its software is easy to develop program. The developed display system can be conveniently transplant into other system.
Keywords: ARM; LM3S811; microcontroller; TH12864; LCD; driver program
收稿日期:201106160引言
8位的51单片机长期占据着微控制器(MCU)的主流市场,但随着技术与需求的发展,32位微控制器应用增长率也在不断攀升。目前,基于ARM内核的32位微处理器在市场上处于领导地位[12]。
基于ARM嵌入式处理器的片上系统解决方案可应用于企业应用、汽车系统,家庭网络和无线技术等市场领域。ARM CortexTM系列提供了一个标准的体系结构来满足以上各种技术的不同性能要求,基于ARM架构有3个分工明确的系列:A系列面向复杂的尖端应用程序,用于运行开放式的复杂操作系统;R系列针对实时系统;M系列专为低成本控制和微控制器应用开发。CortexM3是基于ARM架构的处理器,是专门为了在微控制器等对功耗和成本敏感的应用领域实现高系统性能而设计的,它简化了可编程的复杂性,使ARM架构成为各种应用方案的良好选择[3]。
Luminary Micro公司(已被TI公司收购) Stellaris提供一系列的微控制器是首款基于ARMsR CortexTMM3的控制器,它们为对成本尤其敏感的嵌入式微控制器应用方案带来了高性能的32位运算能力。 这些具备领先技术的芯片使用户能够以传统的8位和16位器件的价位来享受32位的性能。其中,LM3S811 微控制器正是针对工业应用方案而设计的,包括测试和测量设备、工厂自动化、建筑控制、运动控制、医疗器械、火警安防以及电力能源等[4]。
TH12864等图形点阵液晶显示器以其工作电压低、功耗低、寿命长、不产生电磁辐射污染、可以显示复杂的文字及图形等优点, 已被广泛应用在各种仪器仪表、电子设备和家用电器等领域[57]。
本文尝试将基于ARM的LM3S811 微控制器与TH12864显示模块相结合的技术应用。
1系统硬件设计
1.1LM3S811主控芯片
本次系统硬件设计的主控芯片选择TI公司LM3S811芯片[89],其电源电压为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所示。
图1LM3s811系统方框图1.2TH12864显示模块
本次系统设计的显示模块选择带中文字库的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: DB0DB7,并行数据;15:PSB,串并口选择,串行模式为低电平有效;17:/RST,复位;19:LEDA,背光正极;20:LEDK,背光负极[10]。
1.3LM3S811主控芯片与TH12864显示模块的连接
为节约系统硬件资源以便其他用途,故选择TH12864显示模块为串行模式。则主控芯片LM3S811只需要占用3个GPIO管脚即可,保留PWM等用于小车驱动等,选择与比较器和I2C复用的PB2,PB4和PB6,如图2所示。
图2LM3S811主控芯片与TH12864
显示模块的原理图2系统软件设计
系统软件设计分为底层驱动程序、中层实现程序和上层应用程序。软件以IAR集成开发环境为开发平台,用C语言编写,便于维护和移植[1112]。下面是部分源程序。
2.1 底层驱动部分
底层驱动程序完成的功能是实现TH12864的硬件时序[10]。
图3TH12864硬件串行时序图程序如下:
void Send(uchar type,uchar transdata)
{
Pretreatment(type,transdata);
GPIOPinWrite(LCD_12864_PORT, LCD_12864_CS, 0xFF);
GPIOPinWrite(LCD_12864_PORT, LCD_12864_SCLK, 0x00);
for(j=3;j > 0;j勃)
{
for(i = 8;i > 0;i勃)
{
if(ucSndtmp[j] & 0x80)
{GPIOPinWrite(LCD_12864_PORT, LCD_12864_SID, 0xFF); }
else
{GPIOPinWrite(LCD_12864_PORT, LCD_12864_SID, 0x00); }
GPIOPinWrite(LCD_12864_PORT, LCD_12864_SCLK, 0xFF);
ucSndtmp [j]
GPIOPinWrite(LCD_12864_PORT, LCD_12864_SCLK, 0x00);
}
SysCtlDelay(600 * (TheSysClock/ 3000000));
}
GPIOPinWrite(LCD_12864_PORT, LCD_12864_SID, 0x00);
GPIOPinWrite(LCD_12864_PORT, LCD_12864_CS, 0x00);
}
驱动程序先预处理3个字节要发送数据的具体内容,片选后,依次循环,按时钟信号发送每个字节的每一位,其中延时不能省略。
2.2中层实现程序
中层实现程序完成主要功能是,按照TH12864的用户指令集,用底层驱动程序发送指令,完成初始化、显示、清除、设定等功能。例如初始化程序:
void Ini_Lcd(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinTypeOut(LCD_12864_PORT ,
LCD_12864_CS|LCD_12864_SID|LCD_12864_SCLK );
SysCtlDelay(100 * (TheSysClock/ 3000)); //延时约100 ms
Send(0,0x30);/*功能设置:一次送8位数据,基本指令集*/
SysCtlDelay(72 * (TheSysClock/ 3000000)); //延时约72 μs
Send(0,0x02);/*DDRAM地址归位*/
SysCtlDelay(72 * (TheSysClock/ 3000000)); //延时约72 μs
Send(0,0x0c);/*显示设定:开显示,不显示光标,不
做当前显示位反白闪动*/
SysCtlDelay(72 * (TheSysClock/ 3000000)); //延时约72 μs
Send(0,0x01);/*清屏,将DDRAM的位址计数器调
整为“00H”*/
SysCtlDelay(72 * (TheSysClock/ 3000000)); //延时约72 μs
Send(0,0x06);/*功能设置,点设定:显示字符/光标
从左到右移位,DDRAM地址加1*/
SysCtlDelay(72 * (TheSysClock/ 3000000));//延时约72 μs
}
从前两句可以看出LM3S811在设置GPIO时,比普通51单片机设置要简单许多,无需记忆众多的寄存器,由于厂家提供了Stellaris外设驱动库函数,只要调用相应API接口函数即可,简化了编程的复杂性,对于新学者也可以迅速上手编程工作。
2.3上层应用程序
在底层驱动程序和中层实现程序的基础上,程序移植方便。可以根据系统需求完成字符、汉字和图片等实际显示内容。
图4实际显示效果图此次系统实现了开机图片显示,欢迎词和小车状态的循环动态显示,速度显示及电子秒表等功能。
3结语
通过本次系统集成的设计、制作、调试和验证,完成并实现了基于ARM单片机的小车显示系统功能。实现了LM3S811对于TH12864显示模块的控制,其底层驱动程序可以供大家参考。在实现过程中发现,在硬件方面,LM3S811的主频较高,运算能力较强,外设资源丰富。在软件方面,由于厂家提供了Stellaris外设驱动库函数,降低了编程的难度,可以快速上手工作。此外,本系统也可以推广应用到其他小型仪表或设备显示系统。
参考文献
[1]宁殿燕,张仲礼,王继矿,等.基于ARM Cortex M3内核矿井直流电法仪的研制[J].西安科技大学学报,2011(1):1115.
[2]崔琪琳,吴晓凤.基于ARM的光源跟踪系统的设计[J].电子测试,2011(2):6164.
[3]YIU Joseph.Cortex M3权威指南[M].北京:北京航空航天大学出版社,2010.
[4]Texas Instruments. StellarissR LM3S811 Microcontroller [EB/OL]. [20110109]. /stellaris.
[5]倪景峰,周腾,马恒.SMC12864液晶显示器在密闭监测系统中的应用[J].测控技术,2011,30(1):9799.
[6]辛阿阿,厉善亨.基于12864液晶模块的动态波形显示实现方法[J].仪器仪表用户,2010,17(3):5657.
[7]宋稳力,陈昌旺,黄文婷.液晶显示模块YG12864A的接口设计[J].现代显示,2005(6):3537.
[8]黄争.德州仪器高性能模拟器件在高校中的应用及选型指南[M].上海:德州仪器半导体技术(上海)有限公司大学计划部,2010.
[9]周立功.Cortex M3开发指南[M].广州:广州致远电子有限公司,2008.
[10]深圳彩晶科技.12864中文字库液晶显示模块使用手册[EB/OL].[20090815]..
[11]王道新,熊祖彪,陈竞,等.基于IAR集成开发平台的ARM程序设计方法[J].电子设计应用,2005(10):102104.
篇2
关键词:SDRAM;单片机;MK60DN512ZVLQ10;存储管理;控制程序
中图文分类号:TP368
随着集成电路技术与工艺的发展进步,单片机应用领域也逐渐扩广,进入到社会生产生活的方方面面。在某些成本敏感的应用场合迫切需要具有速度高、容量大的深度嵌入式系统,技术的进步,使得以低廉的价格获得高性能,低功耗单片机成为可能。借助极高的接口速度,我们就可以使用普通GPIO口在没有SDRAM控制器的廉价单片机上实现软件驱动SDRAM。
1 硬件介绍
1.1 单片机
Kinetis系列是飞思卡尔(Freescale)公司于2010年下半年推出的业内首款基于ARM Cortex.M4内核的微控制器,K60系列是Kinetis系列的第一阶段产品之一[1]。K60具有丰富的外设接口:(1)高速16位模数转换器;(2)12位数模转换器,带有片上模拟电压参考;(3)多个高速比较器和可编程增益放大器;(4)低功耗触摸感应功能,通过触摸能将器件从低功耗状态唤醒;(5)多个串行接口,包括UART;(6)强大灵活的定时器;(7)片外系统扩展和数据存储选项。
1.2 SDRAM
本文选用Hynix的H57V2562GTR-60C 256Mb SDRAM,其为4M x 4Bank x16bit组织结构。操作SDRAM的主要命令[2]有:
MRS (Mode Register Set,模式寄存器设置),
NOP (No Operation,空操作),BA(Bank Active,存储器激活),RD(Read,读,可设置是否自动预充电),WR(Write,写,可设置是否自动预充电),PB(Precharge Bank,预充电存储器,可设置全部/选定Bank),BS(Burst stop,停止突发传输),DQM(DQM,数据掩码),AR(Auto Refresh,自动刷新),BRSW(Burst-Read Single-Write,突发读单一写),SR(Self Refresh,自刷新,进入/退出),PPD(Precharge Power Down,掉电预充电,可设置进入/退出),CSS(Clock Suspend,时钟挂起可设置进入/退出)。
1.3 显示器LCD及摄像头Ov7725
本文选用2.4英寸240*320像素LCD作为显示器,摄像头采用Ov7725。
2 硬件连接
2.1 MCU与SDRAM接口
SDRAM需要一组16位宽的接口进行数据传输,13位宽的接口进行地址设定,两根Bank选择线,CS,CLK,CKE,WE,CAS,RAS,LDQM,UDQM各一根。K60的C口和E口均为完整16位口,可以用作地址线和数据线接口,剩余控制线使用单片机未用接口即可。
2.2 MCU与LCD接口
该LCD控制器一共需要13根控制线,其数据线需要一个完整的8位口,接在K60的口8至15位,剩余控制线使用单片机未用接口即可。
2.3 MCU与Ov7725接口
Ov7725[3]是一片CMOS的集成图像传感器,一共需要13根控制线,其数据线需要一个完整的8位口,接在K60的B口0至7位,剩余控制线使用单片机未用接口即可。
3 软件设计
3.1 SDRAM底层驱动构件
本层构件的功能是以软件方式实现基本的内存命令,为上层软件提供服务。主要函数原型和说明如下所述:
GPIO_Initial()初始化驱动SDRAM的GPIO口;MRS(u16 mode)设置模式寄存器,参数mode为模式寄存器控制字;BA(u8 bank,u16 addr)激活BANK,发送行地址,参数bakn为BANK编号,address为行地址;RD(u8 bank,u16 addr,u8 AutoPreCharge)读取指定地址处数据,参数bank为BANK编号,addr为列地址,AutoPreCharge表示是否自动预充电;WR(u8 bank,u16 addr,u8 AutoPreCharge)在指定地址处写入,参数bank为BANK编号,addr为列地址,AutoPreCharge表示是否自动预充电;PBAll()给所有BANK预充电;PBOne(u8 bank)给选定BANK预充电,参数bank为BANK编号
AR()自动刷新;SREntry()自刷新进入;SRExit()自刷新退出;NOP()空操作;CLK_Count(u16 total),参数total是向SDRAM传送的有效时钟数;Initial()SDRAM初始化函数;NOP_Read()空操作读;NOP_Write()空操作写;NOP_Burst()空操作突发读写。
其中,NOP_Write函数在给SDRAM产生有效时钟信号的同时自动将缓冲区第一个字放到数据线上;NOP_Read函数在给SDRAM产生有效时钟信号的同时自动将地址线上的一个字取回放到缓冲区。NOP_Burst函数根据突发读写标识(Burst Flag),为1时,从缓冲区第二个字开始依次将余下的字放到地址线上,为0时,从地址线上取回指定字数存放到缓冲区从第二个字开始处,并给SDRAM产生有效时钟信号。其执行方式如图1所示。
3.2 SDRAM中间级基本读写功能构件设计
本层构件的功能是实现SDRAM单个字(WORD)读写,以及突发读写功能,能够将SDRAM的物理地址转换为线性逻辑地址,并完成定时自动刷新。为实现以上功能,定义一些全局变量,下面将说明。Buffer类型为unsigned short int*,长度16字节,在内存读写时作为数据交换区域。BurstFlag类型为Unsigned char,长度1字节,其值0为突发读,1为突发写。BurstLength类型为Unsigned char,长度1字节,指明突发长度。
首先为保持SDRAM内数据不丢失,必须在64ms以内进行一次刷新操作。在K60的中断定时器(PIT)中开启一个周期中断通道,设置其周期小于64ms即可,在其终端服务函数中调用自动刷新函数AR,然后再调用CLK_Count以产生数个自动刷新节拍,这样自动刷新功能就完成了。
单个字读、写(函数名定义为Read_Word和Write_Word)实现过程类似。由于系统中存在周期中断,并且该中断同是对SDRAM进行操作的,所以在进行读写之前,必须先关闭周期中断,以保证操作进行的正确性。紧接着便可以执行相应读取或写入操作。
当为读取操作时,先调用Bank激活命令BA同时传入相应Bank编号和行地址;然后调用CLK_Count,给SDRAM发送几个有效时钟,具体有效时钟数量,视存储器芯片和设定的RCD周期而定,完成行选通到列选通延迟;然后调用RD读函数,并传入相应的列地址;然后调用CLK_Count,给SDRAM发送几个有效时钟,具体有效时钟数量,视存储器芯片和CL周期而定,这段时间为读取潜伏期;之后便可以调用NOP_Read,将数据线上的一个字取回缓冲区,开启周期中断后就可以返回给主函数调用者了。
当为写入操作时,先从缓冲区取出欲写入的一个字放到数据线上,然后调用Bank激活命令BA同时传入相应Bank编号和行地址;然后调用CLK_Count,给SDRAM发送几个有效时钟,具体有效时钟数量,视存储器芯片和设定的RCD周期而定,完成行选通到列选通延迟;然后调用WR读函数。需要注意的是,这里与读取操作不同,并不存在潜伏期,也就是说此时欲写入的数据已经在SDRAM里等待被写入了,只需要短暂的写回延时即可。为与读操作函数对称,使程序结构易于被程序员读懂,本文仍以NOP_Write函数形式实现写回延时。至此写入操作便完成,将周期中断打开即可。图2是单个字读写函数的流程图,右为写,左为读。
对于突发读和突发写,只要在进行读写前设置突发读写标识BurstFlag为突发读(值为0)、突发写(值为1),将单个字读写函数中相应的NOP_Read、NOP_Write更改为NOP_Burst,并计算好NOP_Burst的数量即可。
3.3 SDRAM内存管理模型设计
本文使用链表式的内存管理算法[4]来管理系统上挂载的容量为32M字节SDRAM存储器。该SDRAM的组织结构为4Bank×213行×29列×16位,因此本文将动态内存块大小设置为1K字节,刚好是一行中所有存储体的总容量。这样就32M字节存储器将被划分为131072个存储块。显然即便是每个存储块只用一个字节记录相关信息,对于单片机来说开销也是巨大的,K60DN512单片机配备了128KB的SRAM,尽管在深度嵌入领域这个容量已经相当大,也是不够用的。因此需要设计一种算法用来动态创建和删除链表中的节点,控制链表中节点的数量,来完成SDRAM存储管理。
每一个内存(指系统挂载的SDRAM存储器,下同)块对应一个节点,该节点的结构定义如下:
typedef struct BlockNode
{ unsigned long int BlockAddr; unsigned char State;
struct BlockNode *left;
struct BlockNode *right;
} BNode, *pBNode;
BlockAddr存储该内存块的首地址,State标记该内存块是否被分配,值为0未被分配,其他值已被分配,left存储左边一个节点指针,right存储右边一个节点指针。
该结构体占据13个字节存储量,若在单片机上用13KB存储器来存储该链表则可以方便管理1MB的SDRAM存储器,还是非常划算的。
本文采用就大法分[5]配动态分配内存块。其算法流程图3所示。
回收内存的算法相对简单,只需要根据需要回收的内存块首址删除掉相应节点即可。
3.4 系统整体设计
在完成了所有基本构件的设计以后,便可以进行系统整体设计了。这只需要调用基本构件初始化函数,按照一定时序建立服务函数即可,系统启动流程如图4所示。
4 系统性能测试
本文以多种方式测试了该系统对SDRAM读写数据的能力,测试结果如表1所示。
由实际测试数据可知,突发传输可得大大提高SDRAM的读写速度。
5 应用举例
在深度嵌入的单片机上实现高速图像采集、存储、处理、显示是比较困难的,其原因在于MCU运算速度有限,存储容量有限。该系统采用的K60单片机已经具有DSP处理器,可以实现对大量数据的高速处理。
在场终端到来时设置行计数为0并打开场中断,在行中断到来时开启DMA,跟随PCLK时钟采集640字节数据,DMA操作结束后对行计数执行加1操作,判断行计数有没有达到240,如果达到240,关闭行中断并设置行计数为0,否则跳过此步骤继续执行将640字节数据存入SDRAM。在主函数中读取SDRAM中存储的数据发送到LCD上显示便实现了动态显示。主函数中也可以对SDRAM中存储的数据进行处理变换后再重组发送到显示器或作他用。
6 结语
在深度嵌入的现代生活中,单片机的速度越来越快,人们对存储容量的需求也越来越大,相对于花费大量资金购买一块昂贵的带有SDRAM控制器的MCU,本文介绍的GPIO口控制和管理SDRAM具有设备简单,技术门槛低,开发周期短的优点。系统有待改进的地方在于可移植性不够强,通用性不够好,从编程角度看,最基本的指针访问内存的方式必须以函数代替,这样无法实现某些算法。该系统适合数据量大,对数据存取速度要求高,频繁改写数据的系统,比如在图像采集系、处理等系统。
参考文献:
[1]王宜怀,吴瑾,蒋银珍.嵌入式系统原理与实践[M].北京:电子工业出版社,2012:22-35.
[2]金新强,白雪飞,张璠.一种DDRSDRAM控制器的设计[J].微型机与应用,2013,32(8):23-25.
[3]任志敏.一种基于OV7725的图像实时显示系统设计[J].福建电脑.2013,29(1):128-130.
[4]张荣华,田泽,韩炜.基于链表的动态存储器管理设计与实现[J].计算机技术与发展.2011,21(7):250-253.
篇3
书代号书 号书 名作 者定 价出版 日期内容简介页 码
B17150715-9嵌入式系统设计与实践张晓林估29.0预计2005.10
B17210721-1嵌入式实时操作系统μC/OS-II原理及应用任 哲22.02005.086
B16530653-3ARM9嵌入式技术及Linux高级实践教程陈 赜32.02005.076
B16020602-9ARM嵌入式技术实践教程 陈 赜29.02005.026
B15770577-4ARM嵌入式系统基础教程周立功32.02005.017
B17290729-7ARM嵌入式系统实验教程(二)周立功估29.02005.097
B17260726-2ARM嵌入式系统实验教程(三)周立功估29.0即将出板7
ARM嵌入式系统实验教程(三)--扩展实验周立功估29.0即将出板8
B16480648-7嵌入式系统开发与应用教程田 泽35.02005.038
B14860486-7嵌入式系统开发与应用实验教程 (第2版) (含光盘)田 泽29.52005.048
B15800580-4嵌入式实时操作系统及应用开发罗 蕾34.02005.019
B14800480-8嵌入式控制系统及其C/C++实现 --面向使用MATLAB的软件开发者 (含光盘)骆丽 译32.02005.049
二、 ARM、SoC设计、IC设计及其他嵌入式综合类
代书号书 号书 名作 者定 价出版 日期内容简介页 码
源码开放的嵌入式实时操作系统T-Kernel周立功 等译估50.0预计2005.099
B16300630-4嵌入式Ethernet和Internet通信设计技术骆丽 译估28.0预计2005.1110
B16290629-0嵌入式系统实时多线程--基于ThreadX和ARM张炯 译估35.0预计2005.1110
B17250725-4μC/OS ARM移植要点详解黄燕平估32.0预计2005.1110
B17190719-X从51到ARM--32位嵌入式系统入门赵星寒估38.0预计2005.1010
B13590359-3嵌入式系统词典马广云译2005.0811
B17100710-6ARM微控制器基础与实战 (第2版)周立功43.02005.0811
B16740674-6ColdFire系列32位微处理器与嵌入式Linux应用 (含光盘)李晶皎39.52005.0611
B16730673-8深入浅出ARM7--LPC213x/214x(上)周立功45.02005.0711
B16520652-5ARM嵌入式系统开发--软件设计与优化沈建华译75.02005.0512
B14300430-1MIPS处理器设计透视 (See MIPS Run)赵俊良译55.02005.0612
B16000600-2AT91系列ARM微控制器体系结构与开发实例朱义君34.02005.0412
B15410541-3嵌入式系统开发与应用田 泽54.02005.0113
B15830583-9ARM嵌入式系统软件开发实例 (一)周立功56.02005.0113
B15580558-8嵌入式系统设计与开发实例详解 --基于ARM的应用胥 静43.02005.0113
B15510551-0大型RISC处理器设计--用描述语言Verilog设计VLSI芯片 (含光盘)田泽 译39.02005.0113
三、 DSP
代书号书 号书 名作 者定 价出版 日期内容简介页 码
B17220722-X高性能工业控制DSP--ADSP 2199x原理及应用 (含光盘)王晓明估39.02005.0914
B15480548-0电机的DSP控制技术及其应用谢宝昌39.02005.0314
B16060606-1DSP技术原理及应用教程刘艳萍26.02005.0314
四、 单片机
代书号书 号书 名作 者定 价出版 日期内容简介页 码
4.1 选编及器件手册
B15420542-1单片机应用技术选编 (11) 何立民69.02005.0915
B17200720-3单片机外围器件实用手册 --数据传输接口器件分册 (第2版) 邬宽明估59.52005.0915
B14650465-4单片机外围器件实用手册 --输入通道器件分册 (第2版) 纪宗南59.02005.0715
4.2 PIC单片机
B16540654-1高职高专通用教材--PIC单片机基础教程丁跃军22.02005.0715
B15650565-0PIC18Fxxx单片机程序设计及应用 (含光盘)刘和平29.02005.0316
B15430543-XPIC单片机C语言开发入门 (含光盘)武 锋29.02005.0216
4.3 AVR单片机
B17240724-6AVR单片机GCC程序设计 佟长福估28.02005.1016
B15660566-9AVR单片机高级语言BASCOM程序设计与应用张茂青22.02005.0116
B15710571-5高档8位单片机Atmega128原理与开发应用指南(上)马 潮34.02005.0117
4.4 其他单片机图书
单片机初级教程--单片机基础 (第2版) 张迎新预计2005.11
篇4
关键词:单片机;发展趋势;电子技术
中图分类号:TP368.1 文献标识码:A 文章编号:1674-7712 (2012) 14-0030-01
一、前言
单片机又被称为微控制器,被广泛地应用到了工业控制领域上,对于电子技术的发展起到了极为重要的作用。虽然只是集中在一块芯片上,但是单片机是一个完整的计算机系统,具有定时器、通讯接口、外存、外部总线系统、中断系统、内部总线系统、内存、CPU等,甚至还有些单片机还集成了网络、图像、声音的输出输入系统。从最早的4位、8位单片机开始,目前已经发展到32位300M的高速单片机[1]。
现代人们的生活中离不开单片机的身影,无论是机械产品,还是电子产品,几乎都会集成有单片机。汽车配备40多部单片机,而鼠标、键盘、手机、掌上电脑、电子玩具、电话、家用电器、计算器等都配有1-2部单片机,对于那些较为复杂的工业控制系统而言,甚至会有数百台、数千台单片机在同时工作。可以这么说,单片机的数量甚至比人类的数量还要多[2]。
二、单片机在电子技术中的应用范围
(一)单片机在智能仪器仪表上的应用
单片机以使用方便、扩展灵活、微型化、体积小、可靠性高、速度快、控制功能强、集成度高等诸多优点,也被广泛应用于智能仪器仪表领域。单片机的出现有效地促进了仪器仪表向柔性化、智能化、综合化、多功能化、数字化方面转化,将过去传统的控制仪器仪表、测量仪器仪表完全颠覆,由单片机构成的智能仪表集控制、处理、测量等多种功能于一体,较过去的数字电路和电子电路而言,显得更加的强大有用,给仪器仪表的发展打下了坚实的基础。例如,东芝首款基于ARM Cortex(TM)-M0内核的单片机TMPM061FWFG,通过内置高精度AD转换器优化了智能电表性能,这是一款全新的32位RISC微控制器,这款全新的TMPM061FWFG是东芝公司首款Cortex?-M0器件,专为智能电表而设计。它为智能电表的设计提供了单芯片解决方案,它整合了高精度24-位Delta-Sigma AD转换器,一个功率计算引擎及内置了其它特殊功能IP。ARM Cortex?-M0是ARM公司推出的最小型处理器,它具有非常小的芯片面积、极低功耗、最少代码量的特点,但它的制造成本却与传统的8位或16位MCU相同。ARM公司具有大量的应用软件和统一的开发环境,这也有助于节省开发成本,内置了一个非常精确的实时时钟,该时钟可通过其内置温度传感器调节温度补偿,调节精度可达0.5ppm 。采用3个高精度24-位Delta-Sigma AD转换器可同时测量交流电源的电流和电压。
(二)单片机在工业控制中的应用
由于单片机可以构成形式多样、各具特色的数据采集系统和控制系统,故其被广泛应用于工业控制领域,例如各种报警系统控制、电梯智能化的控制、自动化仪表控制、安全阀控制、自动化流水线的智能化管理等。
(三)单片机在家用电器中的应用
单片机目前已经被大量应用于家用电器的市场开拓和更新中。如根据对象的情景模式、周围环境来将光圈速度进行自动调节的摄像机和照相机 ;可以根据食物种类来选择加热时间、加热温度的微波炉; 可以自动选择冷藏时间、冷藏温度,有效识别食物保鲜程度、食物种类的冰箱;可以根据脏物程度、衣物种类来自动选择洗涤强度、洗涤时间的洗衣机;由单片机控制的高级电视游戏机、电子玩具等。与此同时,随着单片机的技术不断成熟和发展,家用电器的性能价格都得到了很大的提高[3]。
(四)单片机在医用设备领域中的应用
随着人们生活水平的快速提高,人民对于医疗卫生和自身健康的关注度也日益增加,医疗设备灭菌消毒就显得尤为重要,但是一些小诊所、小医院的自动化的程度太低,消毒灭菌设备极为简陋,很难有效控制消毒灭菌的质量。而单片机由于使用方便、扩展灵活、功能强、体积小的特点,正在逐渐地在医用设备领域得到了大量的应用,如病床呼叫系统、监护仪、超声诊断设备、分析仪、医用呼吸机等等。
(五)单片机在汽车电子领域中的应用
汽车电子中应用到单片机的地方非常广泛,例如胎压检测、制动系统、abs防抱死系统、GPS导航系统、发动机智能电子控制器等。例如丰田汽车利用单片机来进行雷达探测行人、障碍物,系统通过刹车和方向控制车体。在遇到紧急刹车也难以避开行人或障碍物时,自动控制系统可改变车体方向,从而避开冲撞。
三、单片机的发展趋势
(一)微型单片化
目前所用的单片机都将时钟电路、定时电路、中断系统、串行通信接口、并行通信接口、中央处理器(CPU)、只读程序存储器(ROM)、随机存取数据存储(RAM)集成在一块芯片上,而单片机的发展趋势正朝着微型化的方向发展,具有的功能更加强大,所包含的单元电路更加多,甚至还包括了LCD(液晶)驱动电路、WDT(看门狗)、PMW(脉宽调制电路)、A/D转换器等,另外,功耗还更低、重量更轻、体积更小。
(二)低功耗CMOS化
我们目前所大量使用的单片机功耗大概都在100 MW左右,而最早的单片机功耗大概在630 MW左右。而且单片机的发展趋势是朝着低功耗的方向大力发展。目前互补金属氧化物半导体工艺就是一种有效地减少单片机功耗的工艺技术,更加适合于要求低功耗如电池供电的应用场合。
参考文献:
[1]吴岩.单片机在电子技术中的应用和开发技术研究[J].黑龙江科技信息.2011(09):112-115.
篇5
【关键词】Proteus;单片机;仿真;ARM7
ARM处理器是一种低功耗高性能的32位RISC处理器,ARM处理器是一个综合体,ARM公司自身并不制造微处理器,而是同ARM的合作伙伴来制造,作为SOC(System On Chip)的典型应用,目前,基于ARM的处理器以其高速度、低功耗等诸多优异的性能而得到非常广泛的应用。
1.ARM7处理器特性及其应用领域
ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM微处理器及技术的应用几乎已经深入到各个领域:
(1)工业控制领域
作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战;
(2)无线通讯领域
目前已有超过85%的无线通讯设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固;
(3)网络应用
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战;
(4)消费类电子产品
ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用;
(5)成像和安全产品
现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术[2]。
2.Proteus和NXP LPC2106简介
2.1 Proteus软件简介
Proteus是英国Lab-center Electronics公司开发的电子电路实物仿真软件,它是完整的嵌入式系统软、硬件设计仿真平台,包括原理图输入系统ISIS、带扩展的ProSpice混合模型仿真器、动态器件库、高级图形分析模块和处理器虚拟系统仿真模型VSM(Virtual Simulation Model)。
Proteus可以实现模拟电路、数字电路、微控制器系统电路以及混合电路系统的电路仿真、软件仿真,系统协同仿真和PCB设计等功能。Proteus支持主流单片机系统与各种常见的芯片的仿真,目前支持的单片机类型有:68000系列、8051系列、AVR系列、LPC21xx系列、PIC16系列等。本文提出的虚拟ARM实验平台采用NXP公司的LPC2106作为核心部件[3]。
2.2 NXP LPC2106简介
LPC2106是Philips公司推出的一款基于ARM7TDMI-S的32位微控制器,带有128KB的片内高速Flash存储器和64KB的片内SRAM,与片内存储器控制器接口的ARM7局部总线、与中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的VLSI外设总线(VPB)。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟频率下运行。LPC2106具有非常小的尺寸和极低的功耗,因此它们非常适合于那些小型化作为主要需求的应用,带有宽范围的串行通信接口(双UART、SPI、IIC),由于片内SRAM具有大的缓冲区规模和强大的处理能力,而多个32位定时器、PWM输出和32个GPIO使它们特别适用于工业控制和医疗系统[4]。
3.Protues下ARM7的典型实验
3.1 外部中断实验
LPC2106具有17个中断通道,可将它们设置为FIQ、向量IRQ和非向量IRQ,通过编程不同设的向量IRQ中断优先级,可以实现动态调整。FIQ中断优先级最高,向量IRQ具有中等优先级,非向量IRQ的优先级最低。
实验任务:
结合相关寄存器的使用方法、VIC基本操作步骤和LPC2106外部中断寄存器,使用外部中断0和中断1控制8位流水灯流动方向。当KEY0按下时,D0~D7闪烁3次,由D0向D7流动。当KEY1按下时,D0~D7闪烁3次,由D7向D0流动。
3.2 矩阵键盘实验
判断键盘中有无键按下:将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键裤按下,而且闭合的键位于低电平线与行线相交叉的按键之中。若所有列线均为高电平,则键盘中无键按下。
判断闭合键所在位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是依次将行线置为低电平,即在某根行线为低电平时,其他线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉外的按键就是闭合的按键。
实验任务:
根据矩阵键盘扫描原理,设计4×4键盘,使用中断方式读取,并用2位数码管显示键值。
4.结束语
通过本文的介绍,我们知道Proteus是一种混合电路仿真工具,既可以仿真模拟电路又可以仿真数字电路以及数字、模拟混合电路。可以仿真各种电路和集成IC,支持多种型号单片机,元件库齐全,使用方便。充分体现了使用用Proteus做单片机仿真实验的诸多优点,譬如速度快,程序修改、编译后马上就可以看到效果,不需要拔片、写片、插片这些过程,提高实验效率;方便直观形象,硬件电路随时可以进行更改,教学演示非常容易;不受时间和空间的限制,可自主设计和验证方案,有利于系统、科学、有效地培养科研工作者的专业实践能力[5,6]。
参考文献
[1]朱清慧,张风蕊.Proteus教程:电子线路设计、制版与仿真[M].清华大学出版社,2008.
[2]陈家义.基于Proteus的ARM虚拟实验平台[J].学周刊,2011(10).
[3]杨增汪,戴新宇,李贵明.基于Proteus的嵌入式系统虚拟开发[J].机电产品开发与创新,2010(03).
[4]孙立香.Proteus和Keil软件在单片机中的应用[J].科技资讯,2009(36).
[5]金辉,董全成,冯安.PROTEUS在实验教学中的应用分析[J].科技信息,2009(24).
篇6
关键词:日立SH3; SH3单片机; 单片机最小系统; 32位处理器
中图分类号:TN91934文献标识码:A文章编号:1004373X(2012)06001504
Establishment for least system of Hitachi SH3 MCU
GUO Deqiang1, ZHANG Huapeng2
(1. Henan Ureika Systems Engineering Ltd, Zhengzhou 450001, China;
2. Luoyang Institute of Science and Technology, Luoyang 471023, China)
Abstract: In order to give the relevant Chinese engineers another choice and make them to master the Hitachi SH3 series processor to empolder some applied products when ARM processors have been almost monopolized the Chinese market of 32bit processors, the least system of Hitachi SH3 series MCU was built by means of HD6417708S MCU in Hitachi SH3 series, and the serial communication experiment was conducted by utilizing a serial port module of MCU. The experiment achieved the anticipated result. It shows that the least sysem of Hitachi SH3 seres MCUs works normally and is reliable.
Keywords: Hitachi SH3; SH3 MCU; least system of MCU; 32bit processor
收稿日期:201109210引言
SH系列是日本日立公司推出的32位高档的、RISC型单片机系列,到现在为止,已经推出了6种类型的单片机系列:基本型的SH1,改进型的SH2,低功耗的SH3,增强型的SH4,以及和DSP结合的SH2DSP和SH3DSP。
SH3系列是低功耗型SH处理器,高性能RISC结构,在时钟133 MHz时,性能可以达到173 MIPS。在2.25 V工作时,功耗为400 mW。SH3的SH7709,其消耗功率每瓦运行的指令数达到315 MIPS,能源利用效率很高。它内部集成了32位乘法器、4路8 KB CHACHE、存储器管理单元MMU、一些通用内部控制模块和外部接口模块。其性能可以与ARM公司的ARM9系列处理器相媲美,在世界的嵌入式领域占有很大的份额,但是由于SH3系列单片机在国内可参考的资料有限,技术支持不到位等种种原因致使ARM系列几乎独霸国内32位处理器市场。SH3系列处理器无法在国内发挥它强大的功能。本文介绍了如何用HD6417708S 型号SH3单片机从硬件到软件从无到有建立起SH3系列单片机最小系统,并用系统的串口模块来验证系统能否正常运行。有了这个最小系统平台开发人员只要在系统中添加自己需要的功能模块就可以开发出需要的产品,在ARM一通天下的形势下给国人增加一个选择方向,同时对于嵌入式领域正从零开始研究某款处理器的开发人员也有一定的借鉴之处。
1最小系统的整体介绍
用HD6417708S 型号SH3单片机建立的最小系统的结构框图如图1所示。此最小系统包括MCU(HD6417708S)、电源模块、存储器模块、MCU辅助电路,为了可以直观地看到系统能够正常运行增加了串口通信模块用于演示。
图1最小系统的结构框图2硬件平台的搭建
2.1电源模块
“HD6417708S”单片机理想的工作电压是3.3 V, 上下可以有0.3 V的波动,存储器与串口芯片都支持3.3 V供电。在此的电源模块是以DCDC开关电源芯片“1CZ21H”为核心的一个单片开关电源电路,DC8VDC28V输入,3.3 V供电时可以提供1.5 A的电流,电路原理如图2所示。
图2电路原理图2.2串口通信模块[1]
该模块分别用到MD2/RXD(84管脚),MD1/TXD(85管脚),MD0/SCK(86管脚)3个管脚,并且
他们都属于功能复用管脚。当3个管脚作为MD0,MD1,MD2功能管脚时为模式选择控制管脚,复位时它们的状态决定了时钟电路的设置,对应关系可参考参考文献\[1\]。
系统正常运行以后时钟模式控制功能已经完成了,如果系统要用串口功能时就可以用 RXD(84管脚)、TXD(84管脚)进行全双工通信。现在问题是硬件怎么设计能同时满足这2种功能。在此提供2种方案:
方案1:串口芯片使用MAX3223芯片,这款芯片有功能使能管脚,如果芯片没有使能时芯片管脚处于高阻状态。提供的方案框图如图片3所示:当系统复位时让MAX3223处 于不使能状态,MAX3223的RXD、TXD引脚处于高阻状态,添加辅助电路就可以随心所欲的给SH7708单片机提供模式控制信号了。当系统运行起来时SH7708肯定会通过 Area0的片选信号CS0访问Area0区的ROM,所以CS0是否出现低脉冲可以作为系统是否已经运行的标志信号,将CS0信号送给模式控制辅助电路,一旦检测到CS0低脉冲就让模式控制辅助电路输出变为高阻状态,同时使能MAX3223芯片就可以了。模式控制图3中方案1模块用一个组合逻辑门和一个触发器就可以实现功能。
方案2: 采用CPLD将单片机和串口芯片隔开。这样就可以随心所欲地控制了,具体方案如图4:由于在系统中还用到了CPLD的其他资源,所以选择了这种方案。如果系统没有在其他功能中用到CPLD的话建议用方案1,因为方案1成本会低很多。
2.3存储器模块[1]
SH3单片机内部没有ROM空间,系统必须在外部总线上连接ROM存储器。SH3单片机总线采用地址总线与数据总线分离的设计模式,地址总线最大支持64 MB存储空间。满足这种总线模式的ROM都可以使用(SH3单片机内部没有NAND FLASH控制器,所以不要选择NAND FLASH存储器)。由于一条指令占16 b空间,所以选一片 8 MB 16位位宽的 FLASH存储器 LH28F640BFN。
SH3系列处理器内部嵌有8 KB CACHE,在不使用缓存功能时有 4 KB CACHE空间可以当作一般的RAM使用。由于本次只是讨论最小系统的建立,程序比较简单,4 KB空间足以。在后续介绍比较大的运用时会介绍系统连接的SDRAM存储器,在以后其他文章中讨论。
图3方案框图(一)图4方案框图(二)2.4MCU辅助电路[1]
(1) 复位电路:HD6417708S单片机需要最短为10 ms的低电平复位信号,如果你的系统中其他芯片也需要Reset信号时请综合考虑一下复位信号的长度与电平。本系统的复位电路采用了一款集复位与看门狗电路于一身的“1075”复位芯片。
(2) 时钟电路:HD6417708S单片机的时钟模块有2个管脚:EXTAL(79)和XTAL(80)。如果想用无源晶振的话将晶振连到EXTAL和XTAL之间,两管脚对地各接一个18 pF的电容就可以了。如果想用有缘晶振的话将晶振的时钟输出管脚接EXTAL管脚就行了。
(3) PLL模块辅助电路:HD6417708S单片机锁相环电路要求在管脚74,管脚77分别对地接一个470 pF的电容。
(4) 几个特殊管脚的处理管脚87为 Bus requst输入功能管脚,如果系统正常运行时给这个管脚加一个低电平信号,单片机会释放总线。如果您的系统有多个处理器需要共用总线时通过对这个管脚的合理控制可以实现总线分配,如果系统不用单片机释放总线时就可以给这个管脚加一个10 kΩ的上拉电阻,这个管脚一定不要悬空。
管脚89~管脚93为外部中断输入管脚。管脚89为管脚NMI(非屏蔽中断),为边沿触发中断。
管脚90~管脚93为可屏蔽中断管脚,为电平触发中断。这些管脚都不能悬空,如果没有用到要将这些管脚各加上10 kΩ的上拉电阻就可以了。
管脚94是一个PCMCIA总线控制的管脚如果没用到这种存储器的话就可以加上10 kΩ的上拉阻就行了,不会影响其他部分。
MD3(管脚103)、MD4(管脚104)、MD5(管脚130)是3个模式控制引脚。MD3,MD4控制着Area0的总线宽度,对应关系请参考参考文献\[1\]。
MD5复位时的状态告诉单片机总线上的存储器中数据(包括code和data)的存储方式,复位时MD5为零时说明存储器中的数据是按大端模式存放的,复位时存储器中的数据应选择小端模式。
wait(管脚132)是一个等待请求管脚,低电平有效。当处理器的访问速度超过外部设备的反应速度时可以将这个管脚置低让处理器进行等待。如果系统的外部设备足够快不用这个功能的话要加一个弱上拉电阻,绝对不能悬空或接地。自此,带监视串口的HD6417708S单片机最小系统硬件平台就搭建好了,编写相关软件就可以让系统运行起来。
3软件平台的搭建
SH3系列单片机的开发环境是由日本瑞萨公司专门提供的“Highperformance Embedded Workshop” [2]软件,有很多版本,在瑞萨公司的网站上可以下载,我下的是“shv9200_ev.exe”版本。
首先安装HD6417708S单片机的开发工具“Highperformance Embedded Workshop”软件,安装完成以后会在程序目录里出现一个“Renesas”安装程序,里面的“Highperformance Embedded Workshop”图标就是开发软件的图标。
建立模板工程。双击开发工具图标出现一个工程对话框,选择第一项“Create a new project workspace”,然后点击OK按钮进入 “NewProjectWorkspace对话框。在“Workspace Name”对话框里为项目命一个名字,例如“123”,系统会把“ProjectName”与“Directory”项的名字都默认为“123”,如果想指定工程的保存路径的话就点击“Browse”按钮选择想保存程序的地方,其他选项用默认选项就可以了,点击“确定”按钮进入下一个对话框。在“CPUSerise” 选择框里选择“SH3”选项,在“CPUType” 选择框里选择“SH7708”选项,然后点击“Next”按钮进入下一个对话框界面。将“Endian”选项设为“Little”模式,这个选项很重要,前面“MCU辅助电路”部分介绍的MD5管脚就是用来设置程序存储大小端模式的,如果MD5管脚设置的大小端与软件设置的不一样整个程序就乱了。因为硬件将MD5管脚设置成了小端模式的状态所以在此将“Endian”选项设为“Little”模式。其他选项用默认值就行了,然后点击“Next”按钮进到下一个对话框界面。在对话框的最下面的“Generate Hardware Setup Function”的下拉菜单中选择“C/C++ source file”选项, 然后连续点击“Next”按钮直到出现“Targets”选项界面,将“SH3 Simulator(Little endian)”选项选上,然后连续点击“Next”按 钮直到图标变灰,再点击“Finish”按钮就进入到工程的主界面了,模板工程就建立完成了。
模板工程相关文件介绍[1]。由于建立的是一个模板工程,工程建立好以后就带了一些文件包括启动代码、异常处理程序以及为软件开发人员提供的程序接口等等。现将几个关键文件功能按照程序执行顺序介绍如下:
首先在程序目录里点击“handle.src”文件,找到段标志“.sectionRSTHandler,code”,该段的程序代码就是单片机上电复位后首先执行的代码。然后点击“resetprg.c”文件,里面有一个“void PowerON_Reset(void)”函数,单片机执行完“handle.src”文件中的“.section RSTHandler,code”段的程序代码后跳到了该函数运行,如果想知道为什么跳到了这个函数请计算出“ .section RSTHandler,code”程序段中的“JMP”指令要跳转的地址以及“void PowerON_Reset(void)”所分配地址会发现两个地址对应同一个存储单元。在“void PowerON_Reset(void)”函数中调用的“set_vbr((void*)((_UINT)INTHandlerPRG INT_OFFSET))”函数,“_INITSCT()”和“_INIT_IOLIB()”都是系统库函数,在编译器手册中它们的功能都有介绍,在此不详细介绍。
点击“hwsetup.c”文件就可以看到“void PowerON_Reset(void)”函数中调用的HardwareSetup()函数的具体内容,本函数是用来初始化单片机总线及各个功能模块的。set_cr(SR_Init)函数是用来初始化状态寄存器的一个系统函数,与中断的设置关系较大,对于本系统意义不大,本着简化系统的原则将这个函数注掉。然后就到“main()”函数了,点击“123.c”文件发现“main()”函数是一个空函数,这是系统为程序员提供的接口,在这个函数里添加您的程序代码就行了。至此模板工程里的相关文件就介绍完了。系统上电,单片机运行完模板自带的初始化程序以后就跳到了“main()”函数,程序员只要在此函数中添加需要的功能代码就可以实现所需要的功能了。
串口监视程序的实为了验证系统真的运行起来了,硬件上增加了串口监视模块。
在此来实现下面这个简单功能:将串口波特率初始化为9 600 b/s,通过串口接收一个字节的数据并通过串口发送出去。通过这个简单的功能验证系统工作正常。程序流程图如图5所示。编译应用程序,最终生成摩托罗拉格式的机器码,将有用的数据解析出来烧到系统的ROM中系统就可以上电演示了。
图5串口监视程序流程图系统测试。将本系统与电脑通过串口线连接起来,电脑运行串口软件发送字节“0xaa”给系统板,电脑串口软件的接收区出现“aa”,如图6所示:通过现象可以说明系统正常运行了。自此,HD6417708S单片机最小系统从无到有就算建立成功了。本系统详细阐述了SH3系列单片机开发应用时可能出现问题的解决方法,并用串口实验验证了最小系统的正确性。此最小系统基本将SH3处理器与其他处理器的不同之处都展现出来了,在此基础上开发人员只要运用单片机开发的共性理论就可以很好地使用SH3单片机,大大缩短开发周期,降低开发难度。同时也为ARM一统天下的国内工程师提供了如图6上位机串口监视软件发送和接收的数据更新的选择方向。
图6上位机串口监视软件发送和接收4结语
本最小系统已经在工业产品中的到应用,实践证明,该最小系统运行稳定,能很好地完成产品指标。
参考文献
[1]Hitachi Ltd. SH7708 series hardware manual \[M\]. \[S.l.\]: Hitachi Ltd., 2000.
[2]瑞萨科技.SuperHTM RISC engine C/C++编译程序、汇编程序、优化连接编辑程序编译程序包V.9.01 用户手册\[M\].北京:瑞萨科技,2007.
[3]宋,高伟强,阎秋生.基于DSPTMS320C6713控制系统的最小系统板的设计\[J\].现代电子技术,2008,31(8):4143.
[4]李彬,王朝阳,卜涛,等.基于MSP430F149的最小系统设计\[J\].国外电子测量技术,2009,28(12):4143.
篇7
【关键词】51单片机 语音播放系统
1 各种语音播放系统的对比和分析
如表1所示。从表1不难看出,采用ST C12+FLASH存贮芯片的方案在无论在成本及灵活性方面都具备很好的优势。
2 STC12系列增强型51单片机播放系统的硬件构成
如图1。本系统的MCU采用了宏晶公司的STC125404芯片,它的P3.7具有PWM功能,因此连接到功放电路LM4890上。语音的存贮芯片采用了旺宏(MXIC)公司的MX25xxx08系列串行NOR Flash芯片,如果采用一片16Mbyte容量的芯片,存放8KHZ、8bit采样频率的语音文件(即8000字节/秒),按以下计算公式:
16*1024K/8K=2097(秒)
也就是可以播放时长大约为2097秒的语音文件。
语音数据是将音频wav文件的头信息去掉之后提取出来的,然后按应用的需要,分段烧录到Flash的固定位置,将语音的存放位置和长度记录下来,以供播放程序调用。
3 STC12系列增强型51单片机播放系统的软件构成
PWM产生声音的原理是:调节PWM的输出脉冲的占空比来产生不同幅度的电压,这个幅值就接近于语音的声波。如图2所示声音的波形图。
而PWM输出频率越高,产生的音波幅值就越精确。STC12系列增强型51单片机因为具有1T的机器周期,它的时钟频率是传统的12T 的51单片机的12倍,因此它的PWM输出频率最高(以11.0592M的晶振频率计算)可以达到11059200/256=43200HZ。这个频率已经接近44.1kHz 的CD音质了,因此用它来播放语音文件,声音效果也十分理想。
软件设计工具采用Keil C51,语音播放主要用到单片机的两个定时器。一个定时器用来产生8KHz的采样频率,本设计中采用T1定时器的8位定时器中断功能,定时125us;另一个定时器用来产生PWM波形,本设计中采用T0定时器8位定时/计数器功能。设置好这两个定时器的功能是程序开发的关键所在。
下面给出设置PWM寄存器的关键代码:
/*设置STC12单片机的PWM功能*/
void Pca_Initialize(void)
{
CMOD = 0x04; //Setup PCA timer
CL = 0x00;
CH = 0x00;
CCAP0L = 0x7F; //Set the initial value same as CCAP0H
CCAP0H = 0x7F;
CCAPM0 = 0x42; //0100,0010 Setup PCA module 0 in PMW mode
PCA_PWM0=0x00;
}
/*两个关键定时器的功能设置*/
void Soundinit()
{
Pca_Initialize();
AUXR =(AUXR|0xbf);
TR0=0;
TR1=0;
TMOD = 0x22;
TH1=0x8c;
TL1=0x8c; //1/8000hz=125us,就是125US一个采样点,以11.0592M的晶振计算
TH0=0xff; //TL0=0xff; 定时器0的溢出率是PWM的时钟源。
TR0 = 1;
TR1 = 1;
ET1 = 1;
CR = 1;
PT1=1;
PT0=0;
EA = 1;
}
/*每隔125us送一个新的采样数据给PWM的寄存器*/
void timer1() interrupt 3
{
CCAP0H =SoundData[jx];
CCAP0L =SoundData[jx];
}
4 总结
现在越来越多的消费电子产品中需要增加语音报话功能,利用STC12系统单片机的PWM功能,可以以极低成本实现上述功能,电路设计简单,语音更改灵活。并且这种语音播放技术可以很容易的推广到其它具有PWM功能的单片机或者ARM芯片上,具有很长久和广泛的应用前景,因此是一项值得学习推广的技术。
作者简介
姜燕频(1977-),女,上海市人。大学本科学历,中级工程师。主要研究方向为嵌入式开发,单片机C51、ARM开发、linux驱动开发、linux系统移植。
篇8
关键词: 边界层; MSP430F149单片机; DC/DC; 功耗
中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2013)06?0136?03
0 引 言
深海海底原位监测技术是一种对海底界面生物地球化学过程进行长期、原位、多参数同步测量的水下监测技术。该技术在海底水合物系统及其勘探试采过程中的环境效应监测评估等方面有重要的应用前景。
因系统在深海海底长期使用且更换电池不方便,故电源管理系统的主要功能是使其工作时电流消耗尽可能的小、不工作时电源可以被切断,以及采集模拟量。单片机在不断电的情况下,实现长期控制整个电源系统的功能。由于海底原位监测工作具有长期性的特点,要求系统具有较高的稳定性和较低的功耗。
1 电源管理系统结构和总设计方案
本电源系统以MSP430F149为主控制器件,是一款16位超低功耗的单片机,其CPU功耗可以通过开关状态寄存器的控制位来控制:正常运行时电流160 μA,备用时为0.1 μA,低功耗的优点为系统设计提供了有利条件;内部集成了8路12位具有高速、通用特点的ADC12模块,可在没有CPU干预的情况下进行16次独立采样并保存结果[1],系统中用到2路模拟通道来分别采集模拟量DO和PH;其所有的I/O端口的管脚都是双向的[2],设置I/O口可控制DC/DC模块,图1中C1~C6为单片机I/O口输出的DC/DC模块的Ctrl信号,即通过I/O口输出1或者0控制DC/DC模块的开启或关断。
2 电源管理系统软件设计
整个系统的管理主要分为3个阶段:甲板上设置参数阶段、设备投放阶段、数据采集阶段。甲板上设置参数阶段主要是对单片机进行对时、设置投放阶段睡眠的时间长度以及数据采集周期。设备投放阶段主要是控制上位机和深海设备处于断电状态并且单片机进入低功耗状态,等待先前设置的投放阶段睡眠的时间长度到了之后退出低功耗,给上位机供电,然后等待上位机的命令。数据采集阶段主要是周期性的给上位机供电,上位机给单片机命令给相应的深海设备供电或断电。系统的设计中涉及到功耗、时钟切换、RTC等,以下是各个部分的具体实现过程。
2.1 低功耗设计
系统的功耗可以由公式P=CV2f计算出来[3],式中C为负载电容,V为电源电压,f为系统工作频率,可见一个系统的功耗主要由电源电压决定,其次是工作频率、负载电容。因负载电容不可控制,要设计一个低功耗的系统,在不影响其性能的前提下,应该尽可能地降低电源电压和使用低频率的时钟。
电源电压方面,一方面MSP430F149具有1.8~3.6 V的低电源电压工作范围;另一方面,系统中使用的DC/DC模块为程序可控的,即只有在要求给相应的负载供电时,才会程序控制相应的DC/DC模块开启,否则其一直处于关断状态。从以上2个方面,降低了整个系统电源电压以降低整个系统的功耗。
另外,MSP430F149具有1种活动模式和5种低功耗模式(LPM0?LPM4)[4],通过程序控制可使单片机在指定的时刻通过定时器中断退出低功耗模式进入活动模式,其他时刻均处于LPM3模式下。因系统中用定时器B实现软时钟,定时器B的时钟源选择的是ACLK,LPM4模式下CPU及所有的时钟(包括ACLK)都停止工作,但是系统要求软时钟即使在低功耗的状态下可用且可中断唤醒CPU,故选择的是LPM3模式。
系统设计中有两路模拟量采集用到ADC模块,此模块仅在单片机接收到上位机发送来的采集这两路模拟量的时候才开启,采集完之后可通过程序控制把ADC模块关闭,在一定程度上这也可以降低系统功耗[5]。
2.2 时钟切换设计
由2.1知,从低功耗的角度出发,选择了较低的工作频率,但是系统中涉及到单片机控制步进电机。MCLK为32 768 Hz时,由此时钟延时产生的矩形脉冲的频率太低,导致步进电机不能转动,所以在系统中考虑到时钟的切换,即在调整步进电机时,要把单片机的主系统时钟(MCLK)从LFXT1切换到LFXT2。BCSCTL2|=SELM1+SELM0该语句实现的是选择MCLK的时钟源为LFXT1,即设置了BCSCTL2寄存器的高两位为1(默认为0)。当要把MCLK的时钟源选择为LFXT2时,如果寄存器BCSCTL2的各个位仍为默认值,则只需BCSCTL2|=SELM1语句便可成功的设置MCLK的时钟源为LFXT2[6],但是程序没能达到预期目标。分析发现寄存器BCSCTL2被设置过之后,被设置的相应位的默认值就发生了改变,在进行下一次设置之前要保证把上一次设置过的相应位恢复为默认值,然后再进行设置才能达到预期目标,意思就是说在语句BCSCTL2|=SELM1前面加上语句BCSCTL2&=0X3F即可成功的将MCLK的时钟源由LFXT1切换到LFXT2。
2.3 实时时钟RTC的设计
一方面,系统长期工作于深海海底,甲板上设置好参数后,从投放到回收期间,不会再有外部工作人员的干预,系统自动化的完成数据的采集工作,对电源管理系统提出了能够按点、按周期周期性给嵌入式系统和深海设备加电的要求;另一方面,深海海底原位监测的DO,PH,CO2,CH4等要在严格的准同步下测得,才具有研究的意义和价值。以上两方面要求电源管理系统要有RTC,能够接受上位机发送来的时间,并以此时间为基准开始计时。程序能记录上次数据采集的时刻,并计算出下次数据采集的时刻。每次数据采集完单片机关闭电源,进入LPM3模式,等待到下一个数据采集时刻从低功耗状态退出然后给上位机供电,然后等待上位机命令给哪些深海设备供电与断电。
2.4 系统的健壮性
系统从硬件和软件2个方面来保证系统运行的稳定性。
(2)核对工作状态:ARM板相对于单片机有3个阶段,且其信息断电不丢失,而单片机一旦出现意外断电,其信息将全部丢失,程序被重新初始化,就会出现单片机和ARM板的工作状态不一致。为了消除因两者工作状态不一致给整个系统带来的风险,程序中设置了接收上位机核对工作状态的命令,单片机一旦发现两者工作状态不一致,将修改自己的状态,以与ARM板保持同步。系统流程图如图3所示。
3 结 语
通过2次海试,结果表明系统可以稳定地实时给上位机供电,系统功耗低,程序结构灵活稳定,修改方便,能够满足深海原位监测的要求。
参考文献
[1] 谢兴红.MSP430单片机基础与实践[M].北京:北京航空航天大学出版社,2008.
[2] 秦龙.MSP430单片机常用模块与综合系统实例精讲[M].北京:电子工业出版社,2007.
[3] 胡淑军.嵌入式系统低功耗技术研究[EB/OL].[2007?07?23].中国科技论文在线,http://.
[4] 张晞,王德银,张晨.MSP430系列实用C语言程序设计[M].北京:人民邮电出版社,2005.
篇9
关键词:步进电机; 伺服系统; ARM; 闭环控制
中图分类号:TN820.334文献标识码:A文章编号:1004373X(2011)23012102
Design of Tracking Servo System of Stepper Motor
XI Xiaopeng, FENG Liqiang
(Satellite Application System Department, China Academy of Space Technology, Beijing 100086, China)
Abstract: As an excellent numerical component, stepper motor is easy to achieve numerical control. MCU has well digital interface. The control system composed of MCU and stepper motor is simple and costeffective. A kind of antenna servo system of stepper motor based on ARM control is introduced, which adopted AzimuthElevation type, based on stepper motor and used digital PID closedloop control. The servo system verifies that the design can meet the original requirement and has excellent precision and stability.
Keywords: stepper motor; servo system; ARM; closedloop control
收稿日期:201106210引言
步进电机是纯粹的数字控制电机。它将电脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一步。在额定功率范围内,电机的转速只取决于脉冲的频率和脉冲数,而不受负载变化的影响,因此非常适合于数字化控制,尤其是与数字设备配套使用时,体现了更大的优越性。现代单片机具有充足的I/O口、多路PWM通道和丰富的外部接口,使其特别适用于电机的控制。
本文以ARM单片机作为控制核心,以步进电机作为驱动元件,设计了一种基于ARM的步进电机伺服系统。该伺服系统用于近程无人机测控系统中,伺服系统驱动定向天线转动,完成天线对目标无人机的实时跟踪,保证测控链路的顺畅建立。
1步进电机及其驱动控制技术
步进电机是根据组合电磁铁理论设计的,电动机的设计是以精确的定位作为主要目标,堵转转矩大、定位精度高。步进电机可分为反应式、永磁式和混合式三种,混合式步进电机综合了反应式和永磁式两者的优点,因此被广泛使用。
步进电机的工作原理使之非常适合于单片机的控制。虽然步进电机是一种数字控制元件,易于与数字电路接口。但是,一般数字电路的信号能量不足以驱动步进电机。因此,必须有一个与之匹配的驱动电路来驱动步进电机。对步进电机的驱动电路有如下要求:
(1) 能够提供快速上升和快速下降的电流,使电流波形尽量接近矩形;
(2) 具有供截至期间释放电流的回路,以降低相绕组两端的反电势,加快电流衰减;
(3) 功耗低,效率高。
常用的步进电机驱动电路有单电压驱动、双电压驱动、高低压驱动、斩波恒流驱动和细分驱动等。以上驱动电路各有优缺点,其性能比较见表1。
另外,要使步进电机正常工作,必须按照该种电机的励磁状态转换表所规定的状态和顺序依次对各相绕组进行通电或断电控制。步进电机的驱动电路根据控制信号工作,在步进电机的单片机控制中,控制信号由单片机产生,其基本控制作用如下:
(1) 控制换相顺序。步进电机的通电换相顺序严格按照步进电机的工作方式进行。
(2) 控制步进电机的转向。如果按照给定的工作方式正序通电换相,步进电机就正转;如果按照反序通电换相,则电机就反转。
(3) 控制步进电机的速度。如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔时间越短,步进电机就转得越快。因此,脉冲的频率决定了步进电机的转速。调整单片机发出脉冲的频率,就可以对步进电机速度进行调整。
表1常用步进电机驱动电路性能比较
驱动电路启动频率运行频率运行平稳性效率成本单电压低低较差低低双电压低较高较差较高高高低压高较高差较高较高斩波恒流高高差高高细分高高好高高
2伺服系统设计方案
2.1总体结构
该伺服系统采用方位俯仰型结构,以方位转台为底座,上面安装俯仰传动机构,控制天线转动,完成天线对目标无人机的跟踪。方位可以在±540°范围之间运转,俯仰可以在-30°~+90°之间旋转。方位和俯仰分别以步进电机作为驱动元件,以光电编码器作为反馈元件,完成伺服系统的闭环控制。
另外,设计时为了完成方位±540°转动范围要求,专门设计了电缆缠绕装置,以解决方位转动过程中电缆的缠绕问题。
天线伺服系统总体结构如图1所示。
图1天线伺服系统总体结构图根据图1总体结构和系统布局,分别对方位和俯仰传动力矩进行了计算。在此选用MOTEC公司SM242系列两相混合式步进电机作为驱动元件,并选用谐波齿轮减速机完成速度和力矩的转换,谐波齿轮减速机减速比为65。同时,采用瑞普公司JSP3806系列光电编码器作为位置检测元件实现位置反馈。伺服系统原理框图如图2所示。
2.2伺服系统硬件设计
对于伺服控制系统而言,目前常用的硬件方案有以DSP组成的伺服控制器和以MCU组成的伺服控制器。以DSP组成的伺服控制器具有控制精度高、响应速度快等优点,但其成本较高,不适用于低成本场合;而以MCU为控制器构成的系统具有结构简单、适应性强、成本低等优点被广泛使用。该系统以ARM单片机为核心构成伺服控制器,伺服控制器硬件原理框图如图3所示。
图2天线伺服系统原理框图图3伺服控制器原理框图由图3可以看出,伺服控制器是伺服系统的控制中心,步进电机控制信号的产生、光电编码器角度信息的采集、位置信息的比较运算等都在伺服控制单元内完成。该系统伺服控制单元采用PHILIPS公司的LPC2294单片机扩展而成,完成伺服系统的各种运算与控制。
2.3伺服控制软件设计
针对该系统的特点,伺服控制软件主要完成以下功能:
(1) 接收监控计算机的控制指令,并分解指令完成伺服系统的控制;
(2) 产生符合频率要求的步进脉冲和转向脉冲,实现方位和俯仰电机的控制;
(3) 实时采集光电编码器角度信息,完成位置控制;
(4)实时将天线的指向位置、伺服系统的工作状态等信息上报给飞控计算机;
(5) 分别进行方位与俯仰的限位检测,并进行软件限位,防止设备破坏;
(6) 完成无人机测控系统所要求的数字引导、自跟踪等其他功能。
根据上述主要功能,将控制软件划分为相应的功能
模块,采用C语言编写控制程序,完成伺服控制软件的设计。
另外,对于步进电机控制来说,一般应用较多的是采用PID或PI控制算法。针对该系统的特点,由于天线的运行速度较低,为了充分利用单片机有限的资源,提高运算效率,采用简单易行的数字PID算法进行电机的控制。
3结语
本文以某无人机测控系统地面跟踪伺服设备的研制为背景,从工程实际出发,设计了一种基于ARM的步进电机天线伺服系统。目前,该伺服系统已完成工程样机的研制,并进行了相关试验。试验结果表明,该伺服系统满足最初的设计要求,具有一定的工程实际意义,可以用于无人机和其他测控系统中天线的驱动与跟踪。
参考文献
[1]王晓明.电动机的单片机控制[M].北京:北京航空航天大学出版社,2007.
[2]潘健,刘梦薇.步进电机控制策略研究[J].现代电子技术,2009,32(15):143145.
[3]王雁平.步进电机定位控制系统的设计[J].现代电子技术,2010,33(18):205207.
[4]高钟毓.机电控制工程[M].北京:清华大学出版社,2002.
[5]刘佐兴,郭华民,程显海.一种高精度天线伺服系统[J].微计算机信息,2009,25(7):6466.
[6]杜永龙,黄惠东,康兴国,等.改善步进电机低频特性的续流回路方法[J].探测与控制学报,2009(5):6063.
[7]李自成,程善美.基于DSP交流伺服系统与CAN总线的通信设计\[J\].现代电子技术,2009,32(1):145147.
篇10
关键词:温湿度;STM32;USB;传感器;Si7005;CP2102
引言
随着物联网的发展,传感器技术应用领域越来越广泛。传感器技术已成为衡量一个国家科学技术发展水平的重要标志之一。为了提高对温湿度传感器的深入研究,基于物联网技术设计了本装置。
1 系统原理及组成框图
本装置主要由USB接口转换器、STM32F103单片机、Si7005温湿度传感器几部分组成。它的USB接口可以方便地和上位机或其他物联网系统相连接组成物联网的组件。如图1所示。
2 单片机的选型和电路设计
单片机是本装置的核心部件,一方面它要和温湿度传感器进行通信,获取实时的温湿度数据,另一方面它还要通过串口和CP2102进行通信,将数据传输到上位机或物联网系统。我们选用的STM32F103单片机是一款专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex-M3内核单片机,具有性能高、外设丰富、超强抗干扰等优点,是目前同类技术中性价比较高的产品。其电路设计如图2。
3 USB接口电路设计
USB接口芯片我们选用CP2102,其集成度高,内置USB2.0全速功能控制器、USB收发器、晶体振荡器、EEPROM及异步串行数据总线(UART),支持调制解调器全功能信号,无需任何外部的USB器件。内含时钟电路,无需外接电路器,内含上电复位电路,片内电压调节可输出3.3V电压。其电路设计如图3。
4 温湿度传感器及其电路设计
温湿度传感器我们采用美国SILABS的Si7005,它是一个将湿度和温度传感器元件、一个模拟-数字转换器和信号处理功能集成到单片集成的CMOS传感器IC。温度传感器和湿度传感器都经过工厂校准并且校准数据存储在片上非易失性存储器中。精度高、性能稳定、采用I2C通信接口,宽工作电压范围(2.1-3.6V)。其电路设计如图4。
5 软件设计
本装置只要接入USB端口,安装好驱动,就可以通过USB接口将测量的数据进行上传。程序的整体流程图如图5所示。
6 结束语
文章在对温湿度技术进行深入研究的基础上,全面比较国内外同类产品的技术特点,合理地确定系统的设计方案。它可以方便的接入到物联网中,具有广阔的市场空间与发展前景。在文章研制的温湿度测量装置的基础上,可以再做适当的功能扩展,使其功能更加完善,如历史温湿度记录,温湿度报警等。
参考文献
[1]周航慈,吴文广.基于嵌入式实时操作系统的程序[M].航空航天大学出版社.
[2]彭军.传感器与检测技术[M].西安电子科技大学出版社,2003: 263-315.
- 上一篇:单片机应用
- 下一篇:单片机原理与接口技术