AS3933 寄存器初始化配置
void AS3933_Init(void) //配置AS3393相应的寄存器
{AS3933_COMM(0xc0); //清除wake upDelay_MS(30); //延时30mswrite_byte(0x11, 0x0a); //设置通道1的谐振电容 180P//0x11=17; R17通道1的谐振电容配置Delay_MS(10); //延时10ms 等待设置完毕write_byte(0x10, 0x41); //将通道1的谐振信号输出到DAT脚//0x10=16; R16 在DAT脚上显示LF1P的谐振频率Delay_MS(30); //30ms write_byte(0x12, 0x1f); //设置通道2的谐振电容 130P//0x12=18; R18通道2的谐振电容配置Delay_MS(10); //延时10ms 等待设置完毕write_byte(0x10, 0x42); //将通道2的谐振信号输出到DAT脚Delay_MS(30); //30mswrite_byte(0x13, 0x1f); //设置通道3的谐振电容 130P//0x13=19; R19通道3的谐振电容配置Delay_MS(10); //延时10ms 等待设置完毕write_byte(0x10, 0x44); //将通道3的谐振信号输出到DAT脚Delay_MS(30); //30ms write_byte(0x10, 0x00); //write_byte(0x00, 0xEE); // R0 寄存器设置: 32位 pattern, ON/OFF 模式,开启 scan mode ,通道 1,2,3全部开启//Masks data on DAT pin before wake-up (DAT_MASK = 0 ¡ú data not masked; DAT_MASK = 1 ¡ú data masked) write_byte(0x01, 0x3A); //R1寄存器设置:双向使能AGC(上-下),使能天线阻尼器,使能曼彻斯特编码,Correlator势能,AS3933_RC(); //内部晶振校验AS3933_RC();write_byte(0x02, 0x20); //R2寄存器设置:接收频率23-150Khz, 降低数据限幅器的绝对阀值write_byte(0X04, 0XB0); //R4寄存器设置:ON/OFF模式下OFF时长4ms,天线阻尼电阻27k,无增益衰减。write_byte(0x05, 0x3A); //R5寄存器配置:第二个唤醒前导码 0x3Awrite_byte(0x06, 0xC3); //R5寄存器配置:第一个唤醒前导码 0xC3write_byte(0x07, 0x2B); //R7寄存器配置:超时设置50ms,波特率12write_byte(0x08, 0x00); //R8寄存器配置:唤醒频率95-150KhzAS3933_COMM(0xc0);
}
AS3933_COMM(0xc0); // 清除wake up, 清除唤醒使能
寄存器配置:
寄存器0—寄存器19, 共20个配置寄存器,对 模式,天线通道及编码等等参数进行配置:
R0 寄存器:Pattren 32/16bit模式配置;数据掩码配置;ON/OFF模式配置;Scan模式选择;天线通道使能
1: 扩展32bit模式
1:数据掩码 , data masked
1: ON/OFF模式 使能 (需配置R4寄存器)
0: Scan模式 禁止
111: 通道1,2,3使能。
R1寄存器: 数据切片使能配置;AGC仅作用第一载波;AGC双向使能;天线阻尼器使能;曼彻斯特译码器使能;双唤醒模式配置;载波唤醒模式配置;内部RC振荡器使能配置
R2寄存器: 数据切片绝对阀值衰减; 3dB放大增益提高;时钟频率显示在CL_DAT上;唤醒公差
R3寄存器: 数据电平触发;数据边沿触发;数据计时切片;包络检测时间
R4寄存器: OFF时长,天线阻尼及增益衰减配置
ON/OFF模式下 , OFF时长配置: 10 :4ms
天线阻尼电阻: 11 :27KΩ
增益衰减: 0000 : 无增益衰减
R5寄存器:唤醒模式第2字节
R6寄存器: 唤醒模式第1字节
R7寄存器: 超时时间及比特率配置
超时时间设置: 001 : 50ms
比特率:01011 :12
R8寄存器: 唤醒配置
唤醒频率 000: 95-150 Khz
R10,R11,R12 通道1,2,3信号强度:
R13寄存器: 虚假唤醒注册
R14寄存器: RC校准成功,RC校准失败; RC校准设置
R15寄存器: LC振荡器工作, LC振荡器未工作
R16寄存器:时钟发生器输出信号显示在CL_DAT引脚上;将rc振荡器设置为最小频率;将rc振荡器设置为最大频率;在DAT引脚上显示LF3P的谐振频率;在DAT引脚上显示LF2P的谐振频率;在DAT引脚上显示LF1P的谐振频率
0x41=01000001: 将RC振荡器设置为最小频率,在DAT引脚上显示LF1P的谐振频率.
R17,R18,R19: 通道1,2,3的谐振电容配置。
write_byte(0x11, 0x0a); 将R17,通道1的谐振电容设置为180pf
write_byte(0x12, 0x1f); R18, 通道2的谐振电容设置为130pf
唤醒协议:
工作模式流程图:
1,唤醒协议,没有模式检测(仅频率检测)
配置方式:R1<1> = 0 ,AS3933在检测到载波后,在检测到RSSI后直接从监听模式进入数据接收模式。
Carrier Burst为125KHz载波信号,长度最少16Tclk + 16Tcarr:
2,唤醒协议:启用模式检测
配置方式:R1<1> = 1 ,AS3933在检测到载波后,在解决RSSI后直接从监听模式进入数据接收模式。
初始载波突发必须长于550μs,并且可以持续最大16位。如果使用ON/OFF模式(R1<5> = 1),则最大载波脉冲串持续时间的最小值限制为10ms。如果载波突发太长,则内部唤醒将被设置回低,并且错误唤醒计数器(R13<7:0>)将递增1。
载波突发之后必须是前同步码(0101)和存储在寄存器R5<7:0>和R6<7:0>中的唤醒模式。前导码必须具有至少4比特,并且前导码持续时间与模式一起不应该长于40比特。如果唤醒模式正确,则WAKE引脚上的信号设置为高电平,数据传输可以开始。要将芯片设置回监听模式,可以使用直接命令clear_false以及超时选项(R7 <7:5>)。
唤醒帧
AS3933的唤醒机制有两种,一种是接收载波信号+正文数据,然后产生唤醒信号.另一种是接收载波信号+前导+模式+正文.在接收完模式之后即产生唤醒信号.本文采用第二种机制.
SDI写数据指令:
SDI:Serial Data input for writing registers, data to transmit and/or writing addresses to select readable register
写指令格式:
参考:https://blog.csdn.net/jdh99/article/details/8677187
https://blog.csdn.net/nicole088/article/details/85951386