打印
[应用相关]

【转】STM8L之红外发射(定时器中断产生38K信号)

[复制链接]
1311|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
焚琴煮鹤|  楼主 | 2017-2-25 12:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、简介

本文介绍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


  • $PROJ_DIR$\..\USER     

注意USER文件夹是与“Project”等文件夹同级的自定义文件,用于存放香瓜写的代码。



3、写中断服务函数(stm8l10x_it.c中)



八、实验结果

1、信号波形

利用与发射端相匹配的红外接收头将红外信号接收下来,同时使用逻辑分析仪抓取信号,如下图:


经解析此接收到的键值即为发射端发射的0x00FF00FF键值。


2、功耗

不开低功耗的正常运行时,功耗为2.5mA,发射红外信号时功耗为3.5mA。


3、阻值

当前实测红外调节距离的阻值为51欧姆,场地有限实测3~4米没问题。


发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

106

帖子

3

粉丝