STM32 PWM+曼彻斯特编码低频唤醒AS3933问题请教

2019-07-20 22:08发布

AS3933低频唤醒帧格式如下图1所示:
现在小弟准备利用已经调好的pwm波形,输出特定的曼彻斯特编码帧格式进行对as3933芯片的低频唤醒。

图2是需要实现的帧格式。

我目前的实现方法是:
曼彻斯特编码的1,即1->0,
                     0,即0->1.

要想实现图2的帧格式,我是想利用pwm的开关来实现从1->0,0->1的跳变。代码如下所示。
void STM32_PWM_ENABLE()
{
        TIM_CtrlPWMOutputs(TIM1, ENABLE);
        TIM_Cmd(TIM1, ENABLE);
}
void STM32_PWM_DISABLE()
{
        TIM_CtrlPWMOutputs(TIM1, DISABLE);               
        TIM_Cmd(TIM1, DISABLE);
}

void manchester_one()
{
        STM32_PWM_ENABLE();
        Delay(1);
        STM32_PWM_DISABLE();
        Delay(1);
}

void manchester_zero()
{
        STM32_PWM_DISABLE();
        Delay(1);   //Ñóê±1ms
        STM32_PWM_ENABLE();
        Delay(1);
        STM32_PWM_DISABLE();//1Øμôpwm2¨DÎêä3ö
}

void carrier_burst()
{
        STM32_PWM_ENABLE();
        Delay(1);
        STM32_PWM_DISABLE();
        Delay(1);
}

void qin_pwm()
{
        uint16_t i = 0;
                /*¼ù¶¨ò»¸öÂü31Ë1ìØÂëÔa3¤¶èÎa360us*/
       
        /*2åèëÔØ2¨DÅoÅ3ms*/
        carrier_burst();
       
#if 1
        /*Ç°μ&#188reamble 0xFF*/
        for(i = 0; i < 8;i++)
        {
                manchester_one();
        }
                       
        /*&#196;£ê&#189;pattern 0x96*/
        manchester_one();
        manchester_zero();
        manchester_zero();
        manchester_one();
        manchester_zero();
        manchester_one();
        manchester_one();
        manchester_zero();


        /* SOF */
        for(i = 0; i < 7;i++)
        {
                manchester_one();
        }
        manchester_zero();

        /* ID */
        for(i = 0; i < 8;i++)
        {
                manchester_one();
        }
       
        /* CRC16 */
        for(i = 0; i < 8;i++)
        {
                manchester_one();
        }
                        #endif
        /* EOF 0xaa*/
        for(i = 0; i < 4;i++)
        {
                manchester_one();
                manchester_zero();
        }

        delay_ms(500);

}

软件模拟的波形如下图图三所示。
困惑点:
1、AS3933的一个码元的长度,比如说是125K低频信号的多少个周期?
2、这样子的程序设计思路是否存在问题?如果有问题该怎么去调整?
3、用示波器去看这个波形的话不稳定一直在跑(while(1)里面每隔一段时间发送图三这样的波形,但是示波器看的话这个波形一直在移动),是什么原因?
4、AS3933芯片论坛里大大有资料的帮忙共享下,着急死了



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。