- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
利用PSoC1实现基于WPC协议的电力发送器设计
从上图可以看到,对线圈的驱动控制采用的是PWM模块PWMDB8_1,其与Port2_5和Port2_7相连以驱动控制LM5107芯片。 解调来自电力接收器的电压信号,PSoC1使用了4个元件(Decode_Timer,PGA_1, COMP_1和OneShot_1), Decode_Timer模块用来计时,PGA_1对接受到的微笑信号放大, COMP_1把模拟信号变数字信号,OneShot_1对信号进行同步并产生中断,软件就根据Decode_Timer计算的OneShot_1两次中断的时间间隔来解码协议。当两次中断间隔为:
1T----解码为逻辑1
1.5T----如果第一次收到1.5T间隔的中断,解码为两个bit,逻辑1和逻辑0
如果第二次收到1.5T间隔的中断,解码为逻辑0
2T---解码为两个逻辑0
这里“T”为1bit传输时间
其软件实现如下所示:
cur_time = Decode_Timer_COMPARE_REG;
if (cur_time > prev_time)
{
delta = 250 - cur_time;
delta += prev_time + 1;
}
else delta = prev_time - cur_time;
//estimate the delta between next samples taking into accoun timer overflow
prev_time = cur_time;
if ((delta > ONE_T_LOWER) && (delta < ONE_T_UPPER))/*1T*/
{
//ADD_BIT(1,WPTdata);
if (bit_num < WPTBITSCOUNT)
{
WPTdata >>= 1;
WPTdata |= 0x80;
parity ^=1;
}
else parity_received = 1;
bit_num++;
}
else if ((delta > ONEANDHALF_T_LOWER) && (delta < ONEANDHALF_T_UPPER)) /*1,5T*/
{
if(flag==0)
{
if (bit_num < WPTBITSCOUNT)
{
WPTdata >>= 1;
WPTdata |= 0x80;
parity ^=1;
}
else parity_received = 1;
bit_num++;
if (bit_num < WPTBITSCOUNT) WPTdata >>= 1;
else parity_received = 0;
bit_num++;
flag = 1;
}
else
{
if (bit_num < WPTBITSCOUNT) WPTdata >>= 1;
else parity_received = 0;
bit_num++;
flag = 0;
}
}
else if ((delta > DOUBLE_T_LOWER) && (delta < DOUBLE_T_UPPER))/* 2T*/
{
if (bit_num < WPTBITSCOUNT) WPTdata >>= 1;
else parity_received = 0;
bit_num++;
if (bit_num < WPTBITSCOUNT) WPTdata >>= 1;
else parity_received = 0;
bit_num++;
}
else
{
state = next_state = RX_ERROR;
time_out = TIME_OUT_ERROR;
return;
}
如何成为一名优秀的射频工程师,敬请关注: 射频工程师养成培训
上一篇:Qi标准无线充电配件概述
下一篇:TD-LTE双流波束赋形技术

