XModem协议初步学习

1.介绍:XModem协议是一种在串口通信中广泛使用的异步文件传输协议,最早由Ward Christensen在20世纪70年代提出并实现。它分为两种版本:XModem1k-XModem,前者使用128字节的数据块,后者使用1024字节的数据块。

XModem信息包格式(128字节)
Byte1Byte2Byte3Byte4-Byte131Byte132
SOH(头)包序号包序号反码128字节的数据CRC校验和

2. 校验和的计算
        所有的数据字节都将参与和运算,由于校验和只占一个字节,如果累加的和超过255将从零开始继续累加。


3. 字段定义
<SOH> 01H
<EOT> 04H
<ACK> 06H
<NAK> 15H
<CAN> 18H

4.传输流程

   (1)接收方发送字符'C'请求以CRC16校验方式发送数据。

   (2)发送方发送数据包,接收方校验数据。

   (3)数据正确则接收方发送ACK信号,错误则发送NAK信号要求重传。

   (4)数据传输完成后,发送方发送EOT信号结束传输。

5.

------------------------------------------------------------------------------
|               SENDER                |          |          RECIEVER         |
|                                     |  <---    |  NAK                      |
|                                     |          |  Time out after 3 second  |
|                                     |  <---    |  NAK                      |
| SOH|0x01|0xFE|Data[0~127]|CheckSum| |  --->    |                           |
|                                     |  <---    |  ACK                      |
| SOH|0x02|0xFD|Data[0~127]|CheckSum| |  --->    |                           |
|                                     |  <---    |  NAK                      |
| SOH|0x02|0xFD|Data[0~127]|CheckSum| |  --->    |                           |
|                                     |  <---    |  ACK                      |
| SOH|0x03|0xFC|Data[0~127]|CheckSum| |  --->    |                           |
|                                     |  <---    |  ACK                      |
| .                                   |          |  .                        |
| .                                   |          |  .                        |
| .                                   |          |  .                        |
|                                     |  <---    |  ACK                      |
| EOT                                 |  --->    |                           |
|                                     |  <---    |  ACK                      |
------------------------------------------------------------------------------

        对于发送方仅仅支持校验和的传输方式,接收方应首先发送NAK信号来发起传输,如果发送方没有数据发送过来,需要超时等待3秒之后再发起NAK信号来进行数据传输。

        如果数据传输正确,接收方需要发送ACK信号来进行确认,

        如果数据传输有误,则发送NAK信号,发送方在接收到NAK信号之后需要重新发起该次数据传输,

       {     数据传输是否正确,通过CRC方式计算接受到的数据,得到CRC值。通过收到的CRC值和自己计算出的CRC值进行比较,来确定数据是否接受成功。       }        

        如果数据已近传输完成,发送方需要发送EOT信号,来结束数据传输。

        无条件取消数据传输:当接收方发送CAN表示无条件结束本次传输过程,发送方收到CAN后,无需发送EOT来确认,直接停止数据的发送。

        

作者:无痕幽雨
链接:XModem协议详解与实现-CSDN博客
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值