找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 912|回复: 31
打印 上一主题 下一主题
收起左侧

单片机无线遥控波形图解码求助

[复制链接]
跳转到指定楼层
楼主


请教各位大神,这是一个接收机收到无线遥控器其中一个按键后的从DATA口的输出波形图,我想用STM32单片机的一个IO脚来接收并解码这个信号,低电平表示0码,高电平表示1码,存储到一组数据中,我参考了stm32红外接收解码的教程,但是NEC的0码1码的位宽是不相同的,而这个是0码1码位宽都相同,现在陷入困境中,望各位大师帮小弟看看有什么方法可以写出解码,谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2024-1-29 14:46 | 只看该作者
如果第一个位元一定是0
那就设置一个420us中断
连续扫到高电平就代表收到头帧
然后就可以读40个电平
回复

使用道具 举报

板凳
ID:828160 发表于 2024-1-29 16:38 | 只看该作者
把逻辑分析仪测到的波形数据保存一下,然后上传,这样别人才方便看到更多细节,你这个图片一放大就看不清了。
回复

使用道具 举报

地板
ID:828160 发表于 2024-1-29 16:39 | 只看该作者
把每个按键的数据都用逻辑分析仪测一下,然后对比,找出共同点和不同点,然后才好写解码程序
回复

使用道具 举报

5#
ID:450849 发表于 2024-1-29 17:10 | 只看该作者
先找到头,再记录分别记录每个高低电平宽度,再统计高低电平个数。
回复

使用道具 举报

6#
ID:1102016 发表于 2024-1-29 21:40 | 只看该作者
这个是波形数据

Session 102.rar

2.13 KB, 下载次数: 7

回复

使用道具 举报

7#
ID:73992 发表于 2024-1-30 00:30 | 只看该作者
依次是0x7F,0X52,0XD1,0XF3,0X84,0XB5一共6个字节。我根据第一幅图猜的
回复

使用道具 举报

8#
ID:828160 发表于 2024-1-30 12:35 | 只看该作者
lyonkon 发表于 2024-1-30 00:30
依次是0x7F,0X52,0XD1,0XF3,0X84,0XB5一共6个字节。我根据第一幅图猜的

明显是错的,不要在这误导人
回复

使用道具 举报

9#
ID:828160 发表于 2024-1-30 12:37 | 只看该作者
我看了你发的波形,大概知道怎么解了,如果愿意%,我可以提供程序和思路
回复

使用道具 举报

10#
ID:73992 发表于 2024-1-30 15:47 来自手机 | 只看该作者
单片机研究协会 发表于 2024-1-30 12:35
明显是错的,不要在这误导人

逆向工程,允许猜测,允许测试错误。我按照上图直观的猜测,按高低脉冲平均时间,作为1bit时间。图上显示是47位。我按照最高位补0或者最低位补0进行分析。如果错了,你可以指明。
回复

使用道具 举报

11#
ID:828160 发表于 2024-1-30 18:15 来自手机 | 只看该作者
lyonkon 发表于 2024-1-30 15:47
逆向工程,允许猜测,允许测试错误。我按照上图直观的猜测,按高低脉冲平均时间,作为1bit时间。图上显示 ...

你猜错了,不是你想的那样
回复

使用道具 举报

12#
ID:73992 发表于 2024-1-30 20:51 | 只看该作者
单片机研究协会 发表于 2024-1-30 18:15
你猜错了,不是你想的那样

或许我猜错了,但是可以用。用单片机以我说的值,模拟这段波形时序,发送或者接受。就可以不需要知道具体的值。如果这个值能用 你说是错的吗。
我也可以随便说,某某错了 如何如何。但是,我说某人哪里错了的时候,我必须拿出依据。
回复

使用道具 举报

13#
ID:828160 发表于 2024-1-31 02:06 来自手机 | 只看该作者
lyonkon 发表于 2024-1-30 20:51
或许我猜错了,但是可以用。用单片机以我说的值,模拟这段波形时序,发送或者接受。就可以不需要知道具体 ...

也许你以前做过类似的解码,不过这个跟你之前做过的不一样。
因为我知道正确答案,所以可以确定你猜错了。
回复

使用道具 举报

14#
ID:73992 发表于 2024-1-31 13:00 | 只看该作者
单片机研究协会 发表于 2024-1-31 02:06
也许你以前做过类似的解码,不过这个跟你之前做过的不一样。
因为我知道正确答案,所以可以确定你猜错了 ...

正确的值,也要符合时序。相同的时序,可以用不同的系统和编码来实现。上图时序可以按自己的方式,或者符合自己单片机的方式进行编码。保持发送和接收时序正确。
至于你说的什么正确的值,我丝毫不会介意。因为优化系统和时序的时候,用到你说的那个值的几率不高。
你硬要说别人的值或者方案是错的。那你继续
回复

使用道具 举报

15#
ID:1102016 发表于 2024-1-31 13:45 | 只看该作者
Session 11.zip (7.18 KB, 下载次数: 7)
我把一共9个按键的波形都放上来,麻烦各位老师帮我指点一下
回复

使用道具 举报

16#
ID:1102016 发表于 2024-2-21 00:54 | 只看该作者

各位老师,我用这个代码勉强能显示出来,请问该怎样写函数把这些数据保存到一个数组里?
回复

使用道具 举报

17#
ID:73992 发表于 2024-2-21 19:41 | 只看该作者
weispan 发表于 2024-2-21 00:54
各位老师,我用这个代码勉强能显示出来,请问该怎样写函数把这些数据保存到一个数组里?

