STM32红外串口接收

本文详细介绍了红外遥控的NEC协议,包括PWM和PPM两种调制方式。重点讲解了STM32红外串口接收的电路设计、通信协议结构、地址码的判断方法,以及利用外部中断进行高电平检测的思路。提供了实现红外通信的基础知识和关键步骤。
摘要由CSDN通过智能技术生成

1.NEC协议
现有的红外遥控包括两种方式: PWM(脉冲宽度调制)和PPM(脉冲位置调制)。
两种形式编码的代表分别为NEC 和 PHILIPS的RC-5、RC-6以及将来的RC-7。

PWM(脉冲宽度调制):以发射红外载波的占空比代表"0”和"1"。为了节省能量,一般情况下,发射红外载波的时间固定,通过改变不发射载波的时间来改变占空比。例如常用的电视遥控器,TOSHIBA的TC9012,其引导码为载波发射4. 5ms,不发射4.5ms,其"0"为载波发射0.56ms,不发射0.565ms,其"1"为载波发射0.56ms,不发射1.69ms。

PPM(脉冲位置调制)∶以发射载波的位置表示"0"和"1"。从发射载波到不发射载波为"0",从不发射载波到发射载波为"1"。其发射载波和不发射载波的时间相同,都为0.68ms,也就是每位的时间是固定的。

2.电路图:三条线,VCC 、GND、DATA
在这里插入图片描述

3.通信协议图,总共4*8=32位数据。
在这里插入图片描述

4.地址码,持续时间1690us为数据"1",持续时间560us为数据"0"。
他们低电平部分560us相同,可以省略判断,直接根据高电平持续时间来判断是数据0还是数据1。
通过测量不同的高电平持续时间,就能够知道当前的信号是引导码、比特0、比特1。
地址码
在这里插入图片描述

思路:

红外发射头发射红外,相当于按下按键,变为高电平。 红外发射头停止发射,相当于松开按键,变为高电平,默认的时候是高电平。
所以采用外部中断来触发。

5.代码

#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_usart.h"
#include "stdio.h"

static GPIO_InitTypeDef  	GPIO_InitStructure;
static USART_InitTypeDef 	USART_InitStructure;
static NVIC_InitTypeDef 	NVIC_InitStructure;		
static EXTI_InitTypeDef   	EXTI_InitStructure;

static volatile uint8_t 	g_ir_data[4]={
   0};
static volatile uint32_t	g_ir_event=0;


//重定义fputc函数 
int fputc(int ch, FILE *f)
{
    	
	USART_SendData(USART1,ch);
	while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);  
	
	return ch;
}   

void delay_us(uint32_t nus)
{
   		
	uint32_t temp;	    	 
	SysTick->LOAD =SystemCoreClock/8/1000000*nus; 	//时间加载	  		 
	SysTick->VAL  =0x00;        					//清空计数器
	SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; 		//使能滴答定时器开始倒数 	 
	do
	{
   
		temp=SysTick->CTRL;
	}while((temp&0x01)&&!(temp&(1<<16)));			//等待时间到达   
	SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; 		//关闭计数器
	SysTick->VAL =0X00;       						//清空计数器 
}

void delay_ms(uint16_t nms)
{
   </
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值