单片机的ISP在线编程设计

单片机的isp在线编程设计
随着电子技术的日益发展,芯片的规模越来越大,封装日趋小型化,相应地对系统板级调试的困难也在加大。在传统的调试方式中,频繁的调试和更换程序需要频繁地插拔芯片,开发效率极低。at89s系列单片机提供的isp在线编程技术彻底地改变了传统的开发模式,开发单片机系统时不会损坏芯片的引脚,加速了产品的上市并降低了研发成本,缩短了从设计、制造到现场调试的时间,简化了生产流程,大大提高了工作效率,因此它是对市场定型产品进行现场升级和维护的经济、有效的方式,极大地促进了pld产品的发展。
1 pc机并行口
1.1 并行口硬件接口简介
标准并行口有25个引脚,其中数据端口引脚为2~9,状态端口引脚为15、10~13,控制端口引脚1、14、16、17用于连接器件,其他引脚18~25是接地引脚gnd。25针并行口如图1所示。
图1 25针并行口
并行口工作在spp模式下,pc机是通过对3个8位端口寄存器的读或写来实现对它们的控制。端口寄存器分别是:
◆ 数据端口(地址0x378)为d7~d0,对应引脚p9~p2;
◆ 状态端口(地址0x379)为s7~s3,对应引脚p11、p10、p12、p13、p15;
◆ 控制端口(地址0x37a)为c3~c0,对应引脚p17、p16、p14、p1。
注意: s7、c0、c1、c3信号的逻辑状态在连接器处是与相应寄存器位相反的。对这些位进行写操作时,写入的值应该与连接器处设置的值相反;同样,进行读操作时,读取的值也与连接器处设置的值相反。
1.2 并行口编程简介
windows对系统底层操作采取了屏蔽的策略,但是在硬件或系统软件开发中只要涉及系统底层的操作,就不得不深入到windows的内核去编写属于系统级的设备驱动程序。对并行口的读/写操作就是如此。为了绕过 windows安全保护机制,需要允许32位 windows程序直接对 i/o口进行操作。这里使用由 yariv kaplan编写的 winio库中的几个函数来实现对i/o口的读/写。
(1) 初始化与终止
对端口读/写前后要分别初始化和终止。
initializewinio();
shutdownwinio();
(2) 安装与卸载
如果操作系统是windows98或windows95,则需要调用驱动函数。
installwiniodriver(pstr pszwiniodriverpath, bool isdemandloaded = false);
removewiniodriver();
(3) 读/写i/o口
getportval(word wportaddr, pdword pdwportval, byte bsize);
setportval(word wportaddr, dword dwportval, byte bsize);
getportval函数从指定端口读取一个byte/word/dword类型的值;setportval函数向指定端口写入一个byte/word/dword类型的值;wportaddr是指定一个端口地址值;pdwportval为指向一双字节型变量的指针,该变量存储从wportaddr端口读取的值;dwportval为一双字节型变量写到wportaddr端口中;bsize指定读取字节数,值可以为1、2或4。
2 at89s5x系列单片机
2.1 at89s51简介
at89s51是一个低功耗、高性能cmos 8位单片机,片内含4 kb isp(insystem programming)的可反复擦写1 000次的flash只读程序存储器。该器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs51指令系统及80c51引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单元。功能强大的at89s51可为许多嵌入式控制应用系统提供高性价比的解决方案。
2.2 at89s51串行编程时序及指令
2.2.1 串行编程模式下的时序分析
2.2.2 串行编程指令
串行编程使用4字节协议,指令如表1所列。
表1 串行编程指令
3 并行口与at89s5x单片机的硬件设计
通过对并行口和编程时序的分析,我们制作了at89s5x单片机的isp下载线。下面对并行口与单片机的连线作一简单介绍: 并行口p2引脚连接单片机的p1.5引脚(mosi);并行口p10引脚连接单片机的p1.6引脚(miso);并行口p1引脚连接单片机的p1.7引脚(sck);并行口p17引脚连接单片机的rst引脚,如图2所示。
图2 at89s52下载线电路图
4 isp下载线的软件设计在
硬件设计的基础上,通过对isp时序和串行编程指令的分析,采用visual c++6.0编写了下载线程序。其主要关键编程函数略——编者注。
结语
以下是作者在调试中获取的一些参数,希望对大家有所帮助。
参考资料:
晶体振荡器的频率为33 mhz(max),所以周期t=1/f=1/33 mhz=30 ns(min);sck正脉冲宽度为8×30 ns=240 ns(min);sck负脉冲宽度为8×30 ns=240 ns(min);mosi建立到sck变高时间为30 ns(min);sck变高后mosi保持时间为2×30 ns(min);sck变低到miso有效时间为10 ns(min)~32 ns(max)(一般取16 ns);芯片檫除指令周期为500 ms;串行字节写周期为64×30 ns+400 ns。
实验数据:
晶体震荡器的频率为33 mhz(max),所以周期t=1/f=1/33 mhz=30 ns(min);芯片擦除指令周期为200 ms;sck变高后mosi保持时间为1 ms(min)。

Microchip无传感器永磁同步电机控制
苹果iPhone8正式发布:iphone8与iPhone7有什么区别?iPhone8有什么改变?iphone8与iPhone7区别对比
!销售/回收HP8712ET网络分析仪HP8712ET 小兵
台积电日本厂员工总数将逾千人 力争2024年如期量产
千元5G 畅享科技,中兴Blade 20 5G
单片机的ISP在线编程设计
木林森83亿,中微25亿,LED产业链龙头再“进阶”
虚拟现实技术发展迅速,未来将应用于各行各业
POE端口室外4KV和6KV防雷保护方案
美光业界领先的232 层NAND可满足 AI 海量数据的存储需求
显示器的IPS,VA,TN屏幕有何区别,应该怎么选
物联网芯片ARM与RISC-V选择哪一种比较好
天津杰泰高科霍尔传感器HG08 系列概述
人工智能机器人的发展将为人类带来新的技术变革
基于RFID技术的消防抢险救援车装备管理系统
苹果MacBook Pro显示器发售价7638元
苹果推送iOS 14.3/iPadOS 14.3候选预览版
小米下半年再发大招!小米MIX2、小米Note3和红米Pro2三款旗舰机型即将发布随你挑!
湖州移动完成5G SPN集采入网测试,采用中兴通讯系列等产品
他把历代iPhone拿来烧?美国的美猴王竟然是它!