当前位置:首页 > 单片机 > 单片机
[导读]引 言:LPC900系列Flash单片机提供从8脚到28脚的封装形式,可以满足各种对成本和电路板空间有限制而又要求高性能、高可靠性的应用需要,同时具有高速率(6倍于传统MCS51单片机),低功耗(完全掉电模式下耗电低于1 &

引 言:

LPC900系列Flash单片机提供从8脚到28脚的封装形式,可以满足各种对成本和电路板空间有限制而又要求高性能、高可靠性的应用需要,同时具有高速率(6倍于传统MCS51单片机),低功耗(完全掉电模式下耗电低于1 μA),高稳定性,小封装,多功能(内嵌众多流行的功能模块)等特点。P89LPC932就是该家族中的重要一员,其集成了8 KB的Flash程序存储器、512B的静态数据存储器、512B的E2PROM、I2C总线、SPI总线、增强型UART接口、模拟比较器、看门狗、4 个中断优先级、双DPTR,并支持ISP/IAP编程等功能。

1 P89LPC932进行ISP编程的基本方式

1.1内部程序存储器的三种编程方式

P89LPC932内部集成的8 KB程序存储器编程的三种方式分别是:在系统编程(ISP);程序运行时编程(IAP);通过并行方式编程。

一般来说,ISP编程是指依靠某种外部工具(除了常规的并行编程器以外)去直接给处理器内部集成的程序存储器编程。这里所指的外部工具常见的有很多种,不同的处理器供应厂商可能提供不同的方案。例如,根据编程接口的不同,就有JTAG、单线、串口、SPI口等多种方式。尽管编程方式有所不同,但其原理都是类似的,就是依靠外部条件触发处理器,令其脱离正常执行的内部常规用户应用程序代码的进程,转而执行保存在其程序存储空间内某个固定位置处的控制擦除程序存储器及给程序存储器编程的代码(或是处理器外部提供的执行代码),然后通过某种与PC计算机的通信方式,将用户指定的某个在PC上编译完成的嵌入式处理器可运行的二进制代码文件编程入嵌入式处理器内的程序存储器。这种编程方式只需要常规的硬件配置(某些处理器可能需要某些叫做下载线的简单硬件电路)支持,而不需要特别的编程器(指并行编程器)支持,所以即使处理器芯片已经焊接到了电路板上也可以实现编程,这也就是ISP的真实含义。P89LPC932 是利用其自身的异步串行口来实现ISP编程的,不需要特别的下载线或下载器,触发LPC932进入ISP编程模式的方法将在下文详细解释。

IAP编程方式与ISP编程方式类似,但它不是由外部条件来触发的,而是在处理器正常执行用户设计的应用程序代码时,直接调用执行擦除及编程功能的固化例程。和ISP编程方式一样,IAP编程方式也只需要常规的硬件配置来支持。P89LPC932的ISP编程实际上就是通过调用芯片的IAP服务子程序实现编程的,其IAP服务子程序保存在FF00H~FFFFH地址空间中,不占用用户程序空间。

并行方式编程需要使用一台外部专业编程设备。换句话说,这种编程环境并不是用户最终应用时的硬件环境。用户在使用这种编程方式时,通常必须将处理器芯片单独放到并行编程器上进行编程(如果处理器芯片已经焊接到电路板上,则必须先将处理器芯片从电路板上取下来)。处理器芯片编程完成后才能放回到电路板上,再上电令处理器运行,才能看到用户新写入代码的运行结果。这是最传统的编程方式(经典的AT89C51就主要使用这种方式编程),但它既繁琐,又不能满足现今远程升级的实际需求,因而已逐渐被方便快捷的ISP、IAP等在线编程方式所取代。

综合来说,ISP模式是最容易使用的,因为它允许处理器在被焊接到用户目标电路板上再进行编程,也不需要复杂的代码设计,该特性允许用户在生产出硬件产品后再升级产品软件。一般来说,增加校准信息数据和现场安装最新的软件版本是较常见的升级操作。不仅如此,ISP编程还特别适用于用户产品研发阶段。显然,用户可以非常方便快捷地更改自己的程序代码并立即看到新代码的运行结果。 P89LPC932使用串口作为ISP编程模式的主通信接口,使得这一系列处理器较那些依靠JTAG、SPI等通信接口作ISP编程接口的处理器要方便。因为一般的嵌入式系统都会配置异步串行口,这样,在系统编程就不需要特殊的ISP编程器,而JTAG、SPI等及其类似的编程方式一般都需要专用的接口适配器或下载线来配合,这些都可能会增加用户的投资和成本。

P89LPC932芯片实现ISP编程是依靠在出厂时预置的一段启动代码,这段代码存储在P89LPC932代码空间内7号扇区的高端512B地址处(P89LPC932内部的8 KB程序存储器被组织成8个扇区,每个扇区有1 KB)。这段代码提供了设备底层操作代码(执行如擦除、编程等操作)和串口通信之间的接口。如果用户需要使用ISP编程模式,则必须注意,千万不要擦除或覆盖包含ISP预置代码的那个扇区,也就是7号扇区(1C00~1FFFH),因为P89LPC932的擦除操作是以扇区为基本单位的。

如图1所示,用P89LPC932实现ISP的硬件连接很简单,它只需使用VDD电压即可执行擦除和编程算法,不需要特殊的高编程电压,所以,芯片外部只需要1片TTL和RS232电平相互转换的芯片(常见的芯片包括Maxim的MAX202、MAX232等,其他公司如TI、Sipex、Linear 都有类似功能的芯片产品)即可实现P89LPC932内异步串行口和用户个人计算机上的RS232串口的连接。在用户个人计算机上运行一个简单的终端仿真程序就可以实现ISP编程,不过还有一种更简单的方法,就是运行一个现成的免费程序,比如Flashmagic,就可以实现这个目的,这个程序集成了所有针对Philips LPC900系列处理器的ISP功能。P89LPC932内部的ISP代码能够自动检测其片上异步串行口与用户个人计算机通信的波特率,进而实现在用户个人计算机控制下的代码下载及编程。综上所述,P89LPC932的这种ISP编程模式不需要外部编程器,但是需要一定的外部电路(串口通信电路),需要保留ISP驻留代码,需要在用户的应用程序代码中添加ISP引导初始化程序(如中止控制符检测初始化),且ISP加密字的第2位(禁止ISP/IAP擦除)不能置位。


图1P89LPC932 ISP模式硬件连接图

1.2进入ISP模式的方法

触发P89LPC932进入ISP模式的4种方法分别是:通过检测状态位触发进入ISP模式(全新芯片最初上电时的默认状态);通过检测中止控制符信号触发复位后进入ISP模式(最实用而且常用的方法);上电时在复位引脚上检测到特定脉冲后触发进入ISP模式(即硬件激活进入ISP模式);直接调用 ISP代码实现进入ISP模式。

1.2.1通过检测状态位触发进入ISP模式

P89LPC932复位时,是否进入 ISP模式会受一个状态位的控制,这个状态位保存在Flash存储器里的一个保留位置,不过这个位置并不在P89LPC932可以寻址的程序存储器空间内。在复位信号的下降沿,处理器将检查该状态位的值,如果其值为0,处理器将从地址0000H处开始取指令执行,这里通常存储着用户的应用程序代码。如果该状态位的值不是0,则处理器将从另一个确定的地址处开始执行此处的代码,这个地址(16位)的高8位由复位向量指定,低8位固定为00H。也就是说,引导向量的值将作为程序计数器(PC)的高字节,低字节为00H。如果用户使用的是一片新芯片,芯片中的状态位值在出厂时就被设置为1,而启动向量被预编程为1EH。因此,新芯片在复位后将直接从1E00H地址处开始执行代码。因为从1E00H开始处的代码,正好就是Philips公司给芯片预置的ISP启动代码。如果用户希望从0000H地址处开始执行代码,则状态位的值可以通过并行编程器去清零。实际上,通过ISP代码的自身功能也可以给状态位清零;如果用户往P89LPC932内部的程序存储器写入自己的应用程序代码后给状态位清零,则下次芯片复位后处理器将直接执行用户代码。另外,ISP代码也有修改启动向量值的功能,用户可以修改它的值,也就是把芯片复位后取代码执行的地址修改了(假如LPC932被触发进入ISP模式的话),而用户自己编写的启动代码就放在那里,这种设计通常是用来执行某些特殊功能的。不过,如果用户修改了启动向量的值,使它不再是1EH,则用户就再也不能使用LPC932出厂时预置的启动代码了。如果启动向量被修改而指向一个不包括任何启动代码的地址,用户则不得不使用一台并行编程器来给这枚芯片编程,以恢复它的启动向量值;否则,用户将无法再使用这种ISP编程方法

1.2.2通过检测中止控制符信号触发芯片复位后进入ISP模式

通过异步串行口检测到中止控制符信号触发芯片复位后进入ISP模式是进入ISP模式的第二种方式。中止控制符信号就是指在异步串行口的接收脚上出现长达一帧长度的低电平,这里一帧的长度与异步串行口的工作模式有关。例如,在异步串行口的“模式一”中,一帧相当于10个比特的传输时间。一般地,当一个中止控制符信号发出时,异步串行口的接收脚将会持续相当于很多帧时间的低电平。不过,在第一帧的时候,中止控制符信号就会被检测到。注意,如果用一个机械开关来拉低异步串行口的接收脚,以创造一个中止控制符信号,同时,处理器被配置为允许串行中断,则异步串行口的接收中断标志必须在其中断服务全程中被处理,否则,处理器将进入一种不确定的状态。

这种方式要求驻留在P89LPC932程序存储器内部的用户应用程序代码必须包括初始化异步串行口的代码。换句话说,用户必须使能异步串行口,同时,特殊功能寄存器AUXR1中的允许中止控制符信号位(EBRR)必须被置1,以允许在检测到中止控制符信号时触发处理器复位。此外,启动向量配置字节须保证为1EH(使用P89LPC932内预置的ISP代码),状态字为00H(以使用户应用代码得以执行),且1E00H~1FFFH的Flash程序存储器不要使用或擦除。这样配置完成后,只要异步串行口的接收脚检测到中止控制符信号后,处理器就会复位,复位后LPC932将从由启动向量指定的地址处取指令执行。

有两个问题在使用这种触发方式的时候应该了解。一是某些USB转RS232的转换器无法发出中止控制符信号,所以无法使用检测中止控制符信号的方式触发处理器复位并进入ISP模式;二是中止控制符信号在正常的串口通信不会出现,所以用户可以放心使用这种触发方式。

1.2.3硬件激活进入ISP模式

使用这种模式的好处在于,不论处理器内部原来存储着什么用户代码,也不论状态位的值是什么,ISP模式总是可以进入的(不过有一点还是必须得到保证,就是处理器里原来的启动代码未被擦除或覆盖,而默认的启动向量1EH也没有修改过)。由于P89LPC932引脚数比较少,而且内置了程序存储器,又没有传统的用于外扩总线的P0、P2口和PSEN引脚,所以依靠硬件方式触发芯片进入ISP模式的方法与传统MCS-51芯片有所不同。

上电后,如果处理器在复位脚上检测到如图2所示的脉冲波形,则处理器将从启动向量指定的地址处取指令运行,也就是进入ISP模式,而不是从0000H处取指令执行。其实,这种进入方式的结果和有一个非零的状态字节有着相同效果。不过要注意的是,产生的脉冲数目只允许有3个,多于或少于3个脉冲都不能触发处理器进入ISP模式。


图2P89LPC932硬件激活ISP模式波形图

可以利用一枚外部的微处理器来产生这3个脉冲,同时它还控制一枚电源芯片来产生P89LPC932需要的电源电压。这种方法的原理很容易弄明白,笔者在此不再赘述。另外,还有一种更简单的方法,就是由用户PC机上的异步串行口加上部分硬件电路来直接产生所需的时序,具体介绍可以参看参考文献1。

1.2.4直接调用法触发处理器执行ISP代码

P89LPC932的ISP模式的预置启动向量为1EH,所以其ISP驻留代码首地址为1E00H,要进入ISP,直接调用1E00H处的代码就可以了。在C代码中,程序通过函数指针的方式就可以调用ISP驻留代码(即进入ISP模式)。

1.3在P89LPC932上使用Flashmagic

Flashmagic是一个免费的软件工具,可以为Philips的许多处理器作ISP编程,包括P89LPC932。Flashmagic启动时将试图连接用户选择的器件,不过通常在这里都会报错,因为并没有任何处理器处于ISP模式,又或者还有什么其他的设置需要更改。请选择Flashmagic控制的PC机上的正确串行口,同时选择目标器件为P89LPC932,如图3所示。然后使这片P89LPC932进入ISP模式(如果


图3FlashMagic的启动画面

这是一枚全新的处理器,则它这时已经处于ISP模式了)。如果这不是一枚全新的处理器(状态位不是1),那么必须使用硬件方式激活处理器进入ISP模式,或用检测中止控制符信号的方式触发处理器复位并进入ISP模式。

如果使用检测中止控制符信号的方式触发处理器复位并进入ISP模式,如图4所示,则应当配置Flashmagic,以使用这种方式来初始化ISP模式。首先,检查“options”菜单下的“advanced options”选项,在弹出的对话框的“hardware config”页上应该取消“Use DTR and RTS to enter ISP mode”选择框中的选择(注:FlashMagic可以记住你的各种设置,下次你再次使用,如果不需要其他设置,可不再设置它即可使用)。然后,从 “ISP”菜单下选择选项“start bootrom”,并从弹出的对话框中选择“send break condition”按钮,Flashmagic可以通过PC机串行口直接向P89LPC932发出中止控制符信号。一般来说,这时P89LPC932就应该处于ISP模式下了。不过,Flashmagic不会自动校验P89LPC932是否已经真正进入了ISP模式,这个工作需要由用户自己来做。如果 P89LPC932未处于ISP模式,若干个Flashmagic的菜单是无法使用的

(即使用户选择这些菜单,Flashmagic也会报错而不会有执行结果),用户可以通过选择这些菜单来检验P89LPC932是否已经处于ISP模式下了,例如“ISP”菜单下的“Blank Check…”选项。当然,P89LPC932未进入ISP模式时,对它的编程是无法进行的,从这层意义上说,同样也可以知道P89LPC932并未处于 ISP模式下。


图4发送中止控制符条件的界面

Flashmagic的缺省设置是自动保护P89LPC932中扇区7内高端512字节的启动代码,不过用户可以在“options-advanced options-security”对话框中关闭这个保护功能。不过,并不推荐用户这么做,因为这会提高误操作对覆盖ISP启动代码的可能性。

注意,有些菜单选项在新版Flashmagic的位置可能与本文中提及的不同。本文使用的是1.74版的Flashmagic,至截稿时止,Flashmagic已升级至2.07版。

2 总结

Philips P89LPC932是一种功能全面、使用简单、性能可靠、性价比较高的高速51兼容微处理器,适用于产品研发、小批量产品试制、高校科研等诸多领域。本文对P89LPC932进行ISP编程的具体方法和技巧进行了详述,希望读者们能充分利用P89LPC932的优秀在线编程特性。

参考文献
1 周立功单片机有限公司. P89LPC932的ISP应用设计,2004
2 Philips Co. Application Note. In?system programming (ISP) with the Philips P89LPC932 microcontroller, 2003
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