用UART做文件传输(采用Xmodem协议)V1.1-Dec8,2005中文版19,InnovationFirstRoad•SciencePark•Hsin-Chu•Taiwan300•R.O.C.Tel:886-3-578-6005Fax:886-3-578-4418E-mail:mcu@sunplus.com.cn用UART做文件传输(采用Xmodem协议)©SunplusTechnologyCo.,Ltd.PAGE2V1.1–Dec.8,2005版权声明凌阳科技股份有限公司保留对此文件修改之权利且不另行通知。凌阳科技股份有限公司所提供之信息相信为正确且可靠之信息,但并不保证本文件中绝无错误。请于向凌阳科技股份有限公司提出订单前,自行确定所使用之相关技术文件及规格为最新之版本。若因贵公司使用本公司之文件或产品,而涉及第三人之专利或著作权等智能财产权之应用及配合时,则应由贵公司负责取得同意及授权,本公司仅单纯贩售产品,上述关于同意及授权,非属本公司应为保证之责任。又未经凌阳科技股份有限公司之正式书面许可,本公司之所有产品不得使用于医疗器材,维持生命系统及飞航等相关设备。用UART做文件传输(采用Xmodem协议)©SunplusTechnologyCo.,Ltd.PAGE3V1.1–Dec.8,2005目录页1系统概要.............................................................................................................................................51.1系统说明............................................................................................................................51.2Xmodem简介.......................................................................................................................51.3Xmodem协议.......................................................................................................................51.3.1相关说明............................................................................................................51.3.2协议简介............................................................................................................51.3.3校验和信息包.....................................................................................................61.3.4CRC校验信息包...................................................................................................71.4系统组成............................................................................................................................92软件说明...........................................................................................................................................102.1软件说明..........................................................................................................................102.2档案构成..........................................................................................................................102.3子程序说明.......................................................................................................................103程序范例...........................................................................................................................................133.1DEMO程序.........................................................................................................................133.2文件传输..........................................................................................................................154MCU使用资源...................................................................................................................................194.1MCU硬件使用资源说明....................................................................................................195参考文献...........................................................................................................................................26用UART做文件传输(采用Xmodem协议)©SunplusTechnologyCo.,Ltd.PAGE4V1.1–Dec.8,2005修订记录版本日期编写及修订者编写及修订说明1.02004/01/13初版1.12005/12/08错误校正用UART做文件传输(采用Xmodem协议)©SunplusTechnologyCo.,Ltd.PAGE5V1.1–Dec.8,20051系统概要1.1系统说明本应用例使用SPMC75F2413A的UART完成文件的Upload(PC-SPMC75F2413A),通过Xmodem文件传输协议的支持达到很好的传输效果。从而为大量数据的传输及驱动程序的重载提供了一个可行的实施方法。1.2Xmodem简介FTP即FileTransferProtocol的缩写,串行通信的文件传输协议主要有:Xmodem、Ymodem、Zmodem和KERMIT等。Xmodem协议一般支持128字节的数据包,并且支持一般校验和、CRC两种校验方式,在出现数据包错误的情况下支持多次重传(一般为10次)。Xmodem协议传输由接收程序和发送程序完成。先由接收程序发送协商字符,协商校验方式,协商通过之后发送程序就开始发送数据包,接收程序接收到完整的一个数据包之后按照协商的方式对数据包进行校验。校验通过之后发送确认字符,然后发送程序继续发送下一包;如果校验失败,则发送否认字符,发送程序重传此数据包。1.3Xmodem协议1.3.1相关说明1、定义:SOH01H、EOT04H、ACK06H、NAK15H、CAN18H。2、UART格式:Asynchronous、8data-bits、noparity、onestop-bit。1.3.2协议简介Xmodem协议是由WardChritensen于70年代提出并实现的,传输数据单位为信息包,包含一个标题开始字符SOH,一个单字节包序号,一个包序号的补码,128个字节数据和一个单字节的校验和。它把数据划分成128个字符的小包进行发送,每发送一个小包都要检查是否正确,如果信息包正确接收方发送一个字节ACK的应答;有错重发则发送一个字节NAK应答,要求重发。因此Xmodem是一种发送等待协议,具有流量控制功能。优点:简单通用,几乎所有通信软件都支持该协议。缺点:慢。检验和信息包格式如图1-1所示。StartOfHearderPacketNumber~(PacketNumber)PacketDataCheckSumByte1Byte2Byte3Byte4--131Byte132图1-1检验和信息包格式用UART做文件传输(采用Xmodem协议)©SunplusTechnologyCo.,Ltd.PAGE6V1.1–Dec.8,2005Xmodem协议的数据包格式在90年代经过一次修改,传输数据单位仍为信息包,包含一个标题开始字符SOH,一个单字节包序号,一个包序号的补码,128个字节数据和一个双字节的CRC16校验。所以新的协议格式信息包如图1-2所示。StartOfHearderPacketNumber~(PacketNumber)PacketData16-BitCRCByte1Byte2Byte3Byte4--131Byte132--133图1-2CRC校验信息包格式1.3.3校验和信息包1、校验和信息包SOHblk#255-blk#--128databytes--cksum其中:SOH=01hexblk#=信息包序号,从01开始以发送一包将加1,加到FFhex将循环。255-blk#=信息包序号的补码。cksum=保留字节,丢掉进位的和校验。2、校验和方式数据传输流程接收方要求发送方以校验和方式发送时以NAK来请求,发送方将对此做出应答。如表1-1所示传输5包数据的示意过程。表1-1校验和数据传输过程SenderFlowReceiver---NAKTimeoutafter3Second---NAKSOH0x010xFEData[0-127]Chksum---PacketOK---ACKSOH0x020xFDData[0-127]Chksum---Linehitduringtransmission---NAKSOH0x020xFDData[0-127]Chksum---PacketOK---ACKSOH0x030xFCData[0-127]Chksum---PacketOKACKgetgarbaged---AC