1、ARM开发板使用手册ARM开发板使用手册PHILIP LPC2132 ARM7TDMI第一章 介绍LPC2132开发板是专门为arm 初学者开发的实验板,用户可以做基础的arm实验,也可以做基于ucos-ii的操作系统实验。本系统的实验源代码全部开放,用户可以在此基础上开发产品,减少重复劳动。由于LPC2132体积很小,并且功能强大,因此特别适合需要复杂智能控制的场合,其运行速度高于早期的80486计算机,而体积只有指甲大。我们已经将LPC2132产品成功应用在干扰比较强的工业场合,经过6个月的运行,各项指标符合要求。因此我们特别推荐这一款开发板作为ARM初学者入门。由于此款开发板体积很小,非
2、常适合直接应用在工业以及民用智能控制器的场合。LPC2132 CPU介绍LPC2131/2132/2138 是基于一个支持实时仿真和跟踪的16/32 位ARM7TDMI-STM CPU,并带有32kB、64kB 和512kB 嵌入的高速Flash 存储器。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16 位Thumb 模式将代码规模降低超过30%,而性能的损失却很小。较小的封装和很低的功耗使LPC2131/2132/2138 特别适用于访问控制和POS 机等小型应用中;由于内置了宽范围的串行通信接口和8/16/32kB 的片
3、内SRAM,它们也非常适合于通信网关、协议转换器、软件modem、语音识别、低端成像,为这些应用提供大规模的缓冲区和强大的处理功能。多个32 位定时器、1个或2 个10 位8 路的ADC、10 位DAC、PWM 通道、47 个GPIO 以及多达9 个边沿或电平触发的外部中断使它们特别适用于工业控制应用以及医疗系统。主要特性 16/32 位ARM7TDMI-S 核,超小LQFP64 封装。 8/16/32kB 的片内静态RAM 和32/64/512kB 的片内Flash 程序存储器。128 位宽度接口/加速器可实现高达60 MHz 工作频率。 通过片内boot 装载程序实现在系统编程/在应用编程
4、(ISP/IAP)。单扇区或整片擦除时间为400ms。 256 字节行编程时间为1ms。 EmbeddedICERT 和嵌入式跟踪接口通过片内RealMonitorTM 软件对代码进行实时调试和高速跟踪。 1 个(LPC2131/2132)或2 个(LPC2138)8 路10 位的A/D 转换器,共提供16 路模拟输入,每个通道的转换时间低至2.44us。 1 个10 位的D/A 转换器,可产生不同的模拟输出。(仅适用于LPC2132/2138) 2 个32 位定时器/计数器(带4 路捕获和4 路比较通道)、PWM 单元(6 路输出)和看门狗。 实时时钟具有独立的电源和时钟,可在节电模式中极大
5、地降低功耗。 多个串行接口,包括2 个16C550 工业标准UART、2 个高速I2C 接口(400 kbit/s)、SPITM 和具有缓冲作用和数据长度可变功能的SSP。 向量中断控制器。可配置优先级和向量地址。 小型的LQFP64 封装上包含多达47 个通用I/O 口(可承受5V 电压)。 多达9 个边沿或电平触发的外部中断管脚。 通过片内PLL(100us 的设置时间)可实现最大为60MHz 的 CPU 操作频率。 片内晶振频率范围:130 MHz。 低功耗模式:空闲和掉电。 可通过个别使能/禁止外部功能和外围时钟分频来优化功耗。 通过外部中断将处理器从掉电模式中唤醒。 单电源,具有上电
6、复位(POR)和掉电检测(BOD)电路: CPU 操作电压范围:3.0V3.6 V (3.3 V 10),I/O 口可承受5V 的电压。实验开发板的中央处理器采用Philips最新的LPC2132 低功耗32位 ARM处理器,内带16k RAM,64K flash,工作频率最高60M。实验种类可以做如下实验(实际上不限于这些): LCD液晶控制器实验,您可以掌握在没有操作系统的支持下编写LCD液晶驱动以及菜单制作 GPIO实验,通过GPIO驱动发光管 SPI总线实验,可以掌握对SPI外设的操作,如74HC595的操作 A/D D/A实验,掌握模拟信号采样并转化为数字量,以及数字量生成模拟电压
7、PWM实验,掌握脉宽调制的生成 实时时钟实验,掌握对内部时钟的设置以及读取 脉冲计数实验,掌握用中断方式对外部跳变信号的计数以及查询方式计数 串行通信实验,掌握RS232通信,不同波特率的设置,查询方式通信以及中断方式通信 I2C总线实验,掌握如何通过I2C对 E2ROM 24C04操作 键盘实验,掌握键盘扫描原理以及如何获得键码 7段LED实验,掌握在LED显示数字的技巧 低功耗实验,掌握如何使处理器进入节电模式 通过串口下载程序代码,掌握远程程序修改的方法 中断控制实验,学习如何使程序进入管态以及核态,学习中断向量的设置,以及C语言环境下对中断的处理。 掌握如何在没有硬件的情况下在VC环境
8、编写嵌入式应用程序,并模拟真实环境调试。进一步掌握在硬件平台已经完成后如何把VC环境编写嵌入式应用程序移植到硬件平台上。 掌握硬件驱动的API函数的编写、API调用的方法。掌握函数库的生成以及库函数的调用,从而使源程序中关键部分的源代码不可见,保护知识产权。 掌握用C+对嵌入式应用编程,掌握C,C+以及汇编混合编程 掌握如何用UML建立模型并且生成C+程序,掌握对自动生成的C+程序的嵌入式改写并移植到目标系统 操作系统实验,ucosii也可以直接用开发板做智能控制器、智能仪表等工业设备。实验器材清单简易仿真头一个 20芯扁平电缆1根,并口电缆一根,串口电缆一根,实验板一块,5v电源一个光盘一张
9、,光盘包括ads1.2,arm参考资料,实验源代码,调试代理,外设资料 ,原理图在使用本开发板前,应该具备的基础知识包括:ARM体系结构和编程,会C语言。第二章 开发环境的搭建开发环境我们采用ADS1.2集成环境,请先安装ADS1.2。如何使用ADS1.2请参考光盘内的手册。ARM开发环境和51单片几很不一样。熟悉51的都知道用仿真器来调试,但arm却不一样,它通过JTAG接口仿真。因此这里先介绍JTAG仿真的概念。JTAG调试接口为什么现在的微处理器采用JTAG? 当前许多复杂的微处理器的内核不再能通过芯片的外设直接访问,调试芯片程序变得困难。还有,为了缩短开发周期加快产品进入市场的速度,直
10、接将CPU安装在电路板上调试也更接近实际工作情况。这些都需要JTAG装置来完成。JTAG的引脚定义遵循JTAG的器件包含以下几个管脚TCK 测试时钟输入,它和系统时钟不同TDI测试数据输入,通过它数据移位进入器件TDO测试数据输出,通过它数据从器件移出TMS测试模式选择,在JTAG规范中TMS命令选择测试模式TRST测试复位输入,它为TAP控制器提供异步初始化器件的测试支持功能是通过TAP控制器来实现的。TAP是一个状态机,它控制控制所有相关操作,每种遵循JTAG的器件都有自己的TAP控制器,通过TCK和TMS可以使状态机内部的状态发生变化,从而支持诸如断点、单步、内部观察等调试工作。本章针对
11、ARM7TDMI介绍调试结构。ARM的调试体系采用协议转换器来使调试器通过JTAG与ARM核直接通信。前面JTAG标准中提到的扫描链功能是测试用,这里把它作为调试用:捕获数据总线上的信号并向内核或存储器插入新的信息。ARM7TDMI-S核内具有EmbeddedICE逻辑,EmbeddedICE逻辑提供对片内调试的支持。调试指令直接通过扫描链插入ARM内核并执行。根据插入调试指令的不同,内核可以处于观察、保存或改变状态。ARM的调试体系可以使程序指令执行速度处于调试速度或全速运行。在ARM中采用JTAG的特点是:通过JTAG接口可以观察ARM内核状态和系统状态(注意:系统状态包括片内外设,不同于
12、内核状态);不占用额外的目标系统资源;提供传统的断点访问和观察点访问;不再需要另外的UART端口来和监控程序通信。围绕ARM内核有两个扫描链:围绕整个内核外围的一个扫描链以及仅仅覆盖数据总线和断点的扫描链。由于后者的链比较短,从而使调试指令和数据可以快速插入内核,避免了额外的时间。ARM的JTAG调试需要如下设备: 一台运行调试软件的主机 一个EmbeddedICE协议转换器。EmbeddedICE协议转换器将远程调试协议命令转换成所需要的JTAG数据,从而对目标系统上的ARM7TDMI-S内核进行访问。它包括两个部分:将串行数据信号转换成JTAG接口兼容信号的装置以及带有JTAG接口的ARM
13、调试体系内核。其中前半部分可以是仿真器硬件,后半部分是ARM片子本身就支持的。根据功能需要,仿真器硬件可以做了比较复杂也可以很简单。 我们采用简易的仿真器。 调试主机运行调试程序,如ADS,RealView,SDT等。ICE协议转换器其实包含两部分:协议转换硬件和软件,复杂的硬件一般采用FPGA实现,简单的可以就用一片数字缓冲电路实现。协议转换软件一般在调试主机上运行,可以是API的方式也可以用后台服务的方式。调试主机和协议转换硬件之间可以采用各种方式连接:并行、串行、网络以及USB,只要最终递交给ICE协议转换器的数据一致就可以,这是通过运行在ICE协议转换器 上面的通信软件来实现的。ICE
14、协议转换器和目标板通过遵循JTAG电气规范的电缆连接。简易仿真头的使用简易仿真头采用wiggler电缆,其使用过程如下:硬件连接按照下图连接仿真头、计算机以及实验板软件配置1 首次使用时先安装驱动(以后不用再安装)- 执行文件下的安装驱动.exe安装好并口驱动和OCX2,安装完毕后即可运行Arm7Agent或Arm9Agent调试ARM7系统或ARM9系统3,如果在以后的使用过程中发现程序无法启动重新执行安装驱动.exe 即可4,在ADW(SDT)/AXD(ADS)的调试配置选项里选择remote_a.dll5,在ADW/AXD的调试配置里IP地址必须填写:127.0.0.1二 常见问题1,
15、THUMB/ARM混合编程时断点设置要素当CPU处于一种CPU模式时(THUMB或ARM) 断点只可以设置在当前模式下的指令处不可以设置在另一种模式下的指令解决方案设置一个断点在CPU模式切换指令处(如BX) 当程序运行到此指令并停下来后然后通过单步执行(Step)进入另一种状态这时候就可以在当前模式下任意设置断点了2, THUMB/ARM混合编程时因为ADW/AXD启动时默任的CPU模式为ARM模式如果你启动调试前你的ARM CPU 正在执行Thumb模式指令那么将会导致调试错误解决方案按一下你的板子的复位键,然后再启动ADW/AXD即可3, 为了加快软件影响单步执行速度现在暂时屏蔽了sem
16、ihosting 功能4, 如果出现无法逼使CPU进入调试的提示只需要复位你的板子,重新启动软件即可5, 如果发现软件没有任何动作把它关了再启动6, 如果发现软件根本无法运行看不到其运行界面那么执行安装驱动.exe重新驱动OCX即可7, 如果出现打开并口失败,那么执行安装驱动.exe , 重新并口驱动即可8 如果提示检测不到ARM核如果你的CPU没坏供电正常那么就一定是你的JTAG板子问题了,应该参考常用的那种SDT或Wiggler接线然后在JTAG调试软件选择对应的选项SDT或wiggler或自定义9, 排除这些如果出现其他的调试错误,那么就是你设置ADW/AXD或你的板子问题了10 有时候
17、,如果你计算机的防火墙开着,可能会使调试不正常,请设置防火墙为允许本代理程序运行,或者干脆关闭防火墙安装代理软件首先在光盘找到调试代理目录,安装并口驱动。出现如下界面:选择install,出现如下界面,说明驱动安装成功了。然后开始打开该目录下的arm7.exe 。如果jtag接口没有连接好,或者arm开发板没有上电,就会出现如下界面:否则,成功的话就出现成功检测到arm内核界面然后开始配置ads开发环境打开AXD程序,选择OptionsConfigue Target 在Choose target 里面选择ADP,然后d点击Configue,出现点击Select,出现选择ARM ethernet
18、 driver,确认OK,回到界面点击Configure,出现在Target IP address框填入:127.0.0.1 ,然后OK就可以了。这时候,如果你没有打开调试代理软件,AXD会出现失败。因此,必须先打开调试代理软件,然后运行AXD才能正常。打开一个现有的源程序,并且运行启动CodeWarrior for arm develop suite在file下选择一个现有文件。对本例子而言,将光盘的实验程序全部拷贝到C盘,选择c:实验 目录下的BeeP文件夹,打开BeepCProject,工程将出现在主界面下,在BeepCProject下有个调试选项:Debug,DebugRel,Rele
19、ase .它们分别对应在RAM里面运行程序,在flash里面运行程序。其实不同仅仅在于debug setting的配置上面。这里选择Debug,也就是在ram里面运行程序,这时源程序自动编译。查看调试代理目前是否正常运行。在Project里面选择Debug,这时候AXD将自动运行,并停在当前指令入口处。也就是复位后的地址处。对于LPC2132而言,停留在0x40000000处,这里放的是LDR PC, Reset_Addr ,也就是管理模式下的第一条指令。然后run,这时候程序应该开始执行,然后自动停在main()函数地方。假如没有停在这里,请在AXD的File下面选择reload curre
20、nt image,重复上述过程,这时就停在Main()上了。接着Run,程序运行,观察蜂鸣器应该连续发声。万龙LPC2132串口写程序步骤LPC2132的flash可以通过2种方式写入:IAP以及ISP。对于初学者我们推荐采用ISP写。在介绍以下方法前,我们认为您已经安装好ADS开发环境。配置Codewarrier1. 1. 因为写入必须采用hex格式,首先设置hex输出文件 select codewarrier edit-debug rel settings 如上图:post link 选择arm from elf在arm linker 选择 scatter .SYSTEMdebug_in_
21、flash.scf在option image entry point 选0x0在LINKER arm fromelf output format 选intel 32 bit hex在output file name 填上最终目标hex文件 例如:c:abc.hex然后 保存,编译工程。看看:c:abc.hex是否成功安装philip lpc2000 flash utility连接电脑串口与开发板开发板上电设置philip lpc2000 flash utility select device lpc2132XTAL 11059.2Uaud rate 9600短路开发板跳线器J6选择Read d
22、evice ID 提示复位开发板按一下开发板RST键,松开,点确定这时候part id 和 boot loader id应该出来,说明正常然后在flash programming 的file name 选择你所要写的程序abc.hex(必须采用hex格式)执行upload to flash 下载结束后 执行compare flash 显示compare ok 说明正常。断开跳线器J6。按RST程序应该独立运行 第三章 开发板硬件原理介绍了解原理图以前,请先熟悉LPC2132 CPU 光盘内有LPC2132的datasheet。注意:CPU所有的引脚全部引出,因此CPU所有功能都可以使用,以下介
23、绍的是开发板接的外部设备,包括以下几个部分:供电电源,CPU,串行通信,复位电路,键盘电路,PWM电机驱动,SPI数码管部分,JTAG接口部分,I2C EEROM部分,BEEP以及LED部分,模拟输入。在学习以下内容时请对照原理图。元器件资料光盘里有电源LPC2132采用单电源供电,供电3.3V 。由于电路板上某些设备采用5V供电,因此输入电源首先经过7805稳压形成5v电压,然后送给AS1117-3.3低压差稳压电路,产生3.3v供CPU使用。CPU部分 CPU晶体振荡器采用11.0592 CPU内部可以倍频至60M 实时时钟采用32.768K的晶体振荡器,其供电电源独立,通过外接的纽扣电池
24、供电,因此开发板断电不会对内部的万年历有影响。 CPU的模拟地和数字地分开,有利于保证a/d转换的精度。片内的A/D转换精度10位,如果需要14位转换精度,可以采用TLC2543 我们对购买的用户提供代码以及接口资料。 CPU管脚许多是功能复用的,在作GPIO输出功能时候不需要外接上拉电阻, 由于引脚在输入模式下为高阻抗,因此对一些输入脚加上拉电阻保证其处于确定的状态,防止不确定的信号引入。RS232通信RS232通信有2路,通过MAX232将3.3v电平转换为RS232电平。由于MAX232适合用在5v的TTL电平场合,因此我们通过分压让其适合3.3v场合。本机RS232最高工作频率1152
25、00bps。如果需要在工业场合用通信,建议直接采用RS485通信需要重布电路板,也可以在目前的RS232 输出外接RS232/RS485通信转换模块,效果相同。8段数码管开发板上一共4个8段共阳数码管。采用轮巡的方式动态扫描,每个发光管点亮时间大约20ms.74HC595是串并变换电路,SPI总线的数据在74HC595时钟作用下串行输入,变换为并行8位输出,控制数码管段信号。键盘键盘键数量不多,没有采用动态扫描,直接通过GPIO采样。上拉电阻是为了保证按键信号处于确定状态,而100ome的串联电阻为了防止用户自己编程序将这些引脚设置为高电平的时候,同时按下键而烧毁CPU管脚。液晶接口采用的LC
26、D有2种接口方式,SPI接口以及并行接口。这里采用SPI接口,液晶背光通过开关管由CPU控制,液晶对比度调节通过电路板上黄色的可调电阻调节,出厂前已经调好,请不要自行调节。液晶的编程说明书见光盘资料。串行EEROM采用I2c接口,存储器可能为24c04,24c02,24c01 不同的开发板焊接的型号不同。I2c地址分为设备号码,内部地址号。内部地址号由2部分组成:器件地址以及寄存器地址,详细请察看24c04说明书。JTAG调试接口Jtag接口的RTCK必须接一个下拉电阻,用来允许JTAG调试。RTC部分内部的实时时钟外接32.768k crystal。早先的LPC2100系列没有后备电源,调电
27、后时间就丢失,而这款CPU考虑到这个问题,外加了电池供电,至少3年时间没问题。A/D转换部分A/D转换10位精度,通过电位器输入,范围0-3.3V,如果用户需要14 位分辨率,可以采用TLC2543,我们可以提供接口以及程序。PWM输出PWM输出控制马达运行,占空比越大,输出平均电压越高,马达转得也越快。为了防止开关管关闭的时候电机线圈反向电压多高击穿开关管,在电机并联了续流二极管。另外,由于电机直接用3.3v电源供电,为了防止全速启动的开始阶段启动电流太大,影响CPU的正常工作,串联了10ome的电阻。复位电路可以采用专用复位电路,比如max708 但价格贵,这里采用自行设计的复位电路,实际
28、效果不错。RST为低电平复位,正常工作的时候必须为高电平,当开发板发发生瞬间掉电的时候,电解电容通过二极管快速放电,当重新上电的时候,通过10K的电阻向电解电容充电,达到延迟复位,保证电压正常后CPU程序开始运行,否则可能会跑飞程序。第四章 实验程序各种实验在光盘的源代码里面都包含了,这里详细介绍DEMO程序,其余的程序请读者自行分析运行。可以在我们程序的基础上改动称为你自己的应用。所有的C程序都分为2个部分:初始化启动代码以及应用程序。由于启动代码我们已经做好,因此,用户只需要关心应用程序的编写。不过,为了全方位掌握arm ,建议了解启动代码。启动代码如果你的程序全部用汇编语言,启动代码就不
29、需要,只需要对系统初始化,这和用单片机汇编开发类似。但如果需要用C编写程序,必须提供启动代码。也许有些人觉得奇怪,为什么用Keil C51不用写任何启动代码,但在ARM下编程序确要写?这是因为arm公司自己不生产CPU只出售芯片技术,许多公司扩充arm内核,形成具有各自特色的arm处理器。例如:ROM,RAM的地址安排都各不一样,片内外设也各不相同。而51的启动代码已经在Keil c51里集成用户不需要自己另外再写。你可能会问:为什么一定要用汇编写启动代码而不能直接用C语言来初始化?因为C语言在工作以前必须初始化一些C语言的库,例如:为C程序分配栈空间。当这些基本项目没有初始化的时候,C语言的程序是无法工作的。虽然C语言最终被编译器编译为汇编代码,但只有基本的设置完成,这些代码才能正常运行,arm 的编译器不会做这些初始化。编写启动代码需要有如下的预备知识: 了解arm异常的种类 了解各种异常对应的堆栈分配方法 了解CPSR和SPSR 了解汇编程序与C程序的调用 了解ADS编译器相关的一些知识 了解某些系统相关的外设设置启动代码的编写可谓千变万化,即使同一型号的CPU启动代码也
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1