这是为什么呢?
我的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;
}
}