可以用stm32 usart 假设一个波特率然后尝试接受遥控器数据。接受到的数据用dma存入片内sram 。然后在线调试,可以在内存里查看接受到的值,然后微调波特率直到满意为止。
回复

使用道具 举报

18#
ID:828160 发表于 2024-2-22 09:05 | 只看该作者
这个波形其实很简单的,你们都想复杂了,如果顶帖到100楼,我就公布解码方法和解码出的正确数据
回复

使用道具 举报

19#
ID:1102016 发表于 2024-2-23 02:00 | 只看该作者

各位老师,我改成 usart接收 只有把波特率改到4800,一直按住遥控的一个按键才能收到这些码,其它波特率都显示都是两个重复数字,我看到这些码有相同的,但通过计算器转换发现和这个按键的逻辑分析仪捕捉的数据又不一样,不知如何是好?

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

20#
ID:73992 发表于 2024-2-23 17:26 | 只看该作者
weispan 发表于 2024-2-23 02:00
各位老师,我改成 usart接收 只有把波特率改到4800,一直按住遥控的一个按键才能收到这些码,其它波特率 ...

比如每按下左键,STM32usrat总是接收到  0x70 82 33 66 55.然后将这一组数据写入程序。
usart每收到一组数据,与你设定的数据对比。如果相同灯亮。如果不同,进行下一组数据对比。
回复

使用道具 举报

21#
ID:828160 发表于 2024-2-23 17:34 | 只看该作者
lyonkon 发表于 2024-2-23 17:26
比如每按下左键,STM32usrat总是接收到  0x70 82 33 66 55.然后将这一组数据写入程序。
usart每收到一组 ...

这是错误的数据
回复

使用道具 举报

22#
ID:73992 发表于 2024-2-23 19:07 | 只看该作者

我不愿意再为这个方案去争,我只是说出来我的方法。楼主愿意用哪种方案去逆向,是楼主自己决定。
但是我不认为,我的方案不行。
回复

使用道具 举报

23#
ID:828160 发表于 2024-2-26 09:55 | 只看该作者
lyonkon 发表于 2024-2-23 19:07
我不愿意再为这个方案去争,我只是说出来我的方法。楼主愿意用哪种方案去逆向,是楼主自己决定。
但是我 ...

不愿意争就不要再回复了
回复

使用道具 举报

24#
ID:73992 发表于 2024-2-26 21:22 | 只看该作者
单片机研究协会 发表于 2024-2-26 09:55
不愿意争就不要再回复了

是说以我的这个方案不和你争。但人家愿意问,我就愿意回答。有原理说原理,有依据说依据。科学是大家的,螳臂挡车是徒劳且无效的。
回复

使用道具 举报

25#
ID:828160 发表于 2024-2-27 10:01 | 只看该作者
昨天看了一个短视频让我深有感触《我不帮你谁帮你》,回想自己刚入门的时候也是遇到了很多困难,也得到过很多热心前辈的帮助。这里我就公布正确答案,这个波形是UART,是大多数入门单片机所学的第一个通讯接口,这个UART的波特率是2400。


从上面这个图片可以看出最小的频率是2425,由此可以看出波特率是2400。


这样设置解码,就可以用UART,2400波特率解码这个协。


这样就得到了解码后的数据,
一共4个字节,0xA5,0xF1,0x0E,0x5A
很明显0xA5和0x5A是反码,0xF1和0x0E是反码,就是由这点我可以确定我这个方法解码出的数据就是正确的数据。



另一个波形图解码出的数据,
1、0xA5,0x8A,0x75,0x5A
2、0xA5,0xB5,0x4A,0x5A
由此可以看出第1个数据是摇控器的地址,第2个数据是摇控器的键码,第3个数据是摇控器键码的反码,第4个数据是摇控器地址的反码。

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

26#
ID:1102016 发表于 2024-2-28 00:05 | 只看该作者

感谢各位老师在百忙中抽空来热情指导,分析研究指正帮助小弟,真的很感激不尽!另外,
特别感谢单片机研究协会老师的分享!令小弟茅塞顿开 ,谢谢老师!但是小弟有个地方不是很理解,如图中老师所说第二个数据这里是0XB5,可是通过计算器转换和图中逻辑分析仪的显示的波形不是很相同,请问是什么导致的?
回复

使用道具 举报

27#
ID:828160 发表于 2024-2-28 15:09 | 只看该作者
你只需要计算打点的位置,UART的数据包含起始信号(固定为0),8位数据,停止信号(固定为1),UART一个字节有10位数据
回复

使用道具 举报

28#
ID:1102016 发表于 2024-2-28 15:24 | 只看该作者

单片机研究协会老师你好,按你的指导把UART设置成2400 按这个波形对应的按键,但收到的和逻辑分析的数据不一样,请问是会是什么原因导致的?
回复

使用道具 举报

29#
ID:1102016 发表于 2024-2-28 16:11 | 只看该作者

老师你好,我这两个地方是不是还需要设置才能正确显示吗?
回复

使用道具 举报

30#
ID:828160 发表于 2024-2-28 22:12 | 只看该作者
你先试一下能不能用2400的波特率发数据,如果不能用2400波特率发数据,也就不能用2400波特率接收数据,有可能是波特率太低了,UART所在的APB时钟太高了,降低UART所在的APB时钟试一下。
回复

使用道具 举报

31#
ID:1102016 发表于 2024-2-29 14:34 | 只看该作者

老师你好,按照你的提示,在USART1这里由48改成8后能正确显示出来了,太感谢!
回复

使用道具 举报

32#
ID:828160 发表于 2024-2-29 18:03 | 只看该作者
很少见到无线摇控器用UART发数据的,这样收发的程序都比较简单了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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