曼彻斯特解码同步问题

[复制链接]
9409|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 | 显示全部楼层



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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

记得给分啊

  1. /* Includes ------------------------------------------------------------------*/
  2. #include "main.h"
  3. #include "gpio.h"
  4. #include "stdio.h"

  5. /**/
  6. #define  _RF_PWM_LL  HAL_GPIO_WritePin(mLED10_GPIO_Port,mLED10_Pin,GPIO_PIN_SET)
  7. #define  _RF_PWM_HH  HAL_GPIO_WritePin(mLED10_GPIO_Port,mLED10_Pin,GPIO_PIN_RESET)


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

  11. volatile uint16_t cgTIMx_50US_RKE;



  12. void cBCMx_RF_PWM_Head()
  13. {
  14.     _RF_PWM_LL;
  15.     cgTIMx_50US_RKE=_RF_PWM_Head_Time;
  16.     while(cgTIMx_50US_RKE){}
  17. }
  18.    

  19. void cBCMx_RF_PWM_SendByte(uint8_t Data)
  20. {
  21.     uint8_t i;
  22.     uint8_t tmp;
  23.         
  24.     for(i=0;i<8;i++)
  25.     {
  26.         tmp=Data;      
  27.         tmp = (tmp<<i)&0x80;
  28.         
  29.         if(tmp>0)
  30.         {
  31.             //output 1
  32.             _RF_PWM_HH;
  33.             cgTIMx_50US_RKE=_RF_PWM_Hi_Time;
  34.             while(cgTIMx_50US_RKE){};
  35.               
  36.             _RF_PWM_LL;
  37.             cgTIMx_50US_RKE=_RF_PWM_Low_Time;
  38.             while(cgTIMx_50US_RKE){};        
  39.         }
  40.         else
  41.         {
  42.             _RF_PWM_HH;
  43.             cgTIMx_50US_RKE=_RF_PWM_Low_Time;
  44.             while(cgTIMx_50US_RKE){};
  45.               
  46.             _RF_PWM_LL;
  47.             cgTIMx_50US_RKE=_RF_PWM_Hi_Time;
  48.             while(cgTIMx_50US_RKE){};      

  49.         }      
  50.    
  51.     }
  52. }


  53. void cBCMx_RF_PWM_Send(uint8_t *buf ,uint8_t len)
  54. {
  55.     uint8_t i;
  56.    
  57.     cBCMx_RF_PWM_Head();
  58.     for(i=0;i<len;i++) cBCMx_RF_PWM_SendByte(buf[i]);
  59.    
  60. }




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

  66. }


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

粉丝
快速回复 在线客服 返回列表 返回顶部