微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > P89LPC932的几种ISP编程方法

P89LPC932的几种ISP编程方法

时间:03-30 来源:互联网 点击:

和编程算法,不需要特殊的高编程电压,所以,芯片外部只需要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(以使用户应用代码得以执行),

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top