您尚未登录。

楼主 #1 2018-04-30 16:12:36

awfans
会员
注册时间: 2018-04-03
已发帖子: 264
积分: 264

STM8 写的 433Mhz 解码器

//=======================================================================================
/*T1捕获中断*/
#pragma vector= ITC_IRQ_TIM1_CAPCOM+2 
__interrupt void TIM1_CAP_COM(void)  
{ 
Ulong Rn01,Rn02; Uchar i;
/*========================数据处理=================================================*/
IrInter.Rn++;   //上升沿或下降沿捕获标志
        
if(IrInter.Rn==1)//120170707
{
IrInter.PeriT1=TIM1_GetCounter();  //读捕获值(上升沿)        
Rn01=IrInter.Update;     //溢出次数	
IrInter.Update=0;        //清溢出次数
  Rn01<<=16;              
    IrInter.PeriT1+=Rn01;	
  IrInter.PeriTa=IrInter.PeriT1-IrInter.PeriT2;	//得出低电平时间
TIM1_ICInit(TIM1_CHANNEL_3,            //通道1
                TIM1_ICPOLARITY_FALLING,   //下降沿触发
                TIM1_ICSELECTION_DIRECTTI, //IC1映射在TI1FP1上
                TIM1_ICPSC_DIV1,           //捕捉1分频
                0x00);                     //滤波0                                     
}
else if(IrInter.Rn==2)//0
{ 
IrInter.Rn=0;	
  IrInter.PeriT2=TIM1_GetCounter();  //读捕获值(下降沿)
  Rn02=IrInter.Update;     //溢出次数 
  IrInter.Update=0;        //清溢出次数
    Rn02<<=16;  	    
  IrInter.PeriT2+=Rn02;
  IrInter.PeriTb=IrInter.PeriT2-IrInter.PeriT1;	//得出高电平时间                 

TIM1_ICInit(TIM1_CHANNEL_3,            //通道1
                  TIM1_ICPOLARITY_RISING,    //上升沿触发
                  TIM1_ICSELECTION_DIRECTTI, //IC1映射在TI1FP1上
                  TIM1_ICPSC_DIV1,           //捕捉1分频
                  0x00);                     //滤波0  
}	

//==============================解码处理==================================================	IrInter.Rn==1才是接收了正确的Ta,Tb 
  if(/*(WorkStateBit.Bit.IrInStatEn==1)&&*/(IrInter.Rn==1)&&(IrInter.PeriTb>280)&&(IrInter.PeriTb<350)&&(IrInter.PeriTa>8000)&&(IrInter.PeriTa<11000))  //判头码   170  255  5950  6300
 {//开始
      IrInter.HeadCode=1;                      //正确接收到头码   
  	IrInter.DataPiont=(Uchar*)&Irdata.DM1;   //取指针地址
  	IrInter.Ri0=0;                           //计每个字节位数
  	IrInter.Ri1=0;                           //计字节数       
  	
 }
//--------------------------头码正确------------------------------------------------------- 	
 else if((IrInter.HeadCode==1)&&(IrInter.Rn==1)&&(IrInter.PeriTb>280)&&(IrInter.PeriTb<1200)) //检数据时间译码 
 { 	
  	if(IrInter.PeriTb>800)//500(1000)
  	{*IrInter.DataPiont|=Db[IrInter.Ri0];} //高为1  
  	else
  	{*IrInter.DataPiont&=~Db[IrInter.Ri0];}//低为0  
  	
  	                  	
  	if(++IrInter.Ri0 >=8) //收够8位数据指针加1,进1个字节
  	{  	  
  	IrInter.Ri0=0;        //接收计位数
  	IrInter.Ri1++;        //接收计字节数
  	IrInter.DataPiont++;	//接收指针加1	
  	
  	if(IrInter.Ri1 ==3)//收够3个字节(看数据长度来修改)
  	{	
  	Tx=~Tx;
  	IrInter.DataPiont=(Uchar*)&Irdata.DM1;      //取缓存指针地址
  	IrInter.Rn01++;                             //每次接收3个数据包  	
  	switch  (IrInter.Rn01)
  	{
  	case 1:  IrInter.DataPiontA=(Uchar*)&IrdataA.DM1;   //取数据A指针地址
                     ; break;	                  
  	case 2:  IrInter.DataPiontA=(Uchar*)&IrdataA.DM1+4;  //取数据A指针地址+4
                     ; break;
            case 3:  IrInter.Rn01=0;
            	       IrInter.DataPiontA=(Uchar*)&IrdataA.DM1+8;  //取数据A指针地址+8	       
                     ; break;
  	}
  	 for(i=0;i<3;i++) //
           {
            *IrInter.DataPiontA++=*IrInter.DataPiont++;   //将缓存数据存入寄存器
           }   
  	
  	if((IrdataA.DM1==IrdataA.DM5)&&(IrdataA.DM2==IrdataA.DM6)&&(IrdataA.DM3==IrdataA.DM7))
  	{
  	if((IrdataA.DM1==IrdataA.DM9)&&(IrdataA.DM2==IrdataA.DM10)&&(IrdataA.DM3==IrdataA.DM11))
  	{
  	IrInter.Receive_OK=1;          //3个包接收OK 
  	//WorkStateBit.Bit.IrInStatEn=0; //关接收
  	IrEep.IrRn++;
  	IrEep.KongTime=0;
  	
  	
  	
  	if((IrXueXiBit.Bit.KongBit==1)&&(WorkStateBit.Bit.ZhengChangRunEn==1)&&(IrdataA.DM1==IrdataB.DM1)&&(IrdataA.DM2==IrdataB.DM2)&&(IrdataA.DM3==IrdataB.DM3))
  	{
  	Moto.Rn++;
  	IrXueXiBit.Bit.KongBit=0;
  	MotoStateBit.Bit.YiChuLi=1;
  	}
  	
  	} 	  	
  	
  	}
          IrInter.HeadCode=0;   //清头码标志
            
        }
          
      }
   }  
//================================================================================	
/*-------------------------------------------------------------------------*/     	
 TIM1_ClearITPendingBit(TIM1_IT_CC3);   //清除捕获比较3中断标志
}
//================================================================================ 

