arm1138.docx
《arm1138.docx》由会员分享,可在线阅读,更多相关《arm1138.docx(14页珍藏版)》请在冰豆网上搜索。
arm1138
引言
嵌入式微控制器又称单片机。
嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM、PEPROM、RAM、总线、总线逻辑、定时P计数器、WatchDog、IPO、串行口、脉宽调制输出、APD、DPA、FlashRAM、E2PROM等各种必要功能和外设。
为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。
这样可以使单片机最大限度地和应用需求相匹配,功能不多不少,从而减少功耗和成本,其应用已深入到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、加速自动化化进程、提高生产率等方面起到了极其重要的推动作用。
ARM是近年来发展非常迅速的处理器,有很好的应用前景。
将其应用于直流电机的调速控制,有极大的使用价值。
以脉宽调制技术为代表的电机数字驱动技术也在迅猛发展,将计算机应用于这一领域正好可以发挥其在数字控制方面的优势。
嵌入系统发展历史及现状当今世界,以计算机技术、芯片技术和软件技术为核心的数字化技术取得了迅猛发展,不仅广泛渗透到社会、经济、军事、交通、通信等相关行业,而且深入到家电、娱乐、艺术、社会文化等各个领域,掀起了一场数字化技术革命。
现代控制技术、多媒体技术与Internet的应用与普及,促使消费电子、计算机、通信(3C)一体化趋势步伐加快,嵌入式技术再度成为一个研究热点。
嵌入系统是以应用为中心,软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。
嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是集软硬件于一体的可独立工作的"器件"。
综观嵌入式技术的发展,大致经历了以下3个阶段:
第1阶段是嵌入技术的早期阶段,以功能简单的专用计算机或单片机为核心的可编程控制器形式存在,具有监测、伺服、设备指示等功能。
第2阶段是以嵌入式CPU和嵌入式操作系统为标志的嵌入式系统。
第3阶段是以芯片技术和Internet技术为标志的嵌入式系统。
微电子技术发展迅速,SOC(片上系统)使嵌入系统越来越小,功能却越来越强。
嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:
工业控制,交通管理,信息家电,家庭智能管理系统,POS网络及电子商务,环境工程与自然,机器人等。
一EasyARM1138实验板介绍:
EasyARM1138的核心MCU是LuminaryMicro公司的Stellaris(群星)系列ARM之LM3S1138。
该芯片采用的是国际上最优秀的MCU内核设计公司ARM最新推出的先进Cortex-M3处理器;国内最大、技术最强的晶圆制造公司台积电(TSMC)代工;世界上最专业的封装测试公司(OSE、i2a/IPAC)层层把关,确保产品的可靠性。
Stellaris(群星)系列ARM芯片在电磁兼容性方面的优势明显。
⒈强大的MCU内核
32位ARMCortex-M3内核(ARMv7M架构);
兼容Thumb的Thumb-2指令集,提高代码密度25%以上;
50MHz运行频率,1.25DMIPS/MHz,加快35%以上;
单周期乘法指令,2~12周期硬件除法指令;
快速可嵌套中断,6~12个时钟周期;
具有MPU保护设定访问规则;
64KB单周期Flash,16KB单周期SRAM;
内置可编程的LDO输出2.25V~2.75V,步进50mV,为硬件系统节省一个电源稳压器;
支持非对齐数据的访问,有效地压缩数据到内存;
支持位操作,最大限度使用内存,并提供创新的外设控制;
内置系统节拍定时器(SysTick),方便操作系统移植。
⒉丰富的外设资源
7组GPIO,具有多种工作模式:
高阻抗输入、2/4/8mA推挽输出、开漏输出、弱上拉/弱下拉输出,等等;
4个32位Timer,每个Timer都可拆分为2个独立的16位子定时器,具有定时、捕获、PWM、RTC等丰富功能;
3路全双工UART,位速率高达3.125Mbps,16单元接收FIFO和发送FIFO,支持串行红外协议(IrDASIR);
2路I2C,支持100kbps标准模式、400kbps快速模式;
2路SSI,兼容FreescaleSPI、MICROWIRE、TexasInstruments串行通信协议,位速率高达25Mbps;
6路16位PWM,通过CCP管脚输出,能产生速度高达25MHz的方波;
3个模拟比较器
8通道10位ADC,采样速率可达1M/s;
内置看门狗定时器(WatchDogTimer),确保芯片可靠运行。
内嵌USB接口的下载仿真器
仅需插入一根USB电缆就能实现“三合一”功能:
5V供电、程序下载与在线仿真、UART串行通信;
不再要求电脑具有串口或并口,无论台式机还是笔记本电脑,只要拥有USB1.1或USB2.0接口就能运用自如;
除了能够下载仿真自身以外,开发板保留的JTAG接口还可以用来仿真其它LM3S系列开发板,适用于所有Stellaris系列ARM芯片;
USB接口提供虚拟UART的功能,不需要额外的接口电路(如SP3232)。
简明的外围电路设计,调试时无需任何连线和跳线,操作极为方便
5只LED指示灯;3只KEY;1只交流蜂鸣器,可演奏动听乐曲,如《梁祝》;
两排插针引出全部GPIO资源,以及ADC0~ADC7、5V、3.3V、GND等;
GPIO插针间距正好为2000mil(50.8mm),很容易插接在万用板或其它自制的电路板上,为教学实验提供了极大方便。
ARM1138实验板实物图如下图:
ARM1138实验板原理图:
二实验内容:
1.电机调速
实验原理:
系统将ARM1138微控制器产生的两个PWM脉冲通过L298电机驱动驱动芯片驱动两个直流电机电机。
通过4个按键,实现电机的正转、反转、加速、减速等功能。
通过光电传感器ST150S实现电机速度的测试,并采用LCD1602显示屏即时显示控制电机的转动速度的信息。
通过软件与硬件相结合的控制方法,实现了运用ARM1138对电机的速度和转向控制,能够较准确的测出电机速度,变速范围较广。
系统软件编写遵循模块化设计的原则,代码具有良好的易维护性和可移植性。
本系统操作方便,可靠性高,其设计精度可以满足一般工业控制的要求,能够应用到实际的生产生活中,能满足现代化生产的需要,实现了对电机的良好控制.
部分主要程序如下所示:
shortcount;//转速计数器
unsignedlongTheSysClock=12000000UL;
shorti=1;
shortsheding=230;//设定转速(500ms)
//防止JTAG失效
//系统初始化
voidSystemInit(void)
{
SysCtlLDOSet(SYSCTL_LDO_2_50V);//设置LDO输出电压
SysCtlClockSet(SYSCTL_USE_OSC|//系统时钟设置,采用主振荡器
SYSCTL_OSC_MAIN|
SYSCTL_XTAL_6MHZ|
SYSCTL_SYSDIV_1);
TheSysClock=SysCtlClockGet();//获取当前的系统时钟频率
timer0Init();
compInit();
PWMInit();
}
intmain(void)
{
chars1[10];
chars2[10];
shortchasu;//转速差
shortmatch=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("电机转速为:
");
//UART_Puts(s2);
//UART_Puts("转/分\r\n");
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匹配值*/
TimerEnable(TIMER1_BASE,TIMER_A);/*使能定时器计数,PWM开始输出
count=0;
i=0;
}
}
}
分析:
当转动片转动时,会影响其后面安装的光敏电阻的光照。
调速器就是利用光敏电阻对光的感应,改变电阻阻值,从而改变输出电流和电压。
它用改变矩形脉冲的脉宽来补偿转速的变化引起的电流电压变化。
转速减小,脉宽变宽,转速增大,脉宽变窄。
同时,转动片转动引起的光照一明一暗,对光敏电阻影响,输出的波形可以起到计数的作用。
2.液晶显示实验
(一)实验目的:
通过实验了解和掌握和了解基本的黑白液晶显示器显示原理,并利用其显示所要得到实验目的,并掌握4*4键盘工作的简单原理。
(二)实验板介绍(器件)
1.4*4的按键矩阵模块。
2.黑白液晶显示器模块。
(三)实验原理:
1.矩阵式键盘的结构与工作原理;在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
2.显示原理:
LCD液晶显示器的真实解析度定义为“定点形式”,所以我们在使用LCD显示器时,这样画面所呈现的影像将会越清晰,使用起来感觉也会越好。
(四)实验内容
搭建好电路之后,在IAR环境下进行程序的调试并在显示屏上点阵显示出目的的结果。
部分的程序段如下:
//定义全局的系统时钟变量
unsignedlongTheSysClock=12000000UL;
//系统初始化
voidSystemInit(void)
{
SysCtlLDOSet(SYSCTL_LDO_2_50V);//设置LDO输出电压
SysCtlClockSet(SYSCTL_USE_OSC|//系统时钟设置,采用主振荡器
SYSCTL_OSC_MAIN
SYSCTL_XTAL_6MHZ
SYSCTL_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
}
unsignedchars1[]={"段明伟西安邮电学院"};
unsignedchar*p1=s1;
unsignedchars2[]={"段明伟科技零七零一"};
unsignedchar*p2=s2;
unsignedchars3[]={"段明伟科技零七零一"};
unsignedchar*p3=s3;
unsignedchars4[]={"段明伟序号29号"};
unsignedchar*p4=s4;
部分程序忽略,主要自主编程如下:
//系统初始化
SystemInit();
for(ap=0;ap<5;ap++)
{Delay(200*(TheSysClock/4000));
//LCMDisplayPicture_1();
for(i=0;i<16;i+=8)
{
WRCM(0X88+i);
HANZI(s5);
}
Delay(200*(TheSysClock/4000));
LCMDisplayPicture_2();
}
SystemInit();
for(ap=0;ap<5;ap++)
{
LCMDisplayPicture();
Delay(200*(TheSysClock/4000));
LCMDisplayPicture_2();
Delay(200*(TheSysClock/4000));
}}
}
以下是自己编得一个小实验:
TheSysClock=SysCtlClockGet();//获取系统时钟,单位:
Hz
LCD_Init();//初始化LED1和LED2
}
unsignedchars1[]={"段明伟西安邮电学院"};
unsignedchar*p1=s1;
unsignedchars2[]={"段明伟光信息科学与技术"};
unsignedchar*p2=s2;
unsignedchars3[]={"段明伟科技零七零一"};
unsignedchar*p3=s3;
unsignedchars4[]={"段明伟学号二十九号"};
(五)实验分析及心得:
首先通过本实验了解并掌握了简单的液晶显示器的显示原理及构造,利用他显示了简单的实验结果。
这次实验还了解了4*4矩阵键盘的基本构造及电路的实现原理。
其次通过液晶显示这个实验,基本了解了矩阵键盘的构造,点阵构造了汉字显示,就通过每个点的亮灭就可以在液晶显示屏上显示出构造的汉字液晶显示屏是用点阵来表示的,每个汉字是用点阵来表示,用二进制的0或1表示那个点的亮灭,修改点阵就可以显示不同的字,液晶显示是按行从左到右的打,逐行打印。
3.温度采集,A/D转换
(一)实验目的:
1、熟悉EDP试验箱并了解模数转换原理以及程序各个模块的功能。
2、熟悉单片机的原理及应用,了解C51和ARM。
3、设计温度采集和一个多通道的A/D模数转换电路及其外围电路。
4、了解UV3的各种功能和应用以及个人的实际操作能力。
5、利用所学的C语言知识进行编程并熟悉KeilC51编译器和程序下载调试软件。
(二)实验板介绍:
在实验板的搭建过程中用到了Easyarm138和的A/D转换模块,其可以完成温度信号的采集及处理TMP123的功能主要是将被测温度模拟量转换成数字量,把数字化信号编码成时间比率(t1/t2)形式。
T1和t2时间上是连续,用同一个时钟即可获二者比率。
温度仅与时间比率有关,而与时钟频率无关,时钟频率发生波动,也会解码过程中被数字滤波器滤掉。
TMP123既可以检测温度,也可单片机实现温度控制功能,适用于远程温度检测、微机或电子设备温度监视器及工业过程控制等领域。
(三)实验原理:
1.模数转换原理:
A/D模数转换原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。
其优点是用简单电路就能获得高分辨率,但缺点是由于转换精度依赖于积分时间,因此转换速率极低。
2.通过TMP123将采集到的模拟温度连续信号进行模拟信号的采集并进行处理,通过与138板进行连接数据的传送通过USB与电脑进行连接,通过超级终端我们可以观测到室内温度的变换情况,与温度计算有关的计算公式实现如下:
10位的ADC模块集成有一个温度传感器,可以用来获取芯片的当前温度。
在温度传感器特性图里,给出了以下公式:
Vsenso=2.7-(T+55)/75,单位:
V设Vsenso对应的ADC采样值为N,2.7V对应N1,(T+55)/75对应N2已知:
N1*(3/1024)=2.7N2*(3/1024)=(T+55)/75由此得到:
N=N1-N2=2.7/(3/1024)-((T+55)/75)/(3/1024)解得:
T=(151040-225*N)/1024结论:
ADC配置为温度传感器模式后,只要得到ADC采样值N,就能推算出当前的温度T。
温度采集电路:
温度及电压测试(温度传感器的特性)图:
(四)实验内容:
//主函数(程序入口)
intmain(void)
{charshiwrite[1]=0x06;//初始化显示时间
charfenwrite[1]=0x06;
charcBuf[3];
unsignedlongulStatus;
tI2CM_DEVICELM75A={0xa2>>1,0x02,1,cBuf,3};
tI2CM_DEVICEfen={0xa2>>1,0x03,1,fenwrite,1};
tI2CM_DEVICEshi={0xa2>>1,0x04,1,shiwrite,1};
jtagWait();//防止JTAG失效,重要!
clockInit();//时钟初始化:
晶振,6MHz
uartInit();//UART初始化
I2CM_Init();
//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,波特率为9600。
在程序中一定要做的是要防止JTAG失效和进行系统初始化。
//显示温度值
voidTemperatureDisplay(unsignedlongulData)
{
unsignedlongulTmp=0;
chars1[20];
chars2[20];
ulTmp=(2700-ulData)*75-55000;
sprintf(s1,"%ld.",ulTmp/1000);
sprintf(s2,"%ld",ulTmp%1000);
switch(strlen(s2))
{
case1:
strcat(s1,"00");
break;
case2:
strcat(s1,"0");
break;
default:
break;
}
UART_Puts(s1);
UART_Puts(s2);
UART_Puts("℃\r\n");
}
分析:
10位的ADC模块集成有一个温度传感器,可以用来获取芯片的当前温度。
Vsenso=2.7-(T+55)/75,单位:
V。
设Vsenso对应的ADC采样值为N,2.7V对应N1,(T+55)/75对应N2已知:
N1*(3/1024)=2.7N2*(3/1024)=(T+55)/75由此得到:
N=N1-N2=2.7/(3/1024)-((T+55)/75)/(3/1024)解得:
T=(151040-225*N)/1024结论:
ADC配置为温度传感器模式后,只要得到ADC采样值N,就能推算出当前的温度T。
真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。
在此实验中我们主要了解和搭建室内温度的采集及A/D转换。
在实验板的搭建过程中用到了Easyarm138和的A/D转换模块,其可以完成温度信号的采集。
分析:
ADC模块是由4个定时器,1个中断控制器,4个采样序列发生器、一个FIFO块,一个硬件平均电路,一个模数转换器构成。
ADC模块按照电路图进行,就可以将芯片的温度提取出来,通过公式转换显示在超级终端上。
内部温度传感器的公式为:
(五)、实习小结及心得:
在实验的过程中,我们熟悉了常见的模数转换器的原理及实际的工作参数,尤其是TMP123的集成电路设计的内部构造,这对数电知识和模电知识的运用有着密切的联系,这不仅仅让我们巩固了模电数电的基础知识,并且对他的一些应用有了更深的理解。
我们还了解了其外围电路的连接的机理,尤其是在和单片机的连接上,TMP123既可以检测温度,也可单片机实现温度控制功能,适用于远程温度检测、微机或电子设备温度监视器及工业过程控制等领域。
而且,在实验过程中,我们要用到的1138有关模块及相关的拐角功能,所以我们首先要非常熟悉1138各个模块和拐角的作用,其次按实际的电路的原理图进行电路的连接,将已经调试好的程序下载致IAR软件中同时并打开电脑的超级终端,然后运行此时我们可以在超级终端观测到实时的室内温度,这样才能够得到正确的的实验结果。
通过温度传感器这个实验,我们可以设定时间的初始值,在超级终端接收显示时间,时间连续变化。
第二个实验可以测定器件的温度,并将华氏温度转换成摄氏温度,Vsenso=2.7-(T+55)/75,通过测定芯片的Vsenso值就可以算出芯片的实际摄氏温度。
我们了解了这个实验的基本原理,也对温度传感有了更深刻的认识。
三实验分析与小结
(1)电机调速,通过本次设计,加强了对ARM1138应用知识的掌握,同时对使用ARM1138实现自动化控制的设计过程有了全面地了解。
通过学习控制系统工作原理以及如何利用ARM1138制双直流电机了。
(2)通过液晶显示这个实验,基本了解了矩阵键盘的构造,点阵构造了汉字显示,就通过每个点的亮灭就可以在液晶显示屏上显示出构造的汉字。
(3)通过温度传感器这个实验,我们可以设定时间的初始值,在超级终端接收显示时间,时间连续变化。
第二个实验可以测定器件的温度,并将华氏温度转换成摄氏温度,Vsenso=2.7-(T+55)/75,通过测定芯片的Vsenso值就可以算出芯片的实际摄氏温度。
我们了解了这个实验的基本原理,对温度传感有了更深刻认识。
实验不仅涉及到了温度采集(真实的信号转化为数字的信号),还涉