实验要求:
接收红外遥控器的按键信号,把按键信号发射到PC机上显示
任务拆分:
- 接收并解码红外按键信号
- 串口printf显示 (可参考stm32例程/15-A/D/printf.h)
基础知识
UART是什么?
UART的全称为Universal Asynchronous Receiver/Transmitter,通用异步收发传输器,它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。(来源:百度百科 https://baike.baidu.com/item/UART/4429746?fr=aladdin)
总之,UART就是一个可以接收/发送字节的功能模块。
红外遥控实验(B站视频)
红外遥控原理介绍
红外遥控器采用载波的方式传送二进制编码,常用的载波频率为38khz.红外遥控器将二进制脉冲码调制在38khz的载波上,经缓冲放大后送至红外发光二极管,发射出去。
NEC协议
接收头收到的信号:
逻辑1:560us低+1680us高
逻辑0:560us低+560us高
所以可以通过计算高电平时间判断收到的数据是0还是1
数据格式:引导码、地址码、地址反码、控制码、控制反码
(怎么一次信号这么多位数啊啊啊啊啊)
硬件电路
红外接收头
正对接收头的凸起处看,从左至右,VOUT GND VDD
程序编写
程序框架
- 使能接收端口PG15及AFIO时钟,映射PG15至外部中断线上,初始化EXTI
- 编写红外解码函数(在EXTI中断处理)
- 编写主函数
- [x] 外部中断