OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 604|回复: 4

潘多拉-红外+NEC协议的编解码驱动

[复制链接]

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2014-8-14
在线时间
129 小时
发表于 2024-9-26 16:12:08 | 显示全部楼层 |阅读模式
硬件平台:正点原子-潘多拉IOT开发板,STM32L475

软件平台:FreeRTOS

之前学习ESP32时,ESP32有一个外设RMT,可以直接捕获电平宽度,也可以直接输出对应电平宽度的信号;捕获的值以列表形式存储,用户根据其电平宽度(时间)解码,这种方式比较灵活,可以对应不同的红外协议。
所以本驱动也是按照这个思路,IR为红外发送,与协议无关;NEC为协议,与用什么发送无关:
1.解码:
IR:使用定时器捕获功能,以下降沿为开始,到相反边沿时记录电平宽度的时间并同时开始为下一次电平宽度计时,低电平和高电平各自存储在同一个结构体但不同的缓存里,并分别记录高低电平数量。
NEC:不断读取IR接收的数据,并试图解码,当数据接收完成时解码成功,返回地址和数据,如收到重复码,并大于10个重复码时,以一个固定时间间隔返回重复标志

2.编码
IR:根据发送序列里配置的逻辑0-1,持续时间,使用两个个定时器,一个输出38KHz左右的PWM,一个控制PWM的输出时间,来驱动红外发射头。
NEC:调用IR层的void IR_Send_Add(uint8_t logic, uint16_t time),将头码,地址码,地址反码,数据码,数据反码,结束码添加进发送序列,然后IR_Send_Start启动定时器。

功能:支持单按和长按,单按时立即返回结果,长按时也立即返回结果并在固定时间(可配置,几百个ms)后以固定时间间隔返回同一个结果。体验接近遥控器

应用层:
调用  if(NEC_Read(&addr, &cmd, &repeat) == 0)  接收
调用  NEC_Send(addr, data);                               发送

源码:包含定时器驱动,ir,nec
IR_NEC.zip (8.66 KB, 下载次数: 14)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
192
金钱
192
注册时间
2019-9-23
在线时间
61 小时
发表于 2024-9-27 11:18:57 | 显示全部楼层
回复 支持 反对

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2014-8-14
在线时间
129 小时
 楼主| 发表于 2024-9-27 11:28:19 | 显示全部楼层

如有好的建议,非常欢迎提出,我也好改进
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
192
金钱
192
注册时间
2019-9-23
在线时间
61 小时
发表于 2024-9-30 15:27:22 | 显示全部楼层
Cindre鞡 发表于 2024-9-27 11:28
如有好的建议,非常欢迎提出,我也好改进

请问只用一路PWM生成38Khz控制,不用调制信号可以吗?
回复 支持 反对

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2014-8-14
在线时间
129 小时
 楼主| 发表于 2024-9-30 18:58:27 | 显示全部楼层
ZH345344 发表于 2024-9-30 15:27
请问只用一路PWM生成38Khz控制,不用调制信号可以吗?

发送我用两个定时器是因为一个用于产生38k,一个控制时间,这样即使在多任务中也不受影响。你可以改为软件延时,但要保证时间在一定误差内可控即可。还有一个思路,用硬件spi的mosi也可以发射红外,具体原理可以百度
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 08:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表