forked from espressif/arduino-esp32
RMT refactoring based on IDF (#6024)
Summary RMT HAL refactoring based on IDF. Impact Improves RMT by adding IDF v4.4 support. Receiving RMT can handle any size of data. rmtInit() has a new parameter - RxBufferSize - to hold any number of data when receiving RMT. rmtWrite() has a new parameter - wait_tx_done - to block writing until sending all data. Related links fix #5905
This commit is contained in:
@ -5,6 +5,17 @@
|
||||
|
||||
#include "esp32-hal.h"
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32C3
|
||||
// ESP32 C3 has only 2 channels for RX and 2 for TX, thus MAX RMT_MEM is 128
|
||||
#define RMT_TX_PIN 4
|
||||
#define RMT_RX_PIN 5
|
||||
#define RMT_MEM_RX RMT_MEM_128
|
||||
#else
|
||||
#define RMT_TX_PIN 18
|
||||
#define RMT_RX_PIN 21
|
||||
#define RMT_MEM_RX RMT_MEM_192
|
||||
#endif
|
||||
|
||||
rmt_data_t my_data[256];
|
||||
rmt_data_t data[256];
|
||||
|
||||
@ -18,18 +29,19 @@ void setup()
|
||||
Serial.begin(115200);
|
||||
events = xEventGroupCreate();
|
||||
|
||||
if ((rmt_send = rmtInit(18, true, RMT_MEM_64)) == NULL)
|
||||
if ((rmt_send = rmtInit(RMT_TX_PIN, RMT_TX_MODE, RMT_MEM_64)) == NULL)
|
||||
{
|
||||
Serial.println("init sender failed\n");
|
||||
}
|
||||
if ((rmt_recv = rmtInit(21, false, RMT_MEM_192)) == NULL)
|
||||
if ((rmt_recv = rmtInit(RMT_RX_PIN, RMT_RX_MODE, RMT_MEM_RX)) == NULL)
|
||||
{
|
||||
Serial.println("init receiver failed\n");
|
||||
}
|
||||
|
||||
float realTick = rmtSetTick(rmt_send, 100);
|
||||
printf("real tick set to: %fns\n", realTick);
|
||||
|
||||
// both will keep same tick
|
||||
realTick = rmtSetTick(rmt_recv, 100);
|
||||
}
|
||||
|
||||
void loop()
|
||||
|
Reference in New Issue
Block a user