嵌入式学习记录(2):ev1527踩坑,软件模拟发射波形

特性

  • 20 位地址码:支持 1048576 组唯一编码,降低重复概率。
  • 4 位按键码:支持 16 种按键组合。
  • 同步脉冲:每帧数据以同步码开头,便于接收端识别。
  • 软件解码:需通过单片机解析信号,灵活性高。

硬件:

某宝买的H34S(发射模块),JJ43S(接收模块),买前先咨询编码方式是哪种。很重要

注:JJ43S需将低功耗引脚SLP接地才能正常使用。

时序图

如时序图和振荡周期表,以330K/3V为例,1.69ms是完整一个周期的时间,一个周期为4+12LCK=16LCK,即一个LCK=1.69/16=105.625us,故需要使用定时器产生105.625us的延时。

软件:

只需按正常协议发波即可,重点是需要连续发3次确定被接收到,刚开始发1次,330K的振荡周期都试过了,还是不行,后面观察自动发射的模块波形才发现是连续发3次,可能是JJ43S软件解码的原因导致。

 总结软件实施步骤:

1.延时函数通过定时器中断产生1us,再根据需要的振荡周期进行配置

2.保证同步码在前,接着是地址和数据,除同步码外,共需发送24位(20位地址+4位数据)

具体如下: 

 延时函数:

// 延时一个振荡周期
void delay_one_osc_period(void) {
    TIM_SetCounter(TIM3, 0);
    while (TIM_GetCounter(TIM3) < TIM_PERIOD);
}

 同步码:

// 发送同步码
void send_sync_code(void) {
    uint8_t i;
	
    // 高电平部分
    GPIO_SetBits(GPIOA, GPIO_Pin_0);
    for (i = 0; i < SYNC_CODE_LENGTH_HIGH; i++) {
        delay_one_osc_period();
    }	
    // 低电平部分
    GPIO_ResetBits(GPIOA, GPIO_Pin_0);
    for (i = 0; i < SYNC_CODE_LENGTH_LOW; i++) {
        delay_one_osc_period();
    }

}

 数据位:

// 发送一个数据位
void send_data_bit(bool bit) {
    uint8_t i;
    if (bit) {
        // DATA(H) 12LCK高 + 4LCK低
        GPIO_SetBits(GPIOA, GPIO_Pin_0);
        for (i = 0; i < 12; i++) {
            delay_one_osc_period();
        }
        GPIO_ResetBits(GPIOA, GPIO_Pin_0);
        for (i = 0; i < 4; i++) {
            delay_one_osc_period();
        }
    } else {
        // DATA(L) 4LCK高 + 12LCK低
        GPIO_SetBits(GPIOA, GPIO_Pin_0);
        for (i = 0; i < 4; i++) {
            delay_one_osc_period();
        }
        GPIO_ResetBits(GPIOA, GPIO_Pin_0);
        for (i = 0; i < 12; i++) {
            delay_one_osc_period();
        }
    }
}

 发送整帧:

// 发送编码数据
void send_encoded_data(uint32_t data) {
    uint8_t i;
    for (i = 0; i < 24; i++) {
        send_data_bit((data >> (23 - i)) & 0x01);
    }
}

波形:

总结:

1.连续发送3次,正常接收,330K所有等级电压均适合,按需选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值