最有一个项目中使用到LF125KHz的低频信号。之前也有写过关于125KHz的激励信号发射&AS3933接收驱动,只是时间旧了没有留下笔记基本忘记了。这几天重新梳理了一下,然后对相关的细节梳理下。
首先从原理图开始(申明一下,我觉得不会画这么飘逸的原理图)
125K硬件电路实际上就是两个电平转换芯片(MC33151)+两个功率MOS管芯片(IR7389)+一个由LC组成的谐振频率的天线。原理就是由P沟道+N沟道MOS管组成的H桥互补型推挽功率放大电路。再到具体的就回去翻模电书了,但是要提醒的是LC组成的天线需要通过网络分析仪的斯密斯圆图看下天线是否为实阻抗(既不是在感性也不在容性那边,落在实阻线上);125KHz在发射时候LC是串联的(电压谐振),其中电容的耐压值要2KV以上的,必要的时候再串也个电阻增大Q值。LC谐振知识科普链接:Ihttps://wenku.baidu.com/view/b9db5804844769eae009ed14.html
电路已经搭建好了,我们需要发送什么样的数据呢? 发送的数据是通过ASK调制载波得到的一些列波形组成的。载波频率就是125KHz频率波。 Carrier Burst :载波引导信号 ; Separation bit :隔离1个bit位 ;Preamble :序列码;Pattern :唤醒接收数据 Data:输出的数据。
注意事项:
1、125KHz载波数据,通过PMOS1、NMOS1、PMOS2、NMOS2控制H桥互补型推挽功率放大电路输出一个峰峰值为24V的方波给到LC天线
2、Bits一个位的时间,需要根据AS3933 Bit Rate设置寄存器。12个RTC时钟周期 = 12/32768 = 366 us;即一个bit时间为366us。
3、Carrier Burst 时间长度设置,有两种模式:Listening Mode 和 Scanning Mode
4、Preamble Lengths as Function of Slow Envelop Settings,序列长度设置,序列数为3的话(010101或者101010)则长度时间大概是一个bit时间×6 = 366×6 = 2196。
5、Symbol Rates ,编码为曼切斯特,数据率为2个bit,32768/12/2 = 1365。
附程序:
/*************************************************
* Fun Name : LF125K_Wave_ON
* Description : 产生周期125K波(一次时间4us)
* Input : None
* Output : None
* Return : None
************************************************/
static void LF125K_Wave_ON(void)
{
static S32 flag = 0;
S32 value = 0;
value = PORTA.OUT.reg;
value &= ~(LF_WAVE_GPIO);
if(flag)
{
value |= LF_WAVE_HOLLOW;
}
else
{
value |= LF_WAVE_PEAK;
nop();
}
PORTA.OUT.reg = value;
flag = ~flag;
nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();
nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();
}
/*************************************************
* Fun Name : LF125K_Wave_OFF
* Description : LF125K波关闭(一次时间4us)
* Input : None
* Output : None
* Return : None
************************************************/
static void LF125K_Wave_OFF(void)
{
S32 value = 0;
value = PORTA.OUT.reg;
value &= ~(LF_WAVE_GPIO);
value |= LF_WAVE_OFF;
PORTA.OUT.reg = value;
nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();
nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();
nop();nop();nop();nop();nop();nop();nop();nop();nop();
}
。。。。。。具体太多了不全部贴上去了,主要的点都提到过。