位置:51电子网 » 技术资料 » 通信网络

在远程通信中实现89LPC932的ISP功能

发布时间:2008/5/26 0:00:00 访问次数:580

        

    

    

    作者:北京军事医学科学院实验仪器厂 王晓宁 史俊富

    

    早期单片机应用软件开发完成以后,是通过相应的编程器将程序烧写入单片机的rom或eprom里,这样每一次擦写程序都需要将芯片从电路板上拆卸下来,不利于研制开发,对于日后的产品软件升级也非常不方便。随着新一代单片机的出现,具有isp功能的芯片得到越来越多嵌入式系统开发工程师的青睐,isp功能的使用方法也越来越多,飞利浦公司的89lpc932是一款较早推出的高性能处理器。

    

    isp(in-system programming,在系统编程)是指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用isp方式擦除或再编程。

    

    用反汇编软件将89lpc932中boot rom源代码(机器码)反汇编为asm文件,分析其数据处理与通信控制,就能明白isp功能实现的具体方法,并修改使其能够为我们所用,在远程rs485通信网络中实现isp功能,从而在某些特定环境下依然能够稳定工作。

    

    1 对boot rom中部分代码的分析

    

    在这里只针对通信部分进行简要阐述。

    

    1.1 自动波特率的确定与校验

    

    上位机按照自身的波特率,向下位机发送一个大写的英文字符“u”,ascli码为55h,二进制为“01010101b”,也就是一组“o”,“1”相间的数据。下位机收到数据,计算出1位数据的传输时间(2个“1”之间的时间间隔),则所对应的通信波特率就可以计算出来,下面是汇编语言程序:

    

    

    

    execho.

    

    ret ;返回

    

    计算出波特率后,调整串口,再收发一个字节,将得到的数与u的ascii码相对比。如果相等,程序继续执行;如果不相等,程序循环等待。从这里可以看出,为保证通信成功,上位机至少要向下位机发送2个“u”。

    

    1.2 通信报的内容

    

    通信建立后,就可以接收各种命令,并进行校验和的比较,判断本次通信是否成功以及回传相应的数据。汇编语言程序如下:

    

    

    在系统稳定、工作状态正常时,boot rom中isp程序接收、发送的数据主要就是这些,其他异常处理部分不再赘述。

    

    2 远程通信网络的使用问题

    

    当在远程rs485通信网络中(上位机与下位机一对一情况下)想使用89lpc932的isp功能时,发现直接使用应用软件“philips isp下载器”会提示串口通信失败。利用“串口调试器sscom”调试发现,单字节通信正常,多字节通信不正常,分析程序发现问题出现在通信转换模式上。89lpc932的boot rom中,isp程序使用rs232标准工作,是全双工工作模式;而通信网络中使用rs485标准工作,为半双工工作模式,两者混用当然会出现问题。

    

    知道问题所在,程序修改起来就方便多了。首先,对于上位机发来的指令,不再采用收1个字节回传1个字节的方法,而是先将控制命令全部接收下来,再分析处理。然后,把所需数据发送出去,将整个工作过程转为半双工形式,修改后的通信报process部分程序如下:

    

    

    需要注意的是:在子程序echo中,回传1个字节那一步要取消掉,这是改为半双工的关键。另外,这里所谈到的只是针对点对点通信,如果网络中有多个下位机共存,那么上位机在发送命令时,需要注意所指定下位机的软、硬地址问题。

    

    3 结论

    

    通过实验证明,该方法简单有效,能够在原有boot rom isp程序基础上将其成功地移植到远程rs485通信网络中。全双工工作模式改为半双工工作模式,操作简单,能够保证通信正常,并能完全利用原有的多种isp下载器,减少了开发成本,这为飞利浦89lpc932flash

        

    

    

    作者:北京军事医学科学院实验仪器厂 王晓宁 史俊富

    

    早期单片机应用软件开发完成以后,是通过相应的编程器将程序烧写入单片机的rom或eprom里,这样每一次擦写程序都需要将芯片从电路板上拆卸下来,不利于研制开发,对于日后的产品软件升级也非常不方便。随着新一代单片机的出现,具有isp功能的芯片得到越来越多嵌入式系统开发工程师的青睐,isp功能的使用方法也越来越多,飞利浦公司的89lpc932是一款较早推出的高性能处理器。

    

    isp(in-system programming,在系统编程)是指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用isp方式擦除或再编程。

    

    用反汇编软件将89lpc932中boot rom源代码(机器码)反汇编为asm文件,分析其数据处理与通信控制,就能明白isp功能实现的具体方法,并修改使其能够为我们所用,在远程rs485通信网络中实现isp功能,从而在某些特定环境下依然能够稳定工作。

    

    1 对boot rom中部分代码的分析

    

    在这里只针对通信部分进行简要阐述。

    

    1.1 自动波特率的确定与校验

    

    上位机按照自身的波特率,向下位机发送一个大写的英文字符“u”,ascli码为55h,二进制为“01010101b”,也就是一组“o”,“1”相间的数据。下位机收到数据,计算出1位数据的传输时间(2个“1”之间的时间间隔),则所对应的通信波特率就可以计算出来,下面是汇编语言程序:

    

    

    

    execho.

    

    ret ;返回

    

    计算出波特率后,调整串口,再收发一个字节,将得到的数与u的ascii码相对比。如果相等,程序继续执行;如果不相等,程序循环等待。从这里可以看出,为保证通信成功,上位机至少要向下位机发送2个“u”。

    

    1.2 通信报的内容

    

    通信建立后,就可以接收各种命令,并进行校验和的比较,判断本次通信是否成功以及回传相应的数据。汇编语言程序如下:

    

    

    在系统稳定、工作状态正常时,boot rom中isp程序接收、发送的数据主要就是这些,其他异常处理部分不再赘述。

    

    2 远程通信网络的使用问题

    

    当在远程rs485通信网络中(上位机与下位机一对一情况下)想使用89lpc932的isp功能时,发现直接使用应用软件“philips isp下载器”会提示串口通信失败。利用“串口调试器sscom”调试发现,单字节通信正常,多字节通信不正常,分析程序发现问题出现在通信转换模式上。89lpc932的boot rom中,isp程序使用rs232标准工作,是全双工工作模式;而通信网络中使用rs485标准工作,为半双工工作模式,两者混用当然会出现问题。

    

    知道问题所在,程序修改起来就方便多了。首先,对于上位机发来的指令,不再采用收1个字节回传1个字节的方法,而是先将控制命令全部接收下来,再分析处理。然后,把所需数据发送出去,将整个工作过程转为半双工形式,修改后的通信报process部分程序如下:

    

    

    需要注意的是:在子程序echo中,回传1个字节那一步要取消掉,这是改为半双工的关键。另外,这里所谈到的只是针对点对点通信,如果网络中有多个下位机共存,那么上位机在发送命令时,需要注意所指定下位机的软、硬地址问题。

    

    3 结论

    

    通过实验证明,该方法简单有效,能够在原有boot rom isp程序基础上将其成功地移植到远程rs485通信网络中。全双工工作模式改为半双工工作模式,操作简单,能够保证通信正常,并能完全利用原有的多种isp下载器,减少了开发成本,这为飞利浦89lpc932flash

相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!