离线

#2 2018-04-30 16:24:45

kgp0213
会员
注册时间: 2018-01-15
已发帖子: 149
积分: 149

Re: STM8 写的 433Mhz 解码器

这个解码器是做什么用的?

离线

楼主 #3 2018-04-30 16:48:57

awfans
会员
注册时间: 2018-04-03
已发帖子: 264
积分: 264

Re: STM8 写的 433Mhz 解码器

解码各种433Mhz 遥控器,安防设备信号。

离线

#4 2018-04-30 22:35:22

kgp0213
会员
注册时间: 2018-01-15
已发帖子: 149
积分: 149

Re: STM8 写的 433Mhz 解码器

433解码一旦有量,就会被cob方案搞得死翘翘

离线

#5 2018-04-30 23:17:59

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: STM8 写的 433Mhz 解码器

啥是COB ?





离线

#6 2018-05-01 08:07:41

bunny
会员
注册时间: 2020-05-23
已发帖子: 152
积分: 152

Re: STM8 写的 433Mhz 解码器

晕哥 说:

啥是COB ?

封装的一种,直接把裸芯封装在电路板上,留一个牛屎坨

离线

#7 2018-05-02 11:04:12

yhf8040183
会员
注册时间: 2018-05-02
已发帖子: 3
积分: 3

Re: STM8 写的 433Mhz 解码器

有源码么?我有32的板子,想移植玩玩。

离线

#8 2018-05-02 11:13:01

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: STM8 写的 433Mhz 解码器

一楼就是 STM8 解码 433Mhz 的核心源码





