SN8F570310——红外_发射接收
笔记:#红外遥控的编码目前广泛使用的是: NEC Protocol 的 PWM(脉冲宽度调制)和 PhilipsRC-5 Protocol 的 PPM(脉冲位置调制)。 NEC 协议,其特征如下: 1. 8 位地址和 8 位指令长度; 2.地址和命令 2 次传输(确保可靠性) 3.PWM 脉冲位置调制,以发射红外载波的占空比代表“0”和“1”; 4.载波频率为 38Khz; 5.位时间为 1.125ms 或 2.25ms; NEC 码的位定义: 一个脉冲对应 560us 的连续载波,一个逻辑 1 传输需要 2.25ms(560us脉冲+1680us 低电平),一个逻辑 0 的传输需要 1.125ms(560us 脉冲+560us 低电平) 而遥控接收头在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,这样,我们在接收头端收到的信号为:逻辑 1 应该是 560us 低+1680us 高,逻辑 0 应 该是 560us 低+560us 高。 NEC 遥控指令的数据格式为: 同步码头、地址码、地址反码、控制码、控制反码。同步码由一个 9ms 的低电平和一个 4.5ms 的高电平组成,地址码、地址反码、控制 码、控制反码均是8 位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的可靠性(可用于校验)。 —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 红外接收发送协议 (拼接使用) 主板发送接收指令协议(ARM): 协议格式如下:引导码+控制码+控制码反码+数据码1+数据码1反码++数据码2+数据码2反码+结束码。(其中控制码占用2位,数据码1和数据码2各占用8位即两字节) 协议控制码对应事件如下: 00:电源开关 01:询问设备状态 10:控制播放 11:设置亮度 控制码对应数据码1如下: (1)当控制码为00:数据码1::0x00; (2)当控制码为01:数据码1::0x00; (3)当控制码为10:数据码1::8位代表播放内容列表ID(0x00~0xFF); (4)当控制码为11:数据码1::0x00; 控制码对应数据码2如下: (1)当控制码为00:数据码2::0xFF-关机,0x00-开机; (2)当控制码为01:数据码2::0x00-普通模式,0x01-拼接主机模式,0x02-拼接从机模式1(中间从机),0x03-拼接从机模式2(末端从机); (3)当控制码为10:数据码2::当前播放内容对应的贞序号(0x00~0xFF); (4)当控制码为11:数据码2::0x00-调暗,0xFF-调亮;(亮度是否分级操作?) 协议格式例举如下: 开机:引导码+00+11+0x00+0xff+0x00+0xff+结束码 关机:引导码+00+11+0x00+0xff+0xff+0x00+结束码 引导码:5ms高电平+5ms低电平 结束码:1ms高电平 1:500us高电平+500us低电平 0:500us高电平+1500us低电平 从板发送接收协议(MCU): 协议格式如下:引导码+控制码+控制码反码+数据码1+数据码1反码++数据码2+数据码2反码+结束码。(其中控制码占用2位,数据码1和数据码2各占用8位即两字节) 协议控制码对应事件如下: 11:电源开关 10:询问设备状态 01:控制播放 00:设置亮度 控制码对应数据码1如下: (1)当控制码为11:数据码1::0xFF; (2)当控制码为10:数据码1::0xFF; (3)当控制码为01:数据码1::8位代表播放内容列表ID反码(0x00~0xFF); (4)当控制码为00:数据码1::0xFF; 控制码对应数据码2如下: (1)当控制码为11:数据码2::0x00-关机,0xFF-开机; (2)当控制码为10:数据码2::0xFF-普通模式,0xFE-拼接主机模式,0xFD-拼接从机模式1(中间从机),0xFC-拼接从机模式2(末端从机); (3) 当控制码为01:数据码2::当前播放内容对应的贞序号反码(0x00~0xFF); (4)当控制码为00:数据码2::0xFF-调暗,0x00-调亮;(亮度是否分级操作?) 协议格式例举如下: 开机:引导码+11+00+0xff+0x00+0xff+0x00+结束码 关机:引导码+11+00+0xff+0x00+0x00+0xff+结束码 引导码:5ms低电平+5ms高电平 结束码:1ms低电平 1:500us低电平+500us高电平 0:500us低电平+1500us高电平 注:主板点亮红外输出高,从板接收到红外信号会输出低电平,所以两者之间的操作指令互为反码。主板做为主发射方,从板接收到主板发射的信号后,需要发射反馈数据(当前接收到的原数据,不需要取反)给主板,当主板接收到从板发射的反馈信号数据,主板便不再发射同一操作指令。 —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 红外接收协议 (开关使用) 主机: (1)开机:00 (2)关机:01 (3)转速控制:01 控制指令数据格式如下:引导码+控制指令+控制指令反码+结束码,即: 开机:引导码+00+11+结束码 关机:引导码+01+10+结束码 转速控制:引导码+01+10+结束码 引导码:5ms高电平+5ms低电平 结束码:1ms高电平 1:500us高电平+500us低电平 0:500us高电平+1500us低电平 注:高位在前; 从机: (1)开机:00 (2)关机:01 (3)转速控制:10 控制指令数据格式如下:引导码+控制指令+控制指令反码+结束码,即: 开机:引导码+00+11+结束码 关机:引导码+01+10+结束码 转速控制:引导码+10+01+结束码 引导码:5ms低电平+5ms高电平 结束码:1ms低电平 1:500us低电平+500us高电平 0:500us低电平+1500us高电平 (注:主机点亮红外输出高,从机接收到红外信号会输出低电平,所以两者之间的控制指令互为反码) 调制载波:38kHz,占空比1/3的方波 —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 单片机代码解析: extern unsigned char IR_Control[8]; //接收命令数组及转速信息数组 IR_Control[0] IR_Control[1] IR_Control[2] IR_Control[3] unsigned char ControlCode ; //接收存储控制指令 #define CMD_ON 0x03// 00000011 #define CMD_OFF 0x06// 00000110 0x01 ~0x01 11111110 0xFE 00001111 & 0xOF 0x03 0x1111 1100 ox06 0x1111 1001 开始:0x03 1100 结束:0x06 1001 —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 拼接: 上位机(串口) ——————> (串口) mcu (红外) ——————> (红外) FPGA 上位机: MCU: FPGA : 启停指令 需求:? 上一个 下一个 暂行 开始 ? —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— 博客: https://blog.csdn.net/yc97463240/article/details/22970127?utm_source=blogxgwz8
来源:https://www.cnblogs.com/panda-w/p/12038685.html