牛卧堂MCU技术交流
标题: pwm nuedu nec 有关pwm配置问题 [打印本页]
作者: arm_nuedu 时间: 2017-11-16 14:39
标题: pwm nuedu nec 有关pwm配置问题
本帖最后由 arm_nuedu 于 2017-11-16 14:45 编辑
在新唐m4 nuedu 红外线接收与发送的程序中,关于pwm有一下配置。
问题:1:什么是施密特触发,
我的理解:平时都是高于某一临界值,高便为高,低便是低,施密特等于说设置了两个值。高于一个临界值才是高,低同样这样抗干扰的能力肯定会更高。
只是在trm技术手册上没有看到pwm capture的相关简介,所以厚着脸皮来这里问问
。。。。
2:capture的1000是怎么选的?在nec bit0/1 的规范中如图下面附件,有560us的pwm方波和560的低电平,capture下降沿应该不会收到560us pwm那个影响(因为他是30%占空比,它本身就有下降沿,从程序来看,这个下降沿应该没算),应该跟1000这个设置有关系,但就是想不通
我的理解:1/38000 =2.63*10^-5,就是26us,即使再 *0.3,高电平也是7.8us。
那么capture的1000怎么算出来的呢???
点进入,该参数的说明是计数的单位。该单位是ns级的,设为1000,也就是1us记一个数。
如果这样,pwm 输出时,NEC协议要求的,560us微妙的pwm,都会引起pwmcapture的捕获,不是吗?
在nec rx函数中是严格控制步骤,应该不会这样:
下面是部分rx程序:
voidIrDa_NEC_Rx(uint32_t u32Time)
{
if(IR_State == 0)
{
IR_LDC_Ready = 0; // Clear LeaDer Code Ready
IR_CTC_Ready = 0; // Clear CusTomer Code Ready
IR_State++;
}
// Leader or Repeater code
else if(IR_State == 1)
{
// Leader code
if((u32Time >= IR_LDC_MIN)&& (u32Time <= IR_LDC_MAX))
{
IR_LDC_Ready = 1; // Set LeaDer Code Ready
IR_State++;
}
else
{
IR_State = 1;
IR_LDC_Ready = 0; // Clear LeaDer Code Ready
IR_CTC_Ready = 0; // Clear CusTomer Code Ready
}
}
// Customer code 0
else if((IR_State >= 2 &&IR_State < 10) && (IR_LDC_Ready == 1))
{
IR_State++;
IR_CTC0 = IR_CTC0 >> 1;
这是配置函数:
输出
PWM_ConfigOutputChannel(PWM0,3, 38000, 30);
接收
/* set PWM1 channel 3 capture configuration*/
PWM_ConfigCaptureChannel(PWM0, 5, 1000,0);//1000说是捕获单位,单位是ns,我觉得不对的是,72M对应不是ns. 0没有用
/* Enable capture falling edge interruptfor PWM1 channel 3 */
PWM_EnableCaptureInt(PWM0, 5,PWM_CAPTURE_INT_FALLING_LATCH);
/* Enable PWM1 NVIC interrupt */
NVIC_EnableIRQ(PWM0P2_IRQn);
/* Enable Timer for PWM1 channel 3 */
PWM_Start(PWM0, PWM_CH_5_MASK);
/*Enable Input Schmitt Trigger*/
PD->SMTEN |= GPIO_SMTEN_SMTEN7_Msk;
/* Enable Capture Function for PWM1 channel3 */
PWM_EnableCapture(PWM0, PWM_CH_5_MASK);
/* Enable falling capture reload */
PWM0->CAPCTL |= PWM_CAPCTL_FCRLDEN5_Msk;
作者: Angus 时间: 2017-12-28 17:50
这样的遥控器波形,发送可以用PWM,只要确定发出多少个PWM周期即可,发0配置一个引脚,输出常0
接收要是滤波的,把PWM全滤除。得出脉冲波,再用PWM的捕获测脉冲的时间。
欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) |
Powered by Discuz! X3.2 |