切换到宽版
  • 384阅读
  • 4回复

[ARM]LPC2132串口通信接收数据丢失,求助。 [复制链接]

上一主题 下一主题
离线蓝昊王
 

发帖
180
M币
416
专家
1
粉丝
19
想用超级终端的XMODEM协议往SPI字库里面送数据,可是发现LPC接收的数据出现丢失现象,但是用串口助手发送接收的小段数据正确。串口中断接收和非中断接收都出现同样的错误。错误具体如图。我的操作过程是:先用Launch LPC210x_ISP.exe下载HEX代码到LPC2132 RAM里面,关闭Launch LPC210x_ISP,打开超级终端选择XMODEM协议发送一个BIN文件,LPC接收完成后,发送到超级终端进行校验。出错。。

本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
离线bg4rff

发帖
1007
M币
820
专家
3
粉丝
11
只看该作者 1楼 发表于: 03-19
BIN文件中有符合XMODEM协议特殊符号吧
本帖最近打赏记录:共1条打赏M币+8
蓝昊王 M币 +8 熱心助人 03-19
离线蓝昊王

发帖
180
M币
416
专家
1
粉丝
19
只看该作者 2楼 发表于: 03-19
回 bg4rff 的帖子
bg4rff:BIN文件中有符合XMODEM协议特殊符号吧 (2017-03-19 14:44) 回 bg4rff 的帖子

谢谢你回答,BIN文件中有XMODEM协议的控制字符,但是它是传送的数据会被打包到了偏移3-128量内。不足128字节的地方会被0X1A添充。不会出现在控制字符内,所以不会影响通信。

问题原因找到了,是我范晕了。
    UART0_SendData(RACK);  //·¢ËÍÓ¦´ð

    UART0_SendStr("\r\nXMODEMʵÑé ¿ªÊ¼Ð£Ñé\r\n");    

for(p=0;p<(1024*3);p++){
     my_Sendone(mybuf[p]);
//     UART0_SendData(mybuf[p++]);        这里出错了第二次的p++.......    
}        
while(1);
本帖最近打赏记录:共1条打赏M币+3
bg4rff M币 +3 歡迎探討 03-19
离线chenlei1910

发帖
10827
M币
514
专家
1
粉丝
33
只看该作者 3楼 发表于: 03-19
奖励!
每人最多可获奖1次,奖池剩余267M币 (中奖几率100%)
离线蓝昊王

发帖
180
M币
416
专家
1
粉丝
19
只看该作者 4楼 发表于: 03-20
回 bg4rff 的帖子


bg4rff:
BIN文件中有符合XMODEM协议特殊符号吧 回 bg4rff 的帖子

如果数据包中的最后一个数据是0X1A,确实不好分辨出是数据还是填充了。不知道有什么好办法。
还有就是如果数据包是128的整倍数,就会没有填充。结果是不好进行文件大小的精确计数了。看来我只能把最后一个数据包完全接收了

回 bg4rff 的帖子
0X10A3是一个文件的真实大小,但是如果进行精确分辨,则无法识别128整倍数的文件,while(mybuf[p--]!=0x1a);  while(mybuf[p--]==0x1a);会陷入死循环,即使找到了0X1A也不是真实的填充了。
0X2000是另一个文件的真实大小,它是128的整倍数。
0X1100和0X10A3是同一个文件,0X1100是不识别0X1A填充的情况,不会死循环。
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
快速回复
限80 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个