用下载电缆实现AT89S5X的ISP编程
端口定义表
引脚号名称数据位1nStrobe*C02D0D03D1D14D2D25D3D36D4D47D5D58D6D69D7D710nAckS611Busy*S712PES513SelectS414AutoFeed*C115nErrorS316nInitC217nSelin*C318~25GNDGND
2下载电缆的编程方法
用计算机控制下载电缆实现JTAG协议,就是对并口3个I/O端口的读写操作,用0-1的变化来模拟JTAG时序。在Win98和Win2000环境下读写I/O,需要驱动程序。本文使用DriverLINXPortI/ODriver(可以从WWW.sstnet.com下载)来实现I/O端口访问。安装DLPORTIO以后,通过调用DLPORTIO.DLL动态连接库中的
UCHARDLPORT_APID1PortReadPortUchar(INULONGPort);
VOIDDLPORT_APID1PortWritePortUchar(INULONGPort,INUCHARValue);两个函数就可以访问位于378H、379H、37AH(这是缺省的LPT1设置)的3个并口I/O端口。程序段1实现了对Altera下载电缆的一次电平赋值:
程序段1
Altera下载电缆电平赋值函数
VoidCAvrISPDlg::Setbit(){
Unsignedcharvalue=0;
If(!m_tck)value|=0x01;
If(!m_tms)value|=0x02;
If(!m_tdi)value|=0x40;
DlPortWritePortUchar(0x378,value);
Value=DlPortReadPortUchar(0x379);
If(value&0x80)m_tdo=0;
Elsem_tdo=0;
}
通过以上程序依次改变JTAG各接口I/O的电平状态,模拟JTAG协议的时序,就可以访问支持JTAG标准的各种芯片。
3ISP协议的解析与实现
对AT89S5X系列单片机ISP编程不使用JTAG协议,而使用SPI同步串行接口协议,如图3所示。
针针这种8位SPI接口协议,我们使用数组来模拟时序:
时钟信号固定为unsignedcharsck[19]={0,0,1,0,1,0,1,0,1,0,10,1,0,1,0,1,0,1,0,0};
输出的数据信号由程序实现情况自动生成数组unsignedcharmosi[19];
输入的数据根据读入的信号生成数组unsignedcharmiso[19];
再调用上文的Setbit()函数,依次发送19位的JTAG接口I/O状态,同时读入返回信号,即完成一次对AT89S5X芯片的SPI单字节访问。
在单字节访问基础上,参考Atmel公司的AT89S5X数据手册的串行 《用下载电缆实现AT89S5X的ISP编程(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/170130.html
引脚号名称数据位1nStrobe*C02D0D03D1D14D2D25D3D36D4D47D5D58D6D69D7D710nAckS611Busy*S712PES513SelectS414AutoFeed*C115nErrorS316nInitC217nSelin*C318~25GNDGND
2下载电缆的编程方法
用计算机控制下载电缆实现JTAG协议,就是对并口3个I/O端口的读写操作,用0-1的变化来模拟JTAG时序。在Win98和Win2000环境下读写I/O,需要驱动程序。本文使用DriverLINXPortI/ODriver(可以从WWW.sstnet.com下载)来实现I/O端口访问。安装DLPORTIO以后,通过调用DLPORTIO.DLL动态连接库中的
UCHARDLPORT_APID1PortReadPortUchar(INULONGPort);
VOIDDLPORT_APID1PortWritePortUchar(INULONGPort,INUCHARValue);两个函数就可以访问位于378H、379H、37AH(这是缺省的LPT1设置)的3个并口I/O端口。程序段1实现了对Altera下载电缆的一次电平赋值:
程序段1
Altera下载电缆电平赋值函数
VoidCAvrISPDlg::Setbit(){
Unsignedcharvalue=0;
If(!m_tck)value|=0x01;
If(!m_tms)value|=0x02;
If(!m_tdi)value|=0x40;
DlPortWritePortUchar(0x378,value);
Value=DlPortReadPortUchar(0x379);
If(value&0x80)m_tdo=0;
Elsem_tdo=0;
}
通过以上程序依次改变JTAG各接口I/O的电平状态,模拟JTAG协议的时序,就可以访问支持JTAG标准的各种芯片。
3ISP协议的解析与实现
对AT89S5X系列单片机ISP编程不使用JTAG协议,而使用SPI同步串行接口协议,如图3所示。
针针这种8位SPI接口协议,我们使用数组来模拟时序:
时钟信号固定为unsignedcharsck[19]={0,0,1,0,1,0,1,0,1,0,10,1,0,1,0,1,0,1,0,0};
输出的数据信号由程序实现情况自动生成数组unsignedcharmosi[19];
输入的数据根据读入的信号生成数组unsignedcharmiso[19];
再调用上文的Setbit()函数,依次发送19位的JTAG接口I/O状态,同时读入返回信号,即完成一次对AT89S5X芯片的SPI单字节访问。
在单字节访问基础上,参考Atmel公司的AT89S5X数据手册的串行 《用下载电缆实现AT89S5X的ISP编程(第2页)》