BestHYY

Results 7 comments of BestHYY

字节数据并不完整,被打断了,我拍了一帧误码的图,数据被截成了两段,中间被63.6ms的低电平截断,应该发出的数据是2B 4D 4F 44 45 3A 61 75 72 6F 72 61 0A。被截断后示波器逻辑出现错位,后续数据出现误码 ![uart1](https://user-images.githubusercontent.com/26465140/72242024-52417c00-3623-11ea-8214-897212d50f9b.jpg) ![uart2](https://user-images.githubusercontent.com/26465140/72242025-52417c00-3623-11ea-89d0-cab99819387a.jpg) ![uart3](https://user-images.githubusercontent.com/26465140/72242026-52417c00-3623-11ea-8606-94472ea1ab4f.jpg)

这段代码是我们产品的一部分,不太好拆出来,复现概率比较大,开机前几包数据都没什么问题。我们的串口初始化为9600, 8, N, 1,使能了P0_5作为485OE使能信号,有效电平为1,启用了发送完成callback和接收数据callback,在收到AT指令处理回复、modbus报文收发中都出现了这个现象,甚至有连续12包modbus报文都被截断导致读取失败。

你好,经过测试,我们整理了可以复现该现象的代码。 使用usb-485向air202发送数据,air202会回复相同的内容,此时会出现乱码,从示波器上看,输出波形中间被高电平截断。 测试平台air202,底层lod版本 V0038_SSL [TestSerial.zip](https://github.com/openLuat/Luat_2G_RDA_8955/files/4585460/TestSerial.zip)

不是DTU固件,可以复现问题的脚本我附在附件里了,同样的代码在air720上可以正常运行,air202上输出会被截断

作者你好,我对相对寻址的地址有点疑惑,**$A7**如果按照补码预算,应该是*-89*,而如果直接把最高位视作符号位,则有**0xA7 & 0x7F = 0x27** = *39*,但是如果这样处理,会有*+0*和*-0*即**0x00**和**0x80**的问题。求教

> > 作者你好,我对相对寻址的地址有点疑惑,**$A7**如果按照补码预算,应该是*-89*,而如果直接把最高位视作符号位,则有**0xA7 & 0x7F = 0x27** = _39_,但是如果这样处理,会有*+0_和_-0*即**0x00**和**0x80**的问题。求教 > > @BestHYY 没有看懂你想表达的意思,`$00-$7f`就是正向, `$80-$ff`就是负向,而且使用补码表示 > > > 偏移量可正可负, D若为负用补码表示. 我的意思是,当偏移量为负,也就是**D & 0x80 = 0x80**的时候,这个偏移量的计算好像并不是单纯的补码运算,补码对负数的运算应该是按位取反再+1,0xA7作为8位补码,按位取反再+1后是**0x59**,加上符号位表示的数是-89,并不是-39