1527 芯片
芯片定位与调制方式
1527 是一颗固定码无线遥控编码芯片,专为低成本的单向遥控设计。典型工作方式:
射频频率:315 MHz 或 433 MHz(由外部声表/晶振和发射电路决定)
调制方式:OOK (开关键控),即发射载波的有无代表数据
数据发送:按下按键后,同一帧数据会以约 10 ms 的间隔重复发送,直到松手
数据结构
一帧完整数据由同步头和 24 位数据(20 位地址 + 4 位按键值)组成,每发完一帧会有一段较长的低电平间隙,然后重复下一帧
1 | [同步头] + [数据] + 间隙…… 再重复 |
同步头:一个宽高电平脉冲,用来唤醒接收端并标志一帧的开始
数据位:24 位,包含 C0~C19(地址码) 和 D0~D3(数据码),不同芯片手册的位序可能不同,但原理一致
编码方式
1527 采用脉宽调制来表示一位数据,每一位由 “一个高电平 + 紧随的一个低电平” 组成,高低电平的宽度比例决定逻辑值
以常见的 4T/12T 方案为例(T 为时钟基本周期,由外接振荡电阻决定):
逻辑 0:高电平 ≈ 4T,低电平 ≈ 12T(高短低长)
逻辑 1:高电平 ≈ 12T,低电平 ≈ 4T(高长低短)
接收端可以通过测量每个高电平的宽度来区分 0/1
有的芯片或接收方案也可能是 1T/3T 或 3T/1T,但本质上都是 “短高长低” 表示 0,”长高短低” 表示 1
地址码与数据码
地址码(20 位)
由芯片的 A0~A19 管脚通过三态编码确定:接地(0)、接正(1)或悬空(浮动)
这 20 位决定了遥控器的 “身份”,出厂时或现场跳线来设置,保证不同遥控器间不冲突
数据码(4 位)
对应 D0~D3 按键输入,通常低电平有效,内部上拉,按下某键后对应位发送 “1” 数据,其余为 “0”。例如按下 D2 键,则数据码为 0100
有的 1527 芯片支持组合键,即同时按下多键会送出多位 1
发射与接收流程
发射端:按键按下 → 1527 按地址、按键生成数据帧 → 通过 DATA 脚输出编码脉冲 → 控制 433/315 MHz 发射模块(ASK 方式)发射出去
接收端:超再生或超外差接收模块解调出脉冲 → 送至 1527 解码芯片(如 EV1527 配套的解码器,或与 PT2272 类似的方案)或单片机进行软件解码
解码器核对两帧以上地址匹配后,输出对应的按键电平
实战案例
工控大楼的道闸怎么坏了

EM1527 是常见的 433MHz/315MHz 无线遥控编码芯片协议,经常用于道闸、卷帘门、遥控开关等设备
协议数据一般为 24 bit,也就是 6 个十六进制字符
它通常使用 OOK/ASK 调制,也就是:
1 | 有载波 = 高电平 |
题目附件给的是某种原始无线 IQ 采样数据
常见 SDR 原始采样格式是:
1 | I, Q, I, Q, I, Q ... |
用 Python 读取后,将相邻两个字节作为一组 I/Q
1 | raw = np.fromfile(path, dtype=np.int8) |
为了把 OOK 信号还原成高低电平,需要计算幅度
1 | # mag2 大时,表示有载波,即高电平;当 mag2 接近 0 时,表示无载波,即低电平 |
对幅度做一个简单平滑,然后设置阈值
1 | env = np.convolve(mag2, np.ones(100) / 100, mode="same") |
这样可以得到类似逻辑分析仪中的高低电平序列
1 | 高电平 低电平 高电平 低电平 ... |
本题中观察到的编码方式有点不同
1 | 1 = 长高电平 + 短低电平 |
也就是
1 | bit 1: HHH + L |
从信号中截取一帧,统计高低电平长度后,可以得到类似下面的脉冲序列
1 | 高 2324 低 853 |
按规则解码得到 24 位二进制
1 | 101010110010110010000001 |
转 ASCII 码是 AB2C81
所以 flag 就是 flag{ab2c81}
1 | import numpy as np |