1、arm1138引言嵌入式微控制器又称单片机。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM、PEPROM、RAM、总线、总线逻辑、定时P计数器、WatchDog、IPO、串行口、脉宽调制输出、APD、DPA、Flash RAM、E2PROM 等各种必要功能和外设。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应用需求相匹配,功能不多不少,从而减少功耗和成本,其应用已深入到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、加速自动
2、化化进程、提高生产率等方面起到了极其重要的推动作用。ARM是近年来发展非常迅速的处理器,有很好的应用前景。将其应用于直流电机的调速控制,有极大的使用价值。以脉宽调制技术为代表的电机数字驱动技术也在迅猛发展,将计算机应用于这一领域正好可以发挥其在数字控制方面的优势。嵌入系统发展历史及现状当今世界,以计算机技术、芯片技术和软件技术为核心的数字化技术取得了迅猛发展,不仅广泛渗透到社会、经济、军事、交通、通信等相关行业,而且深入到家电、娱乐、艺术、社会文化等各个领域,掀起了一场数字化技术革命。现代控制技术、多媒体技术与Internet的应用与普及,促使消费电子、计算机、通信(3C)一体化趋势步伐加快,
3、嵌入式技术再度成为一个研究热点。嵌入系统是以应用为中心,软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是集软硬件于一体的可独立工作的器件。综观嵌入式技术的发展,大致经历了以下3个阶段:第1阶段是嵌入技术的早期阶段,以功能简单的专用计算机或单片机为核心的可编程控制器形式存在,具有监测、伺服、设备指示等功能。第2阶段是以嵌入式CPU和嵌入式操作系统为标志的嵌入式系统。第3阶段是以芯片技术和Internet技术为标志的嵌入式系统。微电子技术发展迅速,SOC(片上系统)使嵌入
4、系统越来越小,功能却越来越强。嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:工业控制,交通管理,信息家电,家庭智能管理系统,POS网络及电子商务,环境工程与自然,机器人等。一 EasyARM1138实验板介绍: EasyARM1138的核心MCU是Luminary Micro公司的Stellaris(群星)系列ARM之LM3S1138。该芯片采用的是国际上最优秀的MCU内核设计公司ARM最新推出的先进Cortex-M3处理器;国内最大、技术最强的晶圆制造公司台积电(TSMC)代工;世界上最专业的封装测试公司(OSE、i2a/IPAC)层层把关,确保产品的可靠性。Stellaris(
5、群星)系列ARM芯片在电磁兼容性方面的优势明显。强大的MCU内核32位ARM Cortex-M3内核(ARM v7M架构);兼容Thumb的Thumb-2指令集,提高代码密度25%以上;50MHz运行频率,1.25 DMIPS/MHz,加快35%以上;单周期乘法指令,212周期硬件除法指令;快速可嵌套中断,612个时钟周期;具有MPU保护设定访问规则;64KB单周期Flash, 16KB单周期SRAM;内置可编程的LDO输出2.25V2.75V,步进50mV,为硬件系统节省一个电源稳压器;支持非对齐数据的访问,有效地压缩数据到内存;支持位操作,最大限度使用内存,并提供创新的外设控制;内置系统节
6、拍定时器(SysTick),方便操作系统移植。 丰富的外设资源7组GPIO,具有多种工作模式:高阻抗输入、2/4/8mA推挽输出、开漏输出、弱上拉/弱下拉输出,等等;4个32位Timer,每个Timer都可拆分为2个独立的16位子定时器,具有定时、捕获、PWM、RTC等丰富功能;3路全双工UART,位速率高达3.125Mbps,16单元接收FIFO和发送FIFO,支持串行红外协议(IrDA SIR);2路I2C,支持100kbps标准模式、400kbps快速模式;2路SSI,兼容Freescale SPI、MICROWIRE、Texas Instruments串行通信协议,位速率高达25Mbp
7、s;6路16位PWM,通过CCP管脚输出,能产生速度高达25MHz的方波;3个模拟比较器8通道10位ADC,采样速率可达1M/s;内置看门狗定时器(WatchDog Timer),确保芯片可靠运行。内嵌USB接口的下载仿真器仅需插入一根USB电缆就能实现“三合一”功能:5V供电、程序下载与在线仿真、UART串行通信;不再要求电脑具有串口或并口,无论台式机还是笔记本电脑,只要拥有USB 1.1或USB 2.0接口就能运用自如;除了能够下载仿真自身以外,开发板保留的JTAG接口还可以用来仿真其它LM3S系列开发板,适用于所有Stellaris系列ARM芯片;USB接口提供虚拟UART的功能,不需要
8、额外的接口电路(如SP3232)。简明的外围电路设计,调试时无需任何连线和跳线,操作极为方便5只LED指示灯;3只KEY;1只交流蜂鸣器,可演奏动听乐曲,如梁祝;两排插针引出全部GPIO资源,以及ADC0ADC7、5V、3.3V、GND等; GPIO插针间距正好为2000mil(50.8mm),很容易插接在万用板或其它自制的电路板上,为教学实验提供了极大方便。ARM1138实验板实物图如下图:ARM1138实验板原理图:二 实验内容:1.电机调速 实验原理:系统将ARM1138微控制器产生的两个PWM脉冲通过L298电机驱动驱动芯片驱动两个直流电机电机。通过4个按键,实现电机的正转、反转、加速
9、、减速等功能。通过光电传感器ST150S实现电机速度的测试,并采用LCD1602显示屏即时显示控制电机的转动速度的信息。通过软件与硬件相结合的控制方法,实现了运用ARM1138对电机的速度和转向控制,能够较准确的测出电机速度,变速范围较广。系统软件编写遵循模块化设计的原则,代码具有良好的易维护性和可移植性。本系统操作方便,可靠性高,其设计精度可以满足一般工业控制的要求,能够应用到实际的生产生活中,能满足现代化生产的需要,实现了对电机的良好控制. 部分主要程序如下所示:short count; / 转速计数器unsigned long TheSysClock = 12000000UL;short
10、 i=1;short sheding = 230; /设定转速 (500ms)/ 防止JTAG失效/ 系统初始化void SystemInit(void) SysCtlLDOSet(SYSCTL_LDO_2_50V); / 设置LDO输出电压 SysCtlClockSet(SYSCTL_USE_OSC | / 系统时钟设置,采用主振荡器 SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ | SYSCTL_SYSDIV_1); TheSysClock = SysCtlClockGet(); / 获取当前的系统时钟频率 timer0Init(); compInit(); PWM
11、Init(); int main(void) char s110; char s210; short chasu; /转速差 short match=12000; /匹配值 JTAG_Wait(); / 防止JTAG失效,重要! SystemInit(); / 系统初始化 while(1) if(i=1) chasu = sheding - count; match = match + chasu*10; sprintf(s1 , %ld ,count ); sprintf(s2 , %ld ,count*120/9 ); /UART_Puts(s1); /UART_Puts( 电机转速为:)
12、; /UART_Puts(s2); /UART_Puts(转/分rn); if(match 19000) match=19000; if(match 5000) match=5000; TimerControlLevel(TIMER1_BASE , TIMER_A , true); /* 控制PWM输出反相 */ TimerLoadSet(TIMER1_BASE , TIMER_A , 20000); /* 设置定时器初值 300Hz */ TimerMatchSet(TIMER1_BASE , TIMER_A , match); /* 设置TimerA的PWM匹配值 */ TimerEnab
13、le(TIMER1_BASE , TIMER_A ); /* 使能定时器计数,PWM开始输出 count=0; i=0; 分析: 当转动片转动时,会影响其后面安装的光敏电阻的光照。调速器就是利用光敏电阻对光的感应,改变电阻阻值,从而改变输出电流和电压。它用改变矩形脉冲的脉宽来补偿转速的变化引起的电流电压变化。转速减小,脉宽变宽,转速增大,脉宽变窄。同时,转动片转动引起的光照一明一暗,对光敏电阻影响,输出的波形可以起到计数的作用。2.液晶显示实验(一) 实验目的:通过实验了解和掌握和了解基本的黑白液晶显示器显示原理,并利用其显示所要得到实验目的,并掌握4*4键盘工作的简单原理。(二) 实验板介绍
14、(器件)1. 4 *4的按键矩阵模块。2. 黑白液晶显示器模块。(三) 实验原理:1.矩阵式键盘的结构与工作原理; 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 2.显示原理:LCD液晶显示器的真实解析度定义为“定点形式”,所以我们在使用LCD显
15、示器时,这样画面所呈现的影像将会越清晰,使用起来感觉也会越好。(四) 实验内容搭建好电路之后,在IAR环境下进行程序的调试并在显示屏上点阵显示出目的的结果。部分的程序段如下:/ 定义全局的系统时钟变量unsigned long TheSysClock = 12000000UL;/ 系统初始化void SystemInit(void) SysCtlLDOSet(SYSCTL_LDO_2_50V); / 设置LDO输出电压 SysCtlClockSet(SYSCTL_USE_OSC | / 系统时钟设置,采用主振荡器 SYSCTL_OSC_MAIN SYSCTL_XTAL_6MHZ SYSCTL_
16、SYSDIV_1);/* SysCtlLDOSet(SYSCTL_LDO_2_75V); / 配置PLL前将LDO电压设置为2.75V SysCtlClockSet(SYSCTL_USE_PLL / 系统时钟设置,采用PLL SYSCTL_OSC_MAIN / 主振荡器 SYSCTL_XTAL_6MHZ / 外接6MHz晶振SYSCTL_SYSDIV_10); / 分频结果为20MHz*/ TheSysClock = SysCtlClockGet(); / 获取系统时钟,单位:Hz LCD_Init(); / 初始化LED1和LED2 unsigned char s1=段明伟西安邮电学院;un
17、signed char *p1=s1;unsigned char s2=段明伟科技零七零一;unsigned char *p2=s2;unsigned char s3=段明伟科技零七零一;unsigned char *p3=s3;unsigned char s4=段明伟序号29号;unsigned char *p4=s4; 部分程序忽略,主要自主编程如下: / 系统初始化SystemInit(); for(ap=0;ap5;ap+) Delay(200*(TheSysClock/4000); /LCMDisplayPicture_1( ); for (i=0;i16;i+=8) WRCM(0X
18、88+i); HANZI(s5); Delay(200*(TheSysClock/4000); LCMDisplayPicture_2( ); SystemInit();for(ap=0;ap 1, 0x02, 1, cBuf, 3; tI2CM_DEVICE fen = 0xa2 1, 0x03, 1, fenwrite, 1; tI2CM_DEVICE shi = 0xa2 1, 0x04, 1, shiwrite, 1; jtagWait(); / 防止JTAG失效,重要! clockInit(); / 时钟初始化:晶振,6MHz uartInit(); / UART初始化 I2CM_I
19、nit(); / I2C主机初始化 I2CM_DataSend(&fen); I2CM_DataSend(&shi); for (;) ulStatus = I2CM_DataRecv(&LM75A); LM75A_TmpDisp(cBuf); / 显示时间 Delay1(500000L); Delay1(500000L); Delay1(500000L); Delay1(500); for (;) 分析:我们在程序中设置好初始开始时间06:06,通过LM75芯片读取秒的变化,而小时和分钟的变化是通过移位实现的。然后利用URAT通信来读取发送过来的时间,设置超级终端收端口为COM6,波特率为9
20、600。 在程序中一定要做的是要防止JTAG失效和进行系统初始化。/ 显示温度值void TemperatureDisplay(unsigned long ulData) unsigned long ulTmp = 0; char s120; char s220;ulTmp = (2700 - ulData) * 75 - 55000;sprintf(s1 , %ld. , ulTmp / 1000); sprintf(s2 , %ld , ulTmp % 1000); switch ( strlen(s2) ) case 1: strcat(s1 , 00); break; case 2:
21、strcat(s1 , 0); break; default: break; UART_Puts(s1); UART_Puts(s2); UART_Puts(rn);分析:10位的ADC模块集成有一个温度传感器,可以用来获取芯片的当前温度。Vsenso = 2.7 - (T + 55) / 75,单位:V。设Vsenso对应的ADC采样值为N,2.7V对应N1,(T+55)/75对应N2已知: N1 * (3 / 1024) = 2.7 N2 * (3 / 1024) = (T + 55) / 75由此得到: N = N1 - N2 = 2.7 / (3 / 1024) - (T + 55)/
22、75) / (3 / 1024)解得: T = (151040 - 225 * N) / 1024结论: ADC配置为温度传感器模式后,只要得到ADC采样值N,就能推算出当前的温度T。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。在此实验中我们主要了解和搭建室内温度的采集及A/D转换。在实验板的搭建过程中用到了Easy arm 138和的A/D转换模块,其可以完成温度信号的采集。分析:ADC模块是由4个定时器,1个中断控制器,4个采样序列发生器、一个FIFO块,一个硬件平均电路,一个模数转换器构成。ADC模块按照电路图进行,就可以将芯片的温度提
23、取出来,通过公式转换显示在超级终端上。内部温度传感器的公式为:(五)、实习小结及心得:在实验的过程中,我们熟悉了常见的模数转换器的原理及实际的工作参数,尤其是TMP123的集成电路设计的内部构造,这对数电知识和模电知识的运用有着密切的联系,这不仅仅让我们巩固了模电数电的基础知识,并且对他的一些应用有了更深的理解。我们还了解了其外围电路的连接的机理,尤其是在和单片机的连接上,TMP123既可以检测温度,也可 单片机实现温度控制功能,适用于远程温度检测、微机或电子设备 温度监视器及工业过程控制等领域。而且,在实验过程中,我们要用到的1138有关模块及相关的拐角功能,所以我们首先要非常熟悉1138各
24、个模块和拐角的作用,其次按实际的电路的原理图进行电路的连接,将已经调试好的程序下载致IAR软件中同时并打开电脑的超级终端,然后运行此时我们可以在超级终端观测到实时的室内温度,这样才能够得到正确的的实验结果。通过温度传感器这个实验,我们可以设定时间的初始值,在超级终端接收显示时间,时间连续变化。第二个实验可以测定器件的温度,并将华氏温度转换成摄氏温度,Vsenso = 2.7 - (T + 55) / 75,通过测定芯片的Vsenso值就可以算出芯片的实际摄氏温度。我们了解了这个实验的基本原理,也对温度传感有了更深刻的认识。三 实验分析与小结(1)电机调速,通过本次设计,加强了对ARM1138应
25、用知识的掌握,同时对使用ARM1138实现自动化控制的设计过程有了全面地了解。通过学习控制系统工作原理以及如何利用ARM1138制双直流电机了。(2)通过液晶显示这个实验,基本了解了矩阵键盘的构造,点阵构造了汉字显示,就通过每个点的亮灭就可以在液晶显示屏上显示出构造的汉字。(3)通过温度传感器这个实验,我们可以设定时间的初始值,在超级终端接收显示时间,时间连续变化。第二个实验可以测定器件的温度,并将华氏温度转换成摄氏温度,Vsenso = 2.7 - (T + 55) / 75,通过测定芯片的Vsenso值就可以算出芯片的实际摄氏温度。我们了解了这个实验的基本原理,对温度传感有了更深刻认识。实验不仅涉及到了温度采集(真实的信号转化为数字的信号),还涉
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1