谢谢指导,因为我们是学习型号,可能会有不同的规格的遥控器,可能不会区分码头与数据了,并不要求实现连按,只实现单按即可.
我们目前IO连接到 PA2,其利用功能有USART2_TX(8)/TIM5_CH3/ADC123_IN2/TIM2_CH3
应该是可以实现”捕获”
不过可能先期会用中断方式进行实验,这样可能更容易上手,也更有通用性.
我依然认为,误差匹配是难点,到时欢迎指点..
请教 laohuang112:
今天晚上看了STM32的捕获相关资料并实际测试了下
捕获只能选择上升沿或下降沿,但红外遥控多用不同高电平和低电平宽度来发送数据,这里如何区别?比如某一连续高电平和低电平的宽度不一样,但是总宽度是一样的,这样不就分不出来了么?
问题已解决:
TIM的CH3和CH4是一组,可以共用一个输入源,一个用来捕获下降沿,一个用来捕获上升沿,人多力量大… [s:154]
弄了一晚上的红外遥控,目前基本功能实现.
第一次启动后没有红外遥控编码信息,不启动红外遥控接收.
然后执行rem_study()
进行自动学习,按提示操作即可.
学习完成后,下次启动就自动打开红外遥控的监控了
就可以直接使用遥控器进行操作了.
不过目前只是基本功能.对遥控器的要求是:
单帧编码,总长度不超过100ms.不支持连按.
这已经可以兼容大部分遥控器了.
对于,多帧结编码的遥控器,目前还不能支持,如果要支持,则要使用更复杂的算法.
嗯,这个算法也是目前的简单类型的遥控器所需要的.
这种遥控器一般为: 一个起始帧,然后由数据帧和结束帧 共3个帧组成,总时间长达150-200ms.
下面贴个这种遥控器的图:(最粗的方框为起始帧,方框为数据帧,椭圆框为结束帧)
[attach]0[/attach]