OpenEdv-开源电子网

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

红外码定时器捕获解码问题

[复制链接]

18

主题

46

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2014-2-4
在线时间
9 小时
发表于 2015-7-15 10:59:20 | 显示全部楼层 |阅读模式
5金钱
在进行红外码捕获时发现了一个问题。红外码低电平时间过短时无法捕获到,比如红外码低电平时间为100us时,将捕获不到该低电平,用的是1838红外一体化探头
看了一下该探头资料,发现1838解调时会有280US左右的延时,是不是这个原因导致低电平时间过短时捕获不到?有什么办法能解决吗?


选择了就别再后悔
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-15 23:17:18 | 显示全部楼层
设置好你的捕获时间点
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

18

主题

46

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2014-2-4
在线时间
9 小时
 楼主| 发表于 2015-7-16 09:08:18 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
 TIM_TimeBaseStructure.TIM_Period = 65535;
  TIM_TimeBaseStructure.TIM_Prescaler = 35;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
捕获计数时间是0.5US
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter = 0x03;
  TIM_ICInit(TIM4, &TIM_ICInitStructure);
带八个周期滤波。
 void TIM4_IRQHandler(void)
{
if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) 
{
if(time_flow<200) time_flow++; //溢出中断数加一
TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
}
if(TIM_GetITStatus(TIM4, TIM_IT_CC4) != RESET) //捕获中断
{
if(TIM4CH4_CAPTURE_STA)      //下降沿捕获
{
IC4ReadValue=TIM_GetCapture4(TIM4);//获取捕获值
TIM_SetCounter(TIM4,0);//计数器清0
TIM_OC4PolarityConfig(TIM4,TIM_ICPolarity_Rising);//设置为上升沿
if(count<1000)
f[count++]=(time_flow*65536+IC4ReadValue)/2;//将捕获到时间转换为US
time_flow=0;
TIM4CH4_CAPTURE_STA=0;//标志下次为上升沿捕获
}
else
{
IC4ReadValue=TIM_GetCapture4(TIM4);//获取捕获值
TIM_SetCounter(TIM4,0);//计数器清0
TIM_OC4PolarityConfig(TIM4,TIM_ICPolarity_Falling);//设置为下降沿
if(count<1000)
f[count++]=(time_flow*65536+IC4ReadValue)/2; //将捕获到时间转换为US
time_flow=0;
TIM4CH4_CAPTURE_STA=1;//标志下次为下降沿捕获
}
TIM_ClearITPendingBit(TIM4,TIM_IT_CC4);
}
}
这样设置没什么问题吧
选择了就别再后悔
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-16 23:10:58 | 显示全部楼层
回复【3楼】LLS:
---------------------------------
不确定。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

18

主题

46

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2014-2-4
在线时间
9 小时
 楼主| 发表于 2015-7-18 00:23:50 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥有没有捕获过低于100us的红外码
选择了就别再后悔
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-18 09:16:46 | 显示全部楼层
回复【5楼】LLS:
---------------------------------
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 22:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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