串行通讯截取数据,分析解码方式

如图截取的一段逻辑分析数据,图片波形中包含数据内容,谁帮忙分析一下这种编码方式及解码方法,数据采用的LSB排列
,波特率为6Mbps,发送11个字节大概需要14us,15个字节需要17us,通讯线在空闲时会不停发送6MHZ方波信号,不确定采用的那种编码方式,8b /1 0b?,4b / 5b? 5b / 4b;4b3T?曼彻斯特?PPM?不知道是哪一种

img

img

img


img

img


需要看完整数据在百度网盘,附带数据打开软件
链接:https://pan.baidu.com/s/18glc9HSeF5K_nnygBLHz2A?pwd=hch2
提取码:hch2
--来自百度网盘超级会员V6的分享

检测起始位和停止位,确定数据包的开始和结束。
检测同步位,以确定数据包的起始位置。
从数据位中提取数据,并将其解释为二进制数。
使用校验位来验证数据包的完整性。

你怎么天天都在解码啊?这个数据很眼熟啊,不就是前天那个吗,转成MSB,就是一种CRC5的校验啊

串行数据一般在通讯中由数据头、帧长度、数据段、校验段等组成,要完全的理解这个数据内容和帧格式,估计得多抓点数据进行分析。

可以借鉴下

 - 一、串口数据接收:     
         定义一个1024字节的buf,将串口接收到的数据依次追加到此buf中; 
 - 二、解析串口数据流程:
         1、从buf中检索起始字符0x68的位置,->2
         2、去匹配是否符合协议A,会有三种解析结果
             a.解析到完整的一帧数据,->5
             b.数据未接收完 ->3
             c.解析不满足规则 ->3
         3、去匹配是否符合协议B,会有三种解析结果
             a.解析到完整的一帧数据, ->5
             b.数据未接收完 ->6
             c.解析不满足规则
                 协议A也不满足规则 ->7
                 协议A未接收完 ->6
         5、解析到完整的一帧数据,->10
         6、协议匹配未接收完 ->9
         7、两个协议解析都不满足,->8
         8、从1中的位置继续寻找下一个0x68的位置
             a.找到0x68    ->1
             b.未找到0x68 ->6
         9、继续循环,等待串口数据过来
         10、解析完成,将buf中剩余数据前移到位置0

用8b /1 0b试试,感觉有点像

根据数据分析,这种编码方式可能是NRZ(非归零码)

串行通讯截取数据后,需要进行解码分析才能得到有用的信息。下面是一些常见的串行通讯协议的解码方式:

  1. ASCII码解码:对于使用ASCII码进行通讯的串口设备,可以直接将接收到的数据转换成ASCII码进行解析。
  2. Modbus协议解码:对于使用Modbus协议进行通讯的串口设备,需要根据Modbus协议的规定进行解码,包括读取寄存器、写入寄存器等操作。
  3. CAN总线解码:对于使用CAN总线进行通讯的串口设备,需要使用CAN总线解码器进行解码,包括CAN帧格式、数据格式、数据长度等信息的解析。
  4. I2C协议解码:对于使用I2C协议进行通讯的串口设备,需要根据I2C协议的规定进行解码,包括地址、数据格式、数据长度等信息的解析。
  5. SPI协议解码:对于使用SPI协议进行通讯的串口设备,需要根据SPI协议的规定进行解码,包括数据格式、数据长度等信息的解析。
    总之,不同的串行通讯协议有不同的解码方式,需要根据具体的协议规定进行解码分析。可以参考相关的协议文档或使用专门的解码工具进行解码分析。

4B3T编码是一种用于数字通信中的线路编码方式,它可以将4个二进制位映射成3个三进制符号。4B3T编码的主要作用是在数字通信中,将数字信号转换成模拟信号,从而在传输过程中减少信号失真和噪声的影响。
4B3T编码的具体过程如下:

  1. 将4个二进制位分为两组,每组2位。
  2. 对于第一组,将其转换成一个三进制符号。具体的转换方式如下:
    • 00 -> 0
    • 01 -> 1
    • 10 -> 2
    • 11 -> -1
  3. 对于第二组,也将其转换成一个三进制符号。具体的转换方式如下:
    • 00 -> 0
    • 01 -> -1
    • 10 -> 1
    • 11 -> 2
  4. 将第一组和第二组的三进制符号组合成一个6位的编码。
    4B3T编码的解码过程与编码过程相反,具体步骤如下:
  5. 将6位编码分为两组,每组3位。
  6. 对于第一组,将其转换成一个二进制数。具体的转换方式如下:
    • 0 -> 00
    • 1 -> 01
    • 2 -> 10
    • -1 -> 11
  7. 对于第二组,也将其转换成一个二进制数。具体的转换方式如下:
    • 0 -> 00
    • -1 -> 01
    • 1 -> 10
    • 2 -> 11
  8. 将第一组和第二组的二进制数组合成一个4位的解码。
    通过4B3T编码,可以将数字信号转换成模拟信号,从而在数字通信中减少信号失真和噪声的影响。

Manchester编码是一种常用的数字通信编码方式,它将数字信号转换成模拟信号,从而在传输过程中减少信号失真和噪声的影响。Manchester编码的解码过程比较简单,具体步骤如下:

  1. 将接收到的Manchester编码信号进行切分,将每个时隙分为两个等长的部分。
  2. 对于每个时隙的两个部分,分别计算其电平的变化情况。具体的计算方式如下:
    • 如果第一个部分的电平与第二个部分的电平不同,则表示该时隙的数值为1。
    • 如果第一个部分的电平与第二个部分的电平相同,则表示该时隙的数值为0。
  3. 将每个时隙的数值组合起来,即可得到解码后的数字信号。
    需要注意的是,Manchester编码的解码过程需要保证接收端和发送端的时钟同步,否则会导致解码错误。因此,在进行Manchester编码解码时,需要使用同步信号来保证时钟同步。