曼彻斯特解码同步问题

[复制链接]
8583|9
手机看帖
扫描二维码
随时随地手机跟帖
wmsmile|  楼主 | 2020-9-8 10:56 | 显示全部楼层 |阅读模式
本帖最后由 wmsmile 于 2020-9-10 17:28 编辑

请问大家一个关于曼彻斯特解码同步的问题,看到网上很多人说,11前后一定是0,00前后一定是1,可以从11或者00开始解码,这样就能做到同步,通信小白有点疑惑,11或者00前面的数据不就漏掉了吗?又或者码流中只有10101010或者01010101,不会出现11或者00,又该怎么进行同步呢?

使用特权

评论回复

相关帖子

ar_dong| | 2020-9-10 14:44 | 显示全部楼层
同步是需要建立时间的,总是要丢的,没人会在意,大不了先传点无用信号

使用特权

评论回复
wmsmile|  楼主 | 2020-9-10 17:23 | 显示全部楼层
ar_dong 发表于 2020-9-10 14:44
同步是需要建立时间的,总是要丢的,没人会在意,大不了先传点无用信号

多谢回答,了解了

使用特权

评论回复
梦幻泡影| | 2020-9-12 09:25 | 显示全部楼层
这段时间我也在折腾曼彻斯特解码,主要是用于解码ID卡的,就说说我的心得吧,曼彻斯特是用电平跳变来表示逻辑“0”和逻辑“1”的,比如说上升沿表示逻辑“1”,下降沿表示逻辑“0”,那么,按照这个规则,假如原始数据是:1101 1010,那曼彻斯特输出就是:0101100101100110,你用示波器就一定能抓到这样的信号。

使用特权

评论回复
henglin| | 2020-12-1 11:31 | 显示全部楼层
803395fc5b8d731d7b.png
447335fc5b8ea2c5c4.png

首先看懂 上面的波形图
发送的时候,注意自己的发射波形

对应解码就行了
这个基本都是用在遥控器上的 红外遥控  射频遥控  汽车遥控等等

使用特权

评论回复
henglin| | 2020-12-1 11:35 | 显示全部楼层
知道你们很懒
我就做个好人
PWM 的发送 给你写好了
这个是我写的汽车遥控钥匙 发射编码测试用的

记得给分啊

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "gpio.h"
#include "stdio.h"

/**/
#define  _RF_PWM_LL  HAL_GPIO_WritePin(mLED10_GPIO_Port,mLED10_Pin,GPIO_PIN_SET)
#define  _RF_PWM_HH  HAL_GPIO_WritePin(mLED10_GPIO_Port,mLED10_Pin,GPIO_PIN_RESET)


#define _RF_PWM_Head_Time       60      //60*50us
#define _RF_PWM_Hi_Time         6      //10*50us
#define _RF_PWM_Low_Time        14      //20*50us

volatile uint16_t cgTIMx_50US_RKE;



void cBCMx_RF_PWM_Head()
{
    _RF_PWM_LL;
    cgTIMx_50US_RKE=_RF_PWM_Head_Time;
    while(cgTIMx_50US_RKE){}
}
   

void cBCMx_RF_PWM_SendByte(uint8_t Data)
{
    uint8_t i;
    uint8_t tmp;
        
    for(i=0;i<8;i++)
    {
        tmp=Data;      
        tmp = (tmp<<i)&0x80;
        
        if(tmp>0)
        {
            //output 1
            _RF_PWM_HH;
            cgTIMx_50US_RKE=_RF_PWM_Hi_Time;
            while(cgTIMx_50US_RKE){};
              
            _RF_PWM_LL;
            cgTIMx_50US_RKE=_RF_PWM_Low_Time;
            while(cgTIMx_50US_RKE){};        
        }
        else
        {
            _RF_PWM_HH;
            cgTIMx_50US_RKE=_RF_PWM_Low_Time;
            while(cgTIMx_50US_RKE){};
              
            _RF_PWM_LL;
            cgTIMx_50US_RKE=_RF_PWM_Hi_Time;
            while(cgTIMx_50US_RKE){};      

        }      
   
    }
}


void cBCMx_RF_PWM_Send(uint8_t *buf ,uint8_t len)
{
    uint8_t i;
   
    cBCMx_RF_PWM_Head();
    for(i=0;i<len;i++) cBCMx_RF_PWM_SendByte(buf[i]);
   
}




void cBCMx_RF_PWM_Test(void)
{
    uint8_t sc[]={0x01,0x02,0xf0,0xf7,0x55,0x88,0x99,0xaa,0xbb,0xcc};
   
    cBCMx_RF_PWM_Send(sc,10);   

}


使用特权

评论回复
henglin| | 2020-12-1 11:42 | 显示全部楼层
最近我也在写 manchester 解码  等我写好了 再分享

使用特权

评论回复
henglin| | 2020-12-4 19:01 | 显示全部楼层
今天终于把曼彻斯特解码 写出来了

接收非常好

使用特权

评论回复
小傻哥muzii| | 2021-8-29 16:10 | 显示全部楼层
henglin 发表于 2020-12-4 19:01
今天终于把曼彻斯特解码 写出来了

接收非常好

求分享

使用特权

评论回复
henglin| | 2021-9-25 13:38 | 显示全部楼层

哈哈你要啊

私发吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

0

粉丝