OpenEdv-开源电子网

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

红外编码解码问题,请教一下各位大佬

[复制链接]

5

主题

28

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-8-8
在线时间
15 小时
发表于 2020-1-16 08:53:50 | 显示全部楼层 |阅读模式
30金钱
前段时间,闲来无事,在DIY了一个IV-18的时钟后,看到有人玩安捷伦的HCMS3966,也想玩一玩,由于是要做个便携式的时钟,所以采用了一个低功耗的芯片L432KC,打了两块板子,一个是f103c8的板子,另一个的芯片是l432kc做为红外接收,并且显示到HCMS3966上面,由于想做一个无线传输功能,而且板子的体积又要做到尽可能的小,就采用了红外编码和解码功能附上红外解码时序解析
捕获.PNG
从此图上可以看出,标准的格式是一个引导码9+4.5ms的时间,然后是4个8位的用户码,我担心数据传输的时候会出现干扰现象,就把4个用户码分别设为了地址码(功能码)+数据1码+数据2码+异或校验(用于校验数据传输是否是正确的)
数据传输包括以下几种,设定当前时间,设定当前日期,显示ascii码,
当我用红外发送当前时间和当前日期的时候,数据传输是正常的,
由于设置需要显示的ascii码的长度不固定,所以当红外发送多个字符的时候,红外传输分多次进行,假设我设置的为ABCDEFGH,则红外发送的数据分别为:
0x20 0x41 0x42 校验
0x20 0x43 0x44 校验
...
0x20 0x47 0x48 校验
下面说一下我遇到的问题




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-8-8
在线时间
15 小时
 楼主| 发表于 2020-1-16 09:01:50 | 显示全部楼层
理论上,我这边收到的数据也应该是ABCDEFGH
逻辑分析仪也抓过发送和接收的波形,完全是正确的,但是我在debug接收端代码的时候,单片机收到的信息却不是完整的,
发送端第一次发送的时候,接收端收到的数据是ABEF,第二次发送数据的时候,接收端收到的数据为CDGH+0xff(结束符)
附上实际接受的现象 e1a08f2632b4dd9e65d2b2d6a0d3ae9.jpg
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-8-8
在线时间
15 小时
 楼主| 发表于 2020-1-16 09:08:05 | 显示全部楼层
1.PNG 2.PNG 附上数据解析的代码

回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-8-8
在线时间
15 小时
 楼主| 发表于 2020-1-16 09:31:35 | 显示全部楼层
在红外解析中,若是有外部中断触发,9+4.5ms的时间,认为进入红外传输,然后累计去计数32个脉冲,一包数据接受完必,然后分析接受的内容 3.PNG
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-8-8
在线时间
15 小时
 楼主| 发表于 2020-1-16 09:40:45 | 显示全部楼层
在我第一次发送ABCDEFGH,debug接收数据,test_count为累计收到数据的脉冲,为3*32 = 96个,也就是说接收端收到的数据应该为
0x20 0x41 0x42 校验    AB
0x20 0x45 0x46 校验    EF
0x20 0xff  0x00 校验    数据传输结束符
4.PNG
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-8-8
在线时间
15 小时
 楼主| 发表于 2020-1-16 09:50:07 | 显示全部楼层
第二次发送ABCDEFGH,debug接收数据:test_count为160,也就是(160-96)/32 = 2,相当于收了两帧数据,分别为0x20 0x43 0x44 校验    CD
0x20 0x47 0x48 校验    GH
第三次发送ABCDEFGH,debug接收数据:test_count为256,也就是(256-160)/32 = 3,接受了3帧的数据,并且第三帧的数据为0xff,此时HCMS3966上面显示的数据为:
CDGHABEF,附上debug截图
5.PNG 6.PNG
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-8-8
在线时间
15 小时
 楼主| 发表于 2020-1-16 09:53:43 | 显示全部楼层
我怀疑数据传输的时候,有两个起始帧单片机没有检测到,但是逻辑分析仪抓波形的时候,数据都是完整的,令我感到疑惑的就是,为什么第一次发送数据的时候,漏掉的是CDGH,第二次发送的时候却是漏掉的ABEF,而且大部分的时候都是这个样子的,
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2020-1-16 16:19:52 | 显示全部楼层
请把逻辑分析仪的数据 上传一下,就更加清楚了.
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 17:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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