元件之AS3933

关键术语解释

  • inductive coupled carrier
    电感耦合载波,即连接LF1P、LF2P、LF3P三个引脚的电感和电容产生的频率,如使用125KHz作为载波频率。这里就要设置为125kHz,根据电感和电容的不同值可产生不同频率的载波,在改变寄存器R17<4:0>、R18<4:0>、R19<4:0>中的值可微调所产生的频率,使其尽可能接近125KHz,以达到最佳感应效果。

  • On-Off-Keying (OOK)
    开关控键,即如下所示,
    在这里插入图片描述

关键寄存器说明

R0<7>=11: PAT32,扩展模式32bit
R0<6>=1DAT_MASK, 唤醒前 DAT 引脚上的数据掩码数据被屏蔽。即屏蔽Pattern,只显示Data
R0<5>=1ON_OFF,使用低功耗模式中的ON/OFF模式
R0<4>=0MUX_123,低功耗扫描模式,不使用
R0<3>=1EN_A2,通道 2 使能
R0<2>=1EN_A3,通道 3 使能
R0<1>=1EN_A1,通道 1 使能
R0<0>=0Reserved,保留位
R1<7>=0ABS_HY,0:配置数据分割器不采用绝对参考值 1:配置数据分割器采用绝对参考值。绝对参考值可应用于环境噪声小的地方
R1<6>=0AGC_TLIM,AGC作用的时间限制,不使用。如果使用, It will then only be active for 256 µs after the frequency detection was successful.
R1<5>=1AGC_UD,AGC 工作在 up & down 模式
R1<4>=0ATT_ON,天线阻尼器不使用
R1<3>=1EN_MANCH,曼彻斯特解码器使能
R1<2>=0EN_PAT2,双唤醒 Pattern 相关器 不使用
R1<1>=1EN_WPAT,Pattern 相关器使能。如果R1<1>=1,载波突破(Carrier Burst )之后先校验前导码(Preamble),然后校验模式(Pattern),最后是数据(Data);如果R1<1>=0,载波突破(Carrier Burst )之后直接是数据(Data)
R1<0>=1EN_XTAL,晶体振荡器使能,使用了外部晶振
R2<7>=0S_ABSH,数据分割器绝对阈值降低
R2<6>=0EN_EXT_CLK,外部时钟发生器,不使用
R2<5>=1G_BOOST,1.5dB 额外增益(80nA),It is possible to boost the gain of the amplifiers for +3dB with an improvement of the sensitivity
R2<4>=1AGC_LOW_CTRL,AGC 下限控制位
R2<3:2>=00DIS-PLAY_CLK,设置为 11 时,将时钟 32KHZ 的频率通过CL_DAT 输出,不使用
R2<1:0>=00S_WU1,唤醒的公差设置
R3<7>=1HY_20m,数据分割器迟滞 20mV,即迟滞比较器的阈值为20mV。
R3<6>=0HY_POS,迟滞发生在上升沿和下降沿
R3<5:3>=011FS_SCL,产生迟滞比较器参考波形的滤波时间常数1.9ms
R3<2:0>=010FS_ENV,包络检测器时间常数
R4<7:6>=00T_OFF, ON/OFF 模式下,ON时间固定为1ms; OFF 时间可调,此处设置1ms(也可设置为2、4、8ms)
R4<5:4>=00D_RES,天线阻尼器电阻值设置,没使用天线阻尼器,所以不关心该位
R4<3:0> =0000GR,AGC 增益衰减设置,即设置为0dBm、-4dBm、-8dBm等
R5<7:0>TS2,唤醒 Pattern 的第二个字节
R6<7:0>TS1,唤醒 Pattern 的第一个字节
R7<7:5>=011T_OUT,自动超时设为150ms,若被唤醒后不使用CLEAR_WAKE或超过150ms后,AS3933自动进入低功耗模式,即 listening mode
R7<4:0>=01010T_HBIT,比特率定义,即定义一个位所持续的时间为11个时钟周期。这里的一个位指的是OOK signal中的一个位,参考数据手册P28。AS3933使用32.768KHz的晶振,时钟周期约为30.5uS,所以一个位持续时间为11*30.5uS = 335.5uS
R8<7:5>BAND_SEL,工作频率范围选择设为95-150KHz,项目使用125KHz
R8<4:3>Reserved,
R8<2:0>T_AUTO,没有人工唤醒
R16<7>=0CLOCK_GEN_DIS,如果为1,将时钟 32khz 输出在 CL_DAT 引脚上
R16<6> =0LC_OSC_DIS,如果为1,将 LC 的谐振频率输出在 DAT 引脚上(LC即LF1P、LF2P、LF3P三路中的一路)
R16<5> =0RC_OSC_MIN,如果为1,将 RC 振荡器设置为最小频率
R16<4> =0RC_OSC_MAX,如果为1,将 RC 振荡器设置为最大频率
R16<3> =0Reserved
R16<2> =0LC_OSC_MUX3,如果为1,将 LF3P 的谐振频率显示在 DAT 引脚上
R16<1> =0LC_OSC_MUX2,如果为1,将 LF2P 的谐振频率显示在 DAT 引脚上
R16<0> =0LC_OSC_MUX1 ,如果为1,将 LF1P 的谐振频率显示在 DAT 引脚上
R17<4:0>CAPS_CH1,设置通道 1 的调谐电容值 ,视实际情况而定
R17<4:0>CAPS_CH2,设置通道 2 的调谐电容值,视实际情况而定
R17<4:0>CAPS_CH3,设置通道 3 的调谐电容值,视实际情况而定