离线

#9 2018-05-02 11:19:27

yhf8040183
会员
注册时间: 2018-05-02
已发帖子: 3
积分: 3

Re: STM8 写的 433Mhz 解码器

晕哥 说:

一楼就是 STM8 解码 433Mhz 的核心源码

这不是只有中断接受部分么?

离线

#10 2019-11-07 13:37:03

silong1126
会员
注册时间: 2019-11-07
已发帖子: 32
积分: 32

Re: STM8 写的 433Mhz 解码器

我也做过一个这种小程序。

离线

#11 2019-12-21 22:46:43

silver
会员
注册时间: 2019-12-21
已发帖子: 14
积分: 14

Re: STM8 写的 433Mhz 解码器

请问用什么接收433M信号呢?

离线

#12 2019-12-29 10:26:34

迈优_陈工
会员
注册时间: 2019-06-23
已发帖子: 6
积分: 100.5

Re: STM8 写的 433Mhz 解码器

同问用什么芯片接433M信号呢?

离线

#13 2020-04-18 21:09:36

Bison
会员
注册时间: 2020-02-01
已发帖子: 7
积分: 7

Re: STM8 写的 433Mhz 解码器

中断处理会把cpu消耗光的,一般外差的433芯片会有大量的干扰信号。

离线

#14 2020-04-18 23:05:28

smc
会员
注册时间: 2020-04-18
已发帖子: 4
积分: 4

Re: STM8 写的 433Mhz 解码器

MARK

离线

#15 2020-04-19 03:52:01

bxaW
会员
注册时间: 2020-04-19
已发帖子: 7
积分: 7

Re: STM8 写的 433Mhz 解码器

一直开捕获中断消耗cpu(433芯片有大量的干扰信号)。
最好先在主循环检测判断信号,有效信号才打开捕获中断解码;杂信号则不打开捕获中断。

离线

#16 2020-04-19 11:30:04

nengin
会员
注册时间: 2020-04-19
已发帖子: 0
积分: 0

Re: STM8 写的 433Mhz 解码器

顶。。。

离线

#17 2020-04-19 12:26:48

LC123456
会员
注册时间: 2020-04-19
已发帖子: 10
积分: 10

Re: STM8 写的 433Mhz 解码器

厉害厉害

离线

#18 2020-04-25 00:06:05

guzhengstar
会员
注册时间: 2020-01-12
已发帖子: 25
积分: 14.5

Re: STM8 写的 433Mhz 解码器

简洁而不失大方 很工整

离线

#19 2020-05-07 15:28:45

tom_xiao
会员
注册时间: 2020-05-07
已发帖子: 7
积分: 7

Re: STM8 写的 433Mhz 解码器

433 用的什么芯片

离线

#20 2020-05-11 22:18:46

jcwangzi
会员
注册时间: 2020-05-05
已发帖子: 7
积分: 7

Re: STM8 写的 433Mhz 解码器

接收433M信号呢?

离线

#21 2020-05-17 16:29:55

noudle
会员
注册时间: 2019-09-08
已发帖子: 7
积分: 7

Re: STM8 写的 433Mhz 解码器

有了这个就可以捕获433信号协议了

离线

#22 2020-05-21 08:54:25

曲径通幽
会员
注册时间: 2020-05-21
已发帖子: 7
积分: 7

Re: STM8 写的 433Mhz 解码器

我有个433接收机,但是没有发射器,用这个可不可以适配?或者可以写一个?

离线

#23 2021-11-14 00:39:24

muaxzoi
会员
注册时间: 2021-11-14
已发帖子: 0
积分: 0

Re: STM8 写的 433Mhz 解码器

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:其他

#24 2022-01-26 14:31:50

stephone
会员
注册时间: 2019-10-09
已发帖子: 57
积分: 9

Re: STM8 写的 433Mhz 解码器

经验之谈,433干扰一般好严重,建议用定时采样+滤波

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn