发明内容
本发明的目的是克服了上述现有技术的缺点,提供了一种能够实现在PMA标准通信协议下减小解调对电路的开销的针对PMA标准的无线充电设备调频信号的解调方法。
为了实现上述目的,本发明具有如下构成:
该针对PMA标准的无线充电设备调频信号的解调方法,包括以下步骤:
(1)读取线圈信号,对所述的线圈信号进行采样,并对周期进行计数;
(2)根据周期计数的变化提取频率变化;
(3)根据频率变化与频率的持续时间判断数据并输出;
(4)拼接输出数据。
较佳地,所述的步骤(1),具体包括以下步骤:
(1-1)接收线圈信号,通过比较器将所述的线圈信号与0电平进行比较;
(1-2)通过4MHz频率读取所述的比较器的输出值;
(1-3)滤除所述的比较器的输出值中频率较高的抖动波形;
(1-4)通过周期计数器对周期进行计数。
更佳地,所述的通过第一低通滤波器滤除所述的比较器的输出值中频率较高的抖动波形,具体为:
通过一截止频率为5KHz、采样频率为2MHz的第一低通滤波器除所述的比较器的输出值中频率较高的抖动波形。
更佳地,所述的步骤(1-4),具体包括以下步骤:
(1-4-1)判断滤波后的比较器的输出值是否由0变为1,如果是,则继续步骤(1-4-2);否则,继续步骤(1-4-3);
(1-4-2)输出周期计数器的计数值,将所述的计数值清零,继续步骤(1-1);
(1-4-3)将周期计数器的计数值加1,继续步骤(1-1)。
较佳地,所述的步骤(2),具体包括以下步骤:
(2-1)根据最新一个周期的计数值计算最新24个周期内的采样点数之和;
(2-2)对所述的24个周期内的采样点数之和进行滤波,消除因采样导致的频率抖动;
(2-3)对Fop点进行计数;
(2-4)通过以下公式计算sum_delta:
sum_delta=out_IIR–sum_Fop,
其中,sum_delta为滤波后的输出值与当前判断出的Fop值sum_Fop的差分结果,out_IIR为滤波后的输出值,sum_Fop为Fop点的计数值;
(2-5)消除频率抖动,对波形进行修饰并输出。
更佳地,所述的步骤(2-1),具体包括以下步骤:
(2-1-1)判断周期计数器是否有输出值,如果是,则继续步骤(2-1-2);
(2-1-2)根据以下公式计算24个周期内的采样点的个数之和:
SumTbuff=SumTbuff+T_counter–Tbuffer[23],
其中,SumTbuff为采样点数之和,T_counter为周期计数器的计数值,Tbuffer[23]为缓存器Tbuffer的第24个缓存值,所述的缓存器Tbuffer用于存储周期计数器T_counter的输出值,所述的缓存器Tbuffer的深度为24,且坚持先入先出的原则;
(2-1-2)更新所述的缓存器Tbuffer。
更佳地,所述的消除因采样导致的频率抖动,具体为:
通过一截止频率为8KHz,采样频率为109KHz的第二低通滤波器消除因采样导致的频率抖动。
更佳地,所述的对Fop点进行计数,包括基于差分法进行Fop点计数操作和基于右移法进行Fop点计数操作,所述的基于差分法进行Fop点计数操作,具体包括以下步骤:
(2-3-1)判断delta是否为0,如果是,则继续步骤(2-3-3),否则,继续步骤(2-3-2),其中,delta为滤波后的输出值的差分结果;
(2-3-2)将Count_delta清零,所述的Count_delta为delta为0时的计数值,继续步骤(2-3-4);
(2-3-3)将Count_delta加1,继续步骤(2-3-4);
(2-3-4)判断Count_delta是否大于第一常数,如果是,则继续步骤(2-3-5);
(2-3-5)将Count_delta清零,将Count_SumDiv4清零,将out_IIR的值作为sum_Fop,继续步骤(2-4),其中Count_SumDiv4为SumDiv4的计数值,SumDiv4为滤波后的输出值右移两位得到的值;
所述的基于右移法进行Fop点计数操作,具体包括以下步骤:
(2-3-a)判断当前SumDiv4与前一个SumDiv4是否相等,如果是,则继续步骤(2-3-b),否则,继续步骤(2-3-c);
(2-3-b)将Count_SumDiv4加1,继续步骤(2-3-d);
(2-3-c)将Count_SumDiv4清零,继续步骤(2-3-d);
(2-3-d)将当前SumDiv4覆盖前一个SumDiv4;
(2-3-e)判断Count_SumDiv4是否大于或等于第二常数且sum_delta的绝对值是否大于第三常数,如果是,则继续步骤(2-3-f);
(2-3-f)将Count_SumDiv4清零,将out_IIR的值作为sum_Fop,继续步骤(2-4)。
更佳地,所述的步骤(2-5)包括以下步骤:
(2-5-1)判断sum_delta的绝对值是否小于或等于第四常数,如果是,则继续步骤(2-5-2),否则,继续步骤(2-5-3);
(2-5-2)将clip_sum_delta=0作为修饰后的sum_delta,继续步骤(2-5-4);
(2-5-3)在一个相对于第四常数较小的区间内修饰sum_delta,继续步骤(2-5-4);
(2-5-4)输出修饰后的sum_delta数据。
更进一步地,所述的在一个相对于第四常数较小的区间内修饰sum_delta,具体包括以下步骤:
(2-5-3-1)判断sum_delta的绝对是否大于31,如果是,则继续步骤(2-5-3-2),否则,继续步骤(2-5-3-5);
(2-5-3-2)判断sum_delta是否大于0,如果是,则继续步骤(2-5-3-3),否则,继续步骤(2-5-3-4);
(2-5-3-3)将clip_sum_delta=31作为修饰后的sum_delta,继续步骤(2-5-4);
(2-5-3-4)将clip_sum_delta=-31作为修饰后的sum_delta,继续步骤(2-5-4);
(2-5-3-5)直接将sum_delta的值作为clip_sum_delta,继续步骤(2-5-4)
较佳地,所述的步骤(3)包括以下步骤:
(3-1)判断clip_sum_delta是否在0与非0值之间发生变化,如果是,则继续步骤(3-2);
(3-2)将reg_clk_count的值加上clk_count的值,作为新的reg_clk_count,并将clk_count清零,其中reg_clk_count为4MHz时钟计数器的累加值,clk_count为4MHz时钟计数器的计数值;
(3-3)对reg_clk_count进行数据判断,得到data_bit;
(3-4)根据data_bit输出数据;
(3-5)输出数据,并保存最近的bit_salve,其中输出的数据为0或1,bit_salve为数据判断保存值,所述的数据判断保存值用于保存最近被判断出的半个周期的情况,继续步骤(4)。
更佳地,所述的步骤(3-3)包括以下步骤:
(3-3-1)判断reg_clk_count是否大于或等于门限值const_f,如果是,则继续步骤(3-3-2),否则,继续步骤(3-3-3);
(3-3-2)将reg_clk_count清零,输出数据判断结果为data_bit=8,继续步骤(4);
(3-3-3)判断clip_sum_delta是否由非0值变为0,如果是,则继续步骤(3-3-4),否则,继续步骤(3-3-8);
(3-3-4)判断reg_clk_count是否大于门限值const_a,如果是,则继续步骤(3-3-5),否则,继续步骤(3-3-6);
(3-3-5)跳过判断,继续步骤(3-4);
(3-3-6)判断bit_salve是否等于3,如果是,则将数据判断结果记为情况a,否则,将数据判断结果记为情况b;
(3-3-7)将reg_clk_count的值减去门限值const_b,作为新的reg_clk_count,继续步骤(3-4);
(3-3-8)判断reg_clk_count是否小于门限值const_e,如果是,则将数据判断结果记为情况c并继续步骤(3-3-9),否则,继续步骤(3-3-10);
(3-3-9)将reg_clk_count清零,继续步骤(3-4);
(3-3-10))判断reg_clk_count是否小于门限值const_d,如果是,则继续步骤(3-3-11),否则,继续步骤(3-3-12);
(3-3-11)判断bit_salve是否等于2,如果是,则将数据判断结果记为情况d,否则,将数据判断结果记为情况e,继续步骤(3-3-9);
(3-3-12)判断reg_clk_count是否小于门限值const_c,如果是,则继续步骤(3-3-13),否则,继续步骤(3-3-15);
(3-3-13)判断bit_salve是否等于2,如果是,则将数据判断结果记为情况f并继续步骤(3-3-9),否则,继续步骤(3-3-14);
(3-3-14)判断bit_salve是否等于3,如果是,则将数据判断结果记为情况g,否则,将数据判断结果记为情况h,继续步骤(3-3-9);
(3-3-15)判断reg_clk_count是否小于门限值const_b,如果是,则继续步骤(3-3-16),否则,将数据判断结果记为情况j并继续步骤(3-3-9);
(3-3-16)判断bit_salve是否等于2,如果是,则将数据判断结果记为情况m并继续步骤(3-3-9),否则,继续步骤(3-3-17);
(3-3-17)判断bit_salve是否等于3,如果是,则将数据判断结果记为情况k,否则,将数据判断结果记为情况l,继续步骤(3-3-9)。
更佳地,所述的步骤(3-4)包括以下步骤:
(3-4-1)判断data_bit是否等于8,如果是,则继续步骤(3-4-2),否则,继续步骤(3-4-3);
(3-4-2)将reg_clk_count清零;
(3-4-3)判断data_bit的值;
(3-4-4)根据data_bit的值确定输出数据,并保存最近的bit_salve,其中,所述的输出数据为0或1,继续步骤(4)。
采用了该发明中的,在解调部分不需要复杂的模拟电路,其数字电路部分所要的最高频率也仅有4MHz,且在该频率下只有简单的加法操作,主要工作频率在236KHz以下,相比于现有的FSK解码方法,本方法的实现更加契合PMA标准的调频信号,且成本底,解调速度快,易于调试,对Fop是否固定没有要求,且精度较高,具有广泛的应用范围。
具体实施方式
为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。
在一种可行的实施方式中,该针对PMA标准的无线充电设备调频信号的解调方法,包括以下步骤:
(1)读取线圈信号,对所述的线圈信号进行采样,并对周期进行计数;
(2)根据周期计数的变化提取频率变化;
(3)根据频率变化与频率的持续时间判断数据并输出;
(4)拼接输出数据。
在一种较佳的实施方式中,所述的步骤(1),具体包括以下步骤:
(1-1)接收线圈信号,通过比较器将所述的线圈信号与0电平进行比较;
(1-2)通过4MHz频率读取所述的比较器的输出值;
(1-3)滤除所述的比较器的输出值中频率较高的抖动波形;
(1-4)通过周期计数器对周期进行计数。
在一种更佳的实施方式中,所述的通过第一低通滤波器滤除所述的比较器的输出值中频率较高的抖动波形,具体为:
通过一截止频率为5KHz、采样频率为2MHz的第一低通滤波器除所述的比较器的输出值中频率较高的抖动波形。
在一种更佳的实施方式中,所述的步骤(1-4),具体包括以下步骤:
(1-4-1)判断滤波后的比较器的输出值是否由0变为1,如果是,则继续步骤(1-4-2);否则,继续步骤(1-4-3);
(1-4-2)输出周期计数器的计数值,将所述的计数值清零,继续步骤(1-1);
(1-4-3)将周期计数器的计数值加1,继续步骤(1-1)。
在一种较佳的实施方式中,所述的步骤(2),具体包括以下步骤:
(2-1)根据最新一个周期的计数值计算最新24个周期内的采样点数之和;
(2-2)对所述的24个周期内的采样点数之和进行滤波,消除因采样导致的频率抖动;
(2-3)对Fop点进行计数;
(2-4)通过以下公式计算sum_delta:
sum_delta=out_IIR–sum_Fop,
其中,sum_delta为滤波后的输出值与当前判断出的Fop值sum_Fop的差分结果,out_IIR为滤波后的输出值,sum_Fop为Fop点的计数值;
(2-5)消除频率抖动,对波形进行修饰并输出。
在一种更佳的实施方式中,所述的步骤(2-1),具体包括以下步骤:
(2-1-1)判断周期计数器是否有输出值,如果是,则继续步骤(2-1-2);
(2-1-2)根据以下公式计算24个周期内的采样点的个数之和:
SumTbuff=SumTbuff+T_counter–Tbuffer[23],
其中,SumTbuff为采样点数之和,T_counter为周期计数器的计数值,Tbuffer[23]为缓存器Tbuffer的第24个缓存值,所述的缓存器Tbuffer用于存储周期计数器T_counter的输出值,所述的缓存器Tbuffer的深度为24,且坚持先入先出的原则;
(2-1-2)更新所述的缓存器Tbuffer。
在一种更佳的实施方式中,所述的消除因采样导致的频率抖动,具体为:
通过一截止频率为8KHz,采样频率为109KHz的第二低通滤波器消除因采样导致的频率抖动。
在一种更佳的实施方式中,所述的对Fop点进行计数,包括基于差分法进行Fop点计数操作和基于右移法进行Fop点计数操作,所述的基于差分法进行Fop点计数操作,具体包括以下步骤:
(2-3-1)判断delta是否为0,如果是,则继续步骤(2-3-3),否则,继续步骤(2-3-2),其中,delta为滤波后的输出值的差分结果;
(2-3-2)将Count_delta清零,所述的Count_delta为delta为0时的计数值,继续步骤(2-3-4);
(2-3-3)将Count_delta加1,继续步骤(2-3-4);
(2-3-4)判断Count_delta是否大于第一常数,如果是,则继续步骤(2-3-5);
(2-3-5)将Count_delta清零,将Count_SumDiv4清零,将out_IIR的值作为sum_Fop,继续步骤(2-4),其中Count_SumDiv4为SumDiv4的计数值,SumDiv4为滤波后的输出值右移两位得到的值;
所述的基于右移法进行Fop点计数操作,具体包括以下步骤:
(2-3-a)判断当前SumDiv4与前一个SumDiv4是否相等,如果是,则继续步骤(2-3-b),否则,继续步骤(2-3-c);
(2-3-b)将Count_SumDiv4加1,继续步骤(2-3-d);
(2-3-c)将Count_SumDiv4清零,继续步骤(2-3-d);
(2-3-d)将当前SumDiv4覆盖前一个SumDiv4;
(2-3-e)判断Count_SumDiv4是否大于或等于第二常数且sum_delta的绝对值是否大于第三常数,如果是,则继续步骤(2-3-f);
(2-3-f)将Count_SumDiv4清零,将out_IIR的值作为sum_Fop,继续步骤(2-4)。
在一种更佳的实施方式中,所述的步骤(2-5)包括以下步骤:
(2-5-1)判断sum_delta的绝对值是否小于或等于第四常数,如果是,则继续步骤(2-5-2),否则,继续步骤(2-5-3);
(2-5-2)将clip_sum_delta=0作为修饰后的sum_delta,继续步骤(2-5-4);
(2-5-3)在一个相对于第四常数较小的区间内修饰sum_delta,继续步骤(2-5-4);
(2-5-4)输出修饰后的sum_delta数据。
在一种更进一步的实施方式中,所述的在一个相对于第四常数较小的区间内修饰sum_delta,具体包括以下步骤:
(2-5-3-1)判断sum_delta的绝对是否大于31,如果是,则继续步骤(2-5-3-2),否则,继续步骤(2-5-3-5);
(2-5-3-2)判断sum_delta是否大于0,如果是,则继续步骤(2-5-3-3),否则,继续步骤(2-5-3-4);
(2-5-3-3)将clip_sum_delta=31作为修饰后的sum_delta,继续步骤(2-5-4);
(2-5-3-4)将clip_sum_delta=-31作为修饰后的sum_delta,继续步骤(2-5-4);
(2-5-3-5)直接将sum_delta的值作为clip_sum_delta,继续步骤(2-5-4)
在一种较佳的实施方式中,所述的步骤(3)包括以下步骤:
(3-1)判断clip_sum_delta是否在0与非0值之间发生变化,如果是,则继续步骤(3-2);
(3-2)将reg_clk_count的值加上clk_count的值,作为新的reg_clk_count,并将clk_count清零,其中reg_clk_count为4MHz时钟计数器的累加值,clk_count为4MHz时钟计数器的计数值;
(3-3)对reg_clk_count进行数据判断,得到data_bit;
(3-4)根据data_bit输出数据;
(3-5)输出数据,并保存最近的bit_salve,其中输出的数据为0或1,bit_salve为数据判断保存值,所述的数据判断保存值用于保存最近被判断出的半个周期的情况,继续步骤(4)。
在一种更佳的实施方式中,所述的步骤(3-3)包括以下步骤:
(3-3-1)判断reg_clk_count是否大于或等于门限值const_f,如果是,则继续步骤(3-3-2),否则,继续步骤(3-3-3);
(3-3-2)将reg_clk_count清零,输出数据判断结果为data_bit=8,继续步骤(4);
(3-3-3)判断clip_sum_delta是否由非0值变为0,如果是,则继续步骤(3-3-4),否则,继续步骤(3-3-8);
(3-3-4)判断reg_clk_count是否大于门限值const_a,如果是,则继续步骤(3-3-5),否则,继续步骤(3-3-6);
(3-3-5)跳过判断,继续步骤(3-4);
(3-3-6)判断bit_salve是否等于3,如果是,则将数据判断结果记为情况a,否则,将数据判断结果记为情况b;
(3-3-7)将reg_clk_count的值减去门限值const_b,作为新的reg_clk_count,继续步骤(3-4);
(3-3-8)判断reg_clk_count是否小于门限值const_e,如果是,则将数据判断结果记为情况c并继续步骤(3-3-9),否则,继续步骤(3-3-10);
(3-3-9)将reg_clk_count清零,继续步骤(3-4);
(3-3-10))判断reg_clk_count是否小于门限值const_d,如果是,则继续步骤(3-3-11),否则,继续步骤(3-3-12);
(3-3-11)判断bit_salve是否等于2,如果是,则将数据判断结果记为情况d,否则,将数据判断结果记为情况e,继续步骤(3-3-9);
(3-3-12)判断reg_clk_count是否小于门限值const_c,如果是,则继续步骤(3-3-13),否则,继续步骤(3-3-15);
(3-3-13)判断bit_salve是否等于2,如果是,则将数据判断结果记为情况f并继续步骤(3-3-9),否则,继续步骤(3-3-14);
(3-3-14)判断bit_salve是否等于3,如果是,则将数据判断结果记为情况g,否则,将数据判断结果记为情况h,继续步骤(3-3-9);
(3-3-15)判断reg_clk_count是否小于门限值const_b,如果是,则继续步骤(3-3-16),否则,将数据判断结果记为情况m并继续步骤(3-3-9);
(3-3-16)判断bit_salve是否等于2,如果是,则将数据判断结果记为情况j并继续步骤(3-3-9),否则,继续步骤(3-3-17);
(3-3-17)判断bit_salve是否等于3,如果是,则将数据判断结果记为情况k,否则,将数据判断结果记为情况l,继续步骤(3-3-9)。
在一种更佳的实施方式中,所述的步骤(3-4)包括以下步骤:
(3-4-1)判断data_bit是否等于8,如果是,则继续步骤(3-4-2),否则,继续步骤(3-4-3);
(3-4-2)将reg_clk_count清零;
(3-4-3)判断data_bit的值;
(3-4-4)根据data_bit的值确定输出数据,并保存最近的bit_salve,其中,所述的输出数据为0或1,继续步骤(4)。
本发明抛弃了传统2FSK相干解调与非相干解调的一贯做法,根据PMA标准中调频通讯信号的特性,模拟电路部分仅用一个比较器代替ADC采样电路,同时数字部分最高仅用4MHz的时钟频率即可实现对该FSK信号的解调,本发明实现过程如图2所示。
中功率无线充接收端及通讯协议中,由于发射端产生正弦波的方式是通过PWM控制,此方式可以更加容易的控制输出信号的频率与占空比,同时也导致了信号频谱复杂,不能通过一般的FSK方式进行解调。由于PWM调制方式其占空比是变化的,但其周期是固定不变的,因此本设计通过检测信号周期点数,并以该点数为信号进行处理,从而得到编码数据。本算法固定24个周期之和为处理对象,每检测到一个周期结束,输出一次最近的24个周期计数之和。而后根据该和值的变化趋势结合4MHz时钟计数器进行数据判断。
1)数据采集与周期点数处理:
线圈上的信号进入芯片在经过比较器与0电平比较之后,通过4MHz频率读取比较器输出值,则该值可视为4MHz的1bit采样数据,为保证输入信号的波形其抖动不至于影响后面的解码算法,将此数据先过一个低通滤波器,滤除其频率较高的抖动波形,然后再进行解调与解码处理。数据采集过程如图3所示。
以下为解码过程中变量名及其所代表的意义:
T_counter——周期计数器,长度为6bit,通过固定的频率计数,每次遇到上升沿输出数据并清零重新计数,在计数过程中无需考虑溢出问题。
2)依据周期点数之和的变化提取频率变化:
其流程如图4所示。
参数说明:
const1、const2、const3、const4——算法中涉及的常数;
Tbuffer——周期计数buffer,用于保存T_counter的输出值深度为23,先入先出;
SumTbuff——周期计数buffer成员之和,15bit,初始值为0;
delta——LPF2输出值差分结果;
Count_delta——delta值为0时的计数器,当delta为时0累加,变化时清零;
sum_delta——和值之差,表示当前滤波器输出值与Fop值之间的差值;
clip_sum_delta——修饰后的sum_delta数据。
如果计数器T_counter有输出,首先计算最近的24个周期的点数之和,然后将该输出值存入周期计数buffer中,在此以后以周期计数buffer成员之和——SumTbuff为对象进行后续处理。
SumTbuff即为23个周期点数之和。由于采样及干扰等原因,即便是在单频信号的情况下,SumTbuff数据也必然会出现一定的波动。此处我们以SumTbuff作为一个输入信号,其点数和的上下波动可视为频率较高处的噪声。
因此在整个处理过程中首先通过低通滤波器LPF2将SumTbuff中点数和的上下波动部分进行平滑处理。
平滑后的SumTbuff曲线其反映的便是频率的变化,此时将其进行差分。同时将差分后的信号进行图4中的一系列处理,从而消除和值中的抖动与偏置,仅余变化值,从而进行判断。
3)依据周期点数之和的变化曲线与4MHz时钟计数器进行数据判断:
其流程如图5所示。图4中输出数据为一类似正弦的波形,将其两0与非0跳变点(0到非0与非0到0)之间的4MHz时钟计数值作为数据判断的依据。该4MHz时钟计数器时钟在不停的计数,每次在clip_sum_delta的0与非0的跳变点取出该计数值并重新开始计数。
参数说明:
const_a、const_b、const_c、const_d、const_e,算法中涉及的4MHz时钟计数器门限值;
clip_sum_delta——周期点数处理模块输出;
clk_count——4MHz时钟计数器;
reg_clk_count——4MHz计数器输出寄存器;
data_bit——0表示检测到0,1表示检测到1,2表示检测fop+fmod+fop,3表示检测fmod+fop+fop,4表示检测到fop+fmod+fop,5表示检测到fmod+fop+long fop,6表示检测到fop+fmod+long fop,7表示暂不处理,8表示检测到error;
bit_salve——数据判断保存值,保存最近被判断出的半个周期,2表示为fop,3表示为fmod,0、1表示前一数据以判断完。
采用了该发明中的,在解调部分不需要复杂的模拟电路,其数字电路部分所要的最高频率也仅有4MHz,且在该频率下只有简单的加法操作,主要工作频率在236KHz以下,相比于现有的FSK解码方法,本方法的实现更加契合PMA标准的调频信号,且成本底,解调速度快,易于调试,对Fop是否固定没有要求,且精度较高,具有广泛的应用范围。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。