Page 1 of 1

关于RMT的问题

Posted: Mon Dec 09, 2019 9:16 am
by lqzero
测试了rmt_nec_tx_rx这个demo,可以识别32位的nec码值,我如果想识别64位的红外码应该如何修改代码,改了一下午没成功 :shock:

Re: 关于RMT的问题

Posted: Sun Jan 05, 2020 5:00 am
by ESP_houwenxiang
Hi, 由于 ESP32 RMT 每个接收和发送模块默认的 memory 是一个 block 大小, 最多只能接收 63 个序列. 所以 64bit 是无法被接收的.
但是通道的大小是可以拓展的, 比如通道 0 可以占用 通道 1 的 memory, 这样可以接收超过 63 个序列.

Code: Select all

typedef struct {
    rmt_mode_t rmt_mode;               /*!< RMT mode: transmitter or receiver */
    rmt_channel_t channel;             /*!< RMT channel */
    uint8_t clk_div;                   /*!< RMT channel counter divider */
    gpio_num_t gpio_num;               /*!< RMT GPIO number */
    uint8_t mem_block_num;             /*!< RMT memory block number */
    union{
        rmt_tx_config_t tx_config;     /*!< RMT TX parameter */
        rmt_rx_config_t rx_config;     /*!< RMT RX parameter */
    };
} rmt_config_t;
你需要设置 ' uint8_t mem_block_num;' 这个参数为2.

注意通道1 的memory 被通道 0 占用后, 通道 1 将不能使用.