请教ESP32 IDF4.1 RMT产生红外脉冲的问题

vvhh2002
Posts: 1
Joined: Sat Dec 14, 2019 5:23 pm

请教ESP32 IDF4.1 RMT产生红外脉冲的问题

Postby vvhh2002 » Sat May 23, 2020 12:30 pm

我在使用IDF 4.1 的RMT模块时,先按照例子的方式配置了接收和发送代码,使用另外的红外发生器发送代码到开发板上,然后将接收到的数据,反向发送出来,红外示波器看起来,丢掉了大约一半的脉冲时间,从接收到的原始数据来看,每个rmt_item32_t中的duration0和duration1 折算成时间值,似乎都只有实际发送的1/2左右。
这是为什么呢?

我的Ticks时间计算是按照,80Mhz/CLK_DIV/1000,000 计算的。



接收代码如下:

Code: Select all

    rmt_item32_t rmt_rx_data[1000];
........

    rmt_config_t rmt_rx_config = RMT_DEFAULT_CONFIG_RX(GPIO_NUM_35, RMT_CHANNEL_0);
    // 这里的CLK_DIV为80,filter_ticks_thresh=100 ,idle_threshold=12000

    rmt_config(&rmt_rx_config);
    rmt_driver_install(RMT_CHANNEL_0, 1000, 0);
    //get RMT RX ringbuffer
    rmt_get_ringbuf_handle(RMT_CHANNEL_0, &rb);
    // Start receive
    rmt_rx_start(RMT_CHANNEL_0, true);
    while (rb&&!is_stop) {
        items = (rmt_item32_t *) xRingbufferReceive(rb, &length, 1000);
        if (items) {
            rmt_rx_data_size=length;
            memcpy(rmt_rx_data, items, length);
            vRingbufferReturnItem(rb, (void *) items);
        } else {
            break;
        }
    }

Who is online

Users browsing this forum: No registered users and 191 guests