有人在esp32上面实现过红外解码的工作吗?
有人在esp32上面实现过红外解码的工作吗?
我原来在ST的单片机上实现过,具体是进IO中断然后判断高电平时常来进行解码的,但是我在esp32中试过,感觉不太好搞啊(中断时试过,通过信号量在线程中也试过)。求教求教~
-
- Posts: 118
- Joined: Tue Jun 26, 2018 3:09 am
Re: 有人在esp32上面实现过红外解码的工作吗?
ESP32 有 RMT 模块, 可以接收不带载波的序列, 然后软件进行解码, 是否可以尝试一下?
示例代码路径为 IDF_PATH/example/peripherals/rmt_nec_tx_rx
谢谢
示例代码路径为 IDF_PATH/example/peripherals/rmt_nec_tx_rx
谢谢
wookooho
Re: 有人在esp32上面实现过红外解码的工作吗?
demo详细看过啦,想请教两个问题1、我发连续发码改为了只发一次,为什么接收不到2、tx rx没连接有时会出现rx buffer full的情况,干扰问题?ESP_houwenxiang wrote: ↑Wed Aug 07, 2019 2:18 amESP32 有 RMT 模块, 可以接收不带载波的序列, 然后软件进行解码, 是否可以尝试一下?
示例代码路径为 IDF_PATH/example/peripherals/rmt_nec_tx_rx
谢谢
-
- Posts: 118
- Joined: Tue Jun 26, 2018 3:09 am
Re: 有人在esp32上面实现过红外解码的工作吗?
1. 请问你是将 ESP32 的发送引脚与接收引脚连接进行的测试吗?demo详细看过啦,想请教两个问题1、我发连续发码改为了只发一次,为什么接收不到2、tx rx没连接有时会出现rx buffer full的情况,干扰问题?
2. 是否可以提供一下测试代码? 我将测试代码修改后, 发送一次是可以接收到的
wookooho
Re: 有人在esp32上面实现过红外解码的工作吗?
测试demo时是发送与接收连接测试的。ESP_houwenxiang wrote: ↑Thu Aug 15, 2019 2:41 am1. 请问你是将 ESP32 的发送引脚与接收引脚连接进行的测试吗?demo详细看过啦,想请教两个问题1、我发连续发码改为了只发一次,为什么接收不到2、tx rx没连接有时会出现rx buffer full的情况,干扰问题?
2. 是否可以提供一下测试代码? 我将测试代码修改后, 发送一次是可以接收到的
代码如下
static void rmt_example_nec_tx_task()
{
vTaskDelay(10);
nec_tx_init();
esp_log_level_set(NEC_TAG, ESP_LOG_INFO);
int channel = RMT_TX_CHANNEL;
uint16_t cmd = 0x0;
uint16_t addr = 0x11;
int nec_tx_num = RMT_TX_DATA_NUM;
for(;;) {
ESP_LOGI(NEC_TAG, "RMT TX DATA");
size_t size = (sizeof(rmt_item32_t) * NEC_DATA_ITEM_NUM * nec_tx_num);
//each item represent a cycle of waveform.
rmt_item32_t* item = (rmt_item32_t*) malloc(size);
int item_num = NEC_DATA_ITEM_NUM * nec_tx_num;
memset((void*) item, 0, size);
int i, offset = 0;
//To build a series of waveforms.
i = nec_build_items(channel, item + offset, item_num - offset, ((~addr) << 8) | addr, ((~cmd) << 8) | cmd);
if(i < 0) {
break;
}
offset += i;
//To send data according to the waveform items.
rmt_write_items(channel, item, item_num, true);
//Wait until sending is done.
rmt_wait_tx_done(channel, portMAX_DELAY);
//before we free the data, make sure sending is already done.
free(item);
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
vTaskDelete(NULL);
}
接收函数没怎么修改。
还有一个关键问题是RX buffer full问题怎么解决 。
求教。
-
- Posts: 118
- Joined: Tue Jun 26, 2018 3:09 am
Re: 有人在esp32上面实现过红外解码的工作吗?
, 还是不能复现你描述的问题, 我将 GPIO18,GPIO19 短接, 测试这个代码.可以正常运行. 是否可以提供复现该问题的测试工程?
wookooho
Who is online
Users browsing this forum: No registered users and 36 guests