载波频率

载波频率选择Fcarr=125KHz (R8<7:5> = 000)

时钟频率

时钟选择外部晶振 (R1<0> =1)
晶振频率计算如下:
Frc = Fcarr / 4
其中,Fcarr为载波频率125kHz,所以晶振频率 Frc = 31.25kHz。这里选择常用的32.768kHz晶振。(Tclk = 1 / Frc ≈ 30.5us)

频率检测及其公差设置

The frequency detection is based on a zero crossing counter and uses the Clock Generator as time base.This counter counts the zero crossing of the input signal within a time window defined by the clock generator。The Clock Generator generates time windows equal to N times its period,其中N如下所示。
在这里插入图片描述
频率检测可设置为严格或宽松,由于晶振选择没按标准的31.25KHz选择,所以这里频率检测公差设置为宽松 R2<1:0> = 00。
频率检测成功的定义为,在两个连续的时间窗口的零阈值计数器检测到M个过零。其中M就是R2<1:0> = 00所定义的值16±6;
其中一个时间窗口为N*Tclk,由于载波频率为125KHz,所以N为4,Tclk为30.5us,所以一个时间窗口为122us;
频率检测范围:(10/122)<F< (22/122),即81.967KHz<F<180.328KHz

低功耗模式

低功耗模式有两种:扫描模式(scanning mode)和On/Off模式,两模式中只能选择其中一种,这里选择On/Off模式(R0<5>=1)。On/Off模式即三个通道同时激活1ms,休眠Nms,其中激活1ms是固定的,休眠Nms可由R4<7:6> 设置

载波突破 Carrier Burst

低功耗模式选择的是On/Off模式,所以载波突破最小时间为:Tburst ≥ 16Tclk + 16Tcarr = 0.616ms,其中Tclk = 1 / Frc ≈ 30.5usTcarr = 1/125KHz = 8us;载波突破最大时间要小于155Tclk,即4.7275ms
所以载波突破时间范围为:0.616ms <Tburst<4.7275ms

比特率 Bit rate & 曼彻斯特符号率 Symbol rate

Choosing a higher bit rate will require more bandwidth from the antenna and make the system more sensitive towards noise. 高比特率需要更多的天线带宽,还会给系统带来噪音,因此这里选择中等,R7<4:0> = 01010 ,Bit rate = 1/(11*Tclk) ≈ 2980 b/s
一位曼彻斯特符号即两个Bit,所以Symbol rate = 1490 Manchester/s,R3<2:0> = 010,这里计算的Symbol rate不一定和数据手册表格一模一样,选最接近的。

前导码(preamble)最小时间

根据比特率可知一Bit 时间为 1/2980 ≈ 336us,前导码最少为6个bit(101010),这里选择6个bit,所以最小时间为6*336us=2.016, R3<5:3> = 011 (即1.9ms;或者也可以配置为R3<5:3> = 010,1.55ms)

模式相关性 Pattern correlation

这里Pattern选择32Bit R0<7> =1;
Pattern由R5、R6 寄存器决定,发射模块的 Pattern 要根据AS3933的R5、R6寄存器决定
在这里插入图片描述

自动超时 Automatic Time-Out

如果检测到匹配的频率被唤醒后,没有使用 “clear wake” 命令,经过N毫秒后则自动进入低功耗模式,这里的N是由寄存器R7<7:5>决定的,这里配置为150ms,R7<7:5>=011;如果使用直接命令“clear wake”可立即进入低功耗模式。
在这里插入图片描述

自动增益控制器(automatic gain control (AGC))和可变增益放大器(variable gain amplifier (VGA) )

可变增益放大器VGA可由寄存器R4<3:0>配置,改变这里可以改变感应距离,R4<3:0>=0000时感应距离最远;
自动增益控制器AGC, R1<6> =1时,Setting R1<6> will set a time limit for the AGC. It will then only be active for 256 µs after the frequency detection was successful.这里不对AGC做时间限制,R1<6> =0.
R1<5> = 1 AGC operating in both directions,AGC working up and down ;R2<5>=1,增加+3dB的灵敏度。

天线阻尼器 Antenna Damper

改变天线阻尼器的值,可以改变天线的质量因素(quality factor ),不是很理解。这里不使用天线阻尼器 R1<4> = 0.天线阻尼器的使用与否和其值的大小调节对感应距离有影响。

天线调节 Antenna Tuning

载波频率使用125KHz,因此AS3933三个通道(LF1P、LF2P、LF3P)的天线产生的频率也要尽可能的接近125KHz;在硬件电路上使用电感、电容产生125KHz的谐振频率,但可能存在一定的误差,这时就可以使用AS3933内部电容进行微调达到尽可能接近125KHz,这样可以达到最佳的感应效果。
在软件调试时,配置R16<6>=1,将 LC 的谐振频率输出在 DAT 引脚上(LC即LF1P、LF2P、LF3P三路中的一路)
R16<2:0>可选择将三路通道中的哪里路谐振频率引出到DAT引脚,如R16<2:0>=001,将 LF1P 的谐振频率显示在 DAT 引脚上;R16<2:0>=010,将 LF2P 的谐振频率显示在 DAT 引脚上;R16<2:0>=100,将 LF3P 的谐振频率显示在 DAT 引脚上。最后可使用逻辑分析仪或示波器等工具查看相应引脚具体的频率,如果输出频率与125KHz相差不大,可调节R17<4:0>对应LF1P、R18<4:0>对应LF2P、R19<4:0>对应LF3P,如下所示。如果频率与125KHz相差很大,就需要调节PCB中的电感、电容值。
在这里插入图片描述

解调器/数据切片 Demodulator / Data Slicer

AS3933一旦成功检测到125KHz频率,RSSI就会对比所有活动的通道并选择信号最稳定的通道,最终将通道放大器连接到解调器,从检测到频率到将稳定的通道连接到解调器需要32个载波周期(32*(1/125KHz)=256us);从解调器出来将得到两个信号:快速包络信号和慢速包络信号,这两个信号将连接到数据切片器,数据切片器即迟滞比较器,最后得到一串数字信号,如下图所示。这一串数字信号即Pattern和DATA。
在这里插入图片描述
在这里插入图片描述

载波发射器

载波发射器发射的信号要根据如下协议
在这里插入图片描述
载波发射器模块中MCU需要产生125KHz的PWM,如上图所示,即根据自定义的Carrier、Preamble、Pattern、Data协议对PWM引脚做开关处理。

程序实现

载波发射器,使用MCU不一样,配置产生PWM的引脚也不一样

/********************************************************************************************/
/*  R6_Dat ----- Pattern1 对应AS3393 R6寄存器的值 第1个唤醒前导码*/ 
/*  R5_Dat ----- Pattern2 对应AS3393 R5寄存器的值 第2个唤醒前导码 */
/*  Patt16_32    启用32Bit模式               */
/*  Send_Dat_Len 发送的数据的长度*/
/*  Bit_Tim      一个Bit的时间           */
/********************************************************************************************/
void LF_SendData(uint8 R6_Dat,uint8 R5_Dat,uint8 Patt16_32,uint8 Send_Dat_Len,uint16 Bit_Tim)
{
	  uint8 i,j;
	  uint8 temp = 0;
	  uint8 Data_Buff[6];
	
	  Data_Buff[0] = 0xAA; 
	  Data_Buff[1] = 0x55;
	  Data_Buff[2] = 0xAA;
	  Data_Buff[3] = 0x55;
	  Data_Buff[4] = 0xAA;
	
		CarrierBurst(Bit_Tim);	  /*发射载波和前导码*/	
		Pattern(R6_Dat,R5_Dat,Patt16_32,Bit_Tim);	//模式字  (和AS3393寄存器配置一致,修改此值已达到和AS3933的配对使用。)
		for(i = 0;i < Send_Dat_Len;i++) /*发射的数据 DATA*/
    {				
		  for(j = 0;j < 8;j++)	 //发送一个字节
		  {
				temp = Data_Buff[i] & 0x80;
				Data_Buff[i]= Data_Buff[i] << 1;					
				//AS3933曼彻斯特编码  编码1: 1到0跳变    编码1持续时间366us			
				if(temp == 0x80)   //0x80 = 1000 0000    
				{
				  Out_125K(Bit_Tim);  // 开通时间12*30.5us=366us NxRC=0x0c= 12  LF_RC_TIME=30.5us    //32768K																	   
				  Close_125K(Bit_Tim);// 关闭时间12*30.5us=366us
				}
				else //AS3933曼彻斯特编码  编码 0:0到1跳变  编码0持续时间366us                                
				{								
					Close_125K(Bit_Tim);	
					Out_125K(Bit_Tim);						
				}
		  }
	  }
		PWM_CLOSE(1);
}

static void CarrierBurst(uint16 Bit_Tim)
{
	unsigned int i;
	
	Out_125K(2500);	       /*开启载波突破*/   
	Close_125K(Bit_Tim);   /*间隔*/ 
	for(i = 0;i < 3;i ++)	 /*前导码 至少3组10*/
	{
		Out_125K(Bit_Tim); 	 /*开启125K信号 为1*/
		Close_125K(Bit_Tim); /*停止125K信号 为0*/ 				 
	}	
}

static void Pattern(uint8 R6_Dat,uint8 R5_Dat,uint8 Patt16_32,uint16 Bit_Tim)  //发送模式字 0 - 16bit, 1 - 32bit
{
	  uint8 i;
	  uint16 Patt_Data = 0;
	 
	  Patt_Data = R6_Dat * 256 + R5_Dat;
	
	  if(Patt16_32 == PATT_32BIT)
	 {
		for(i = 0;i < 16;i ++)
		 {
			if(Patt_Data & 0x8000)	
			{
				Out_125K(Bit_Tim);
				Close_125K(Bit_Tim);					
			}
			else
			{
				 Close_125K(Bit_Tim);
				 Out_125K(Bit_Tim);								
			}
			Patt_Data = Patt_Data << 1; 			
		}			
	}
	else
	{
		for(i = 0;i < 16;i ++)
		 {
			if(Patt_Data & 0x8000)	
			{
				Out_125K(Bit_Tim);				
			}
			else
			{
				 Close_125K(Bit_Tim);						
			}
			Patt_Data = Patt_Data << 1; 							
		}
	}
}
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值