一、简介 本文介绍STM8L系列如何使用红外发射管发射38K信号。 其中,红外协议采用为最常见的NEC协议,38K信号由定时器产生。
二、实验平台 编译软件:IAR for STM8 1.42.2 硬件平台:stm8l101f3p6开发板 仿真器:ST-LINK 库函数版本:STM8L_STMTouch_Lib_V1.1.0
三、版权声明 声明:喝水不忘挖井人,转载请注明出处。 原文地址:http://blog.csdn.NET/feilusia
四、硬件原理 1、发射管元器件
附淘宝链接: https://detail.tmall.com/item.htm?spm=a1z10.3-b.w4011-3079905380.29.6Sd192&id=16965424268&rn=40b8f46057241ffac5e0d72df2c9b8d7&abbucket=14
2、原理图
上图的蓝色部分为红外发射部分,R2为红外距离调节的电阻,阻值越小、距离越远。
五、基础知识 1、什么是红外? 答:红外是红外线的简称。红外是一种波长范围为760nm~ 1mm的电磁波,可以实现数据的无线传输,距离大概十几米以内,且需要对准接收端进行发射。 红外的成本比其它无线设备要低的多,所以家电遥控器大多采用红外控制。常见的红外设备:电视遥控器、空调遥控器等。 遥控器的基带通信协议有很多,大概有几十种。常见的红外协议: ITT 协议、NEC 协议(最常见)、Sharp 协议、Philips RC-5 协议、Sony SIRC 协议等。
2、什么是NEC协议? 答:NEC协议的数据格式:引导码、用户码、用户反码、键码、键码反码、停止位。
注意几点: 1)上图黑色部分为一定频率(如38K)的载波,并不是长时间的高电平。该载波可通过定时器定时翻转IO口或PWM来产生。 2)上图为发射端的信号波形,由于接收端空闲时为高电平、接收到载波时为低电平,因此接收端的信号波形与发射端信号波形完全相反,接收端信号波形如下图
3)时序如下: ①引导码:9ms 的载波+4.5ms 的空闲。
②比特值“0”:560us 的载波+560us 的空闲。
③比特值“1”:560us 的载波+1.68ms 的空闲。 4)举例(上图的接收信号波形来读数据): ①引导码:9ms 的载波+4.5ms 的空闲。 ②用户码:0x00。 ③用户码反码:0xFF。
④键码:0x30。 ⑤键码反码:0xCF。 ⑥停止位。所以解析出来的红外键值为:0x00FF30CF(4个字节)。
3、本文中编码红外发射的流程是如何的?
答: 1)使用定时器2产生一个13us的定时中断(当13us翻转一次IO,产生的就是38K的频率)。 2)当需要发送红外键值时,按上图的NEC时序依次发送:引导码、用户码、用户反码、键码、键码反码、停止位。
六、实验前提 在进行本文步骤前,请先阅读并实现以下博文: 1、《STM8L之timer2》:http://blog.csdn.NET/feilusia/article/details/53167211
七、实验步骤
3)工程中添加GUA_Infrared_Send.c
4)添加驱动的路径
[cpp] view plain copy
注意USER文件夹是与“Project”等文件夹同级的自定义文件,用于存放香瓜写的代码。
3、写中断服务函数(stm8l10x_it.c中)
八、实验结果 1、信号波形 利用与发射端相匹配的红外接收头将红外信号接收下来,同时使用逻辑分析仪抓取信号,如下图:
经解析此接收到的键值即为发射端发射的0x00FF00FF键值。
2、功耗 不开低功耗的正常运行时,功耗为2.5mA,发射红外信号时功耗为3.5mA。
3、阻值 当前实测红外调节距离的阻值为51欧姆,场地有限实测3~4米没问题。
|