mirror of
https://github.com/espressif/esp-idf.git
synced 2024-09-20 00:36:01 -04:00
rmt: restructure rmt_signal_conn_t
This commit is contained in:
parent
a1494809b2
commit
8e483e34a8
@ -125,8 +125,8 @@ static void rmt_module_enable(void)
|
|||||||
{
|
{
|
||||||
RMT_ENTER_CRITICAL();
|
RMT_ENTER_CRITICAL();
|
||||||
if (rmt_contex.rmt_module_enabled == false) {
|
if (rmt_contex.rmt_module_enabled == false) {
|
||||||
periph_module_reset(rmt_periph_signals.module);
|
periph_module_reset(rmt_periph_signals.groups[0].module);
|
||||||
periph_module_enable(rmt_periph_signals.module);
|
periph_module_enable(rmt_periph_signals.groups[0].module);
|
||||||
rmt_contex.rmt_module_enabled = true;
|
rmt_contex.rmt_module_enabled = true;
|
||||||
}
|
}
|
||||||
RMT_EXIT_CRITICAL();
|
RMT_EXIT_CRITICAL();
|
||||||
@ -137,7 +137,7 @@ static void rmt_module_disable(void)
|
|||||||
{
|
{
|
||||||
RMT_ENTER_CRITICAL();
|
RMT_ENTER_CRITICAL();
|
||||||
if (rmt_contex.rmt_module_enabled == true) {
|
if (rmt_contex.rmt_module_enabled == true) {
|
||||||
periph_module_disable(rmt_periph_signals.module);
|
periph_module_disable(rmt_periph_signals.groups[0].module);
|
||||||
rmt_contex.rmt_module_enabled = false;
|
rmt_contex.rmt_module_enabled = false;
|
||||||
}
|
}
|
||||||
RMT_EXIT_CRITICAL();
|
RMT_EXIT_CRITICAL();
|
||||||
@ -533,11 +533,11 @@ esp_err_t rmt_set_gpio(rmt_channel_t channel, rmt_mode_t mode, gpio_num_t gpio_n
|
|||||||
if (mode == RMT_MODE_TX) {
|
if (mode == RMT_MODE_TX) {
|
||||||
RMT_CHECK(RMT_IS_TX_CHANNEL(channel), RMT_CHANNEL_ERROR_STR, ESP_ERR_INVALID_ARG);
|
RMT_CHECK(RMT_IS_TX_CHANNEL(channel), RMT_CHANNEL_ERROR_STR, ESP_ERR_INVALID_ARG);
|
||||||
gpio_set_direction(gpio_num, GPIO_MODE_OUTPUT);
|
gpio_set_direction(gpio_num, GPIO_MODE_OUTPUT);
|
||||||
esp_rom_gpio_connect_out_signal(gpio_num, rmt_periph_signals.channels[channel].tx_sig, invert_signal, 0);
|
esp_rom_gpio_connect_out_signal(gpio_num, rmt_periph_signals.groups[0].channels[channel].tx_sig, invert_signal, 0);
|
||||||
} else {
|
} else {
|
||||||
RMT_CHECK(RMT_IS_RX_CHANNEL(channel), RMT_CHANNEL_ERROR_STR, ESP_ERR_INVALID_ARG);
|
RMT_CHECK(RMT_IS_RX_CHANNEL(channel), RMT_CHANNEL_ERROR_STR, ESP_ERR_INVALID_ARG);
|
||||||
gpio_set_direction(gpio_num, GPIO_MODE_INPUT);
|
gpio_set_direction(gpio_num, GPIO_MODE_INPUT);
|
||||||
esp_rom_gpio_connect_in_signal(gpio_num, rmt_periph_signals.channels[channel].rx_sig, invert_signal);
|
esp_rom_gpio_connect_in_signal(gpio_num, rmt_periph_signals.groups[0].channels[channel].rx_sig, invert_signal);
|
||||||
}
|
}
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
@ -722,7 +722,7 @@ esp_err_t rmt_isr_register(void (*fn)(void *), void *arg, int intr_alloc_flags,
|
|||||||
RMT_CHECK((fn != NULL), RMT_ADDR_ERROR_STR, ESP_ERR_INVALID_ARG);
|
RMT_CHECK((fn != NULL), RMT_ADDR_ERROR_STR, ESP_ERR_INVALID_ARG);
|
||||||
RMT_CHECK(rmt_contex.rmt_driver_channels == 0, "RMT driver installed, can not install generic ISR handler", ESP_FAIL);
|
RMT_CHECK(rmt_contex.rmt_driver_channels == 0, "RMT driver installed, can not install generic ISR handler", ESP_FAIL);
|
||||||
|
|
||||||
return esp_intr_alloc(rmt_periph_signals.irq, intr_alloc_flags, fn, arg, handle);
|
return esp_intr_alloc(rmt_periph_signals.groups[0].irq, intr_alloc_flags, fn, arg, handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
esp_err_t rmt_isr_deregister(rmt_isr_handle_t handle)
|
esp_err_t rmt_isr_deregister(rmt_isr_handle_t handle)
|
||||||
|
@ -14,12 +14,12 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "soc/soc_caps.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "soc/soc_caps.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief RMT channel ID
|
* @brief RMT channel ID
|
||||||
*
|
*
|
||||||
|
@ -17,40 +17,44 @@
|
|||||||
#include "soc/soc.h"
|
#include "soc/soc.h"
|
||||||
|
|
||||||
const rmt_signal_conn_t rmt_periph_signals = {
|
const rmt_signal_conn_t rmt_periph_signals = {
|
||||||
.module = PERIPH_RMT_MODULE,
|
.groups = {
|
||||||
.irq = ETS_RMT_INTR_SOURCE,
|
|
||||||
.channels = {
|
|
||||||
[0] = {
|
[0] = {
|
||||||
.tx_sig = RMT_SIG_OUT0_IDX,
|
.module = PERIPH_RMT_MODULE,
|
||||||
.rx_sig = RMT_SIG_IN0_IDX
|
.irq = ETS_RMT_INTR_SOURCE,
|
||||||
},
|
.channels = {
|
||||||
[1] = {
|
[0] = {
|
||||||
.tx_sig = RMT_SIG_OUT1_IDX,
|
.tx_sig = RMT_SIG_OUT0_IDX,
|
||||||
.rx_sig = RMT_SIG_IN1_IDX
|
.rx_sig = RMT_SIG_IN0_IDX
|
||||||
},
|
},
|
||||||
[2] = {
|
[1] = {
|
||||||
.tx_sig = RMT_SIG_OUT2_IDX,
|
.tx_sig = RMT_SIG_OUT1_IDX,
|
||||||
.rx_sig = RMT_SIG_IN2_IDX
|
.rx_sig = RMT_SIG_IN1_IDX
|
||||||
},
|
},
|
||||||
[3] = {
|
[2] = {
|
||||||
.tx_sig = RMT_SIG_OUT3_IDX,
|
.tx_sig = RMT_SIG_OUT2_IDX,
|
||||||
.rx_sig = RMT_SIG_IN3_IDX
|
.rx_sig = RMT_SIG_IN2_IDX
|
||||||
},
|
},
|
||||||
[4] = {
|
[3] = {
|
||||||
.tx_sig = RMT_SIG_OUT4_IDX,
|
.tx_sig = RMT_SIG_OUT3_IDX,
|
||||||
.rx_sig = RMT_SIG_IN4_IDX
|
.rx_sig = RMT_SIG_IN3_IDX
|
||||||
},
|
},
|
||||||
[5] = {
|
[4] = {
|
||||||
.tx_sig = RMT_SIG_OUT5_IDX,
|
.tx_sig = RMT_SIG_OUT4_IDX,
|
||||||
.rx_sig = RMT_SIG_IN5_IDX
|
.rx_sig = RMT_SIG_IN4_IDX
|
||||||
},
|
},
|
||||||
[6] = {
|
[5] = {
|
||||||
.tx_sig = RMT_SIG_OUT6_IDX,
|
.tx_sig = RMT_SIG_OUT5_IDX,
|
||||||
.rx_sig = RMT_SIG_IN6_IDX
|
.rx_sig = RMT_SIG_IN5_IDX
|
||||||
},
|
},
|
||||||
[7] = {
|
[6] = {
|
||||||
.tx_sig = RMT_SIG_OUT7_IDX,
|
.tx_sig = RMT_SIG_OUT6_IDX,
|
||||||
.rx_sig = RMT_SIG_IN7_IDX
|
.rx_sig = RMT_SIG_IN6_IDX
|
||||||
|
},
|
||||||
|
[7] = {
|
||||||
|
.tx_sig = RMT_SIG_OUT7_IDX,
|
||||||
|
.rx_sig = RMT_SIG_IN7_IDX
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -16,24 +16,28 @@
|
|||||||
#include "soc/gpio_sig_map.h"
|
#include "soc/gpio_sig_map.h"
|
||||||
|
|
||||||
const rmt_signal_conn_t rmt_periph_signals = {
|
const rmt_signal_conn_t rmt_periph_signals = {
|
||||||
.module = PERIPH_RMT_MODULE,
|
.groups = {
|
||||||
.irq = ETS_RMT_INTR_SOURCE,
|
|
||||||
.channels = {
|
|
||||||
[0] = {
|
[0] = {
|
||||||
.tx_sig = RMT_SIG_OUT0_IDX,
|
.module = PERIPH_RMT_MODULE,
|
||||||
.rx_sig = -1
|
.irq = ETS_RMT_INTR_SOURCE,
|
||||||
},
|
.channels = {
|
||||||
[1] = {
|
[0] = {
|
||||||
.tx_sig = RMT_SIG_OUT1_IDX,
|
.tx_sig = RMT_SIG_OUT0_IDX,
|
||||||
.rx_sig = -1
|
.rx_sig = -1
|
||||||
},
|
},
|
||||||
[2] = {
|
[1] = {
|
||||||
.tx_sig = -1,
|
.tx_sig = RMT_SIG_OUT1_IDX,
|
||||||
.rx_sig = RMT_SIG_IN0_IDX
|
.rx_sig = -1
|
||||||
},
|
},
|
||||||
[3] = {
|
[2] = {
|
||||||
.tx_sig = -1,
|
.tx_sig = -1,
|
||||||
.rx_sig = RMT_SIG_IN1_IDX
|
.rx_sig = RMT_SIG_IN0_IDX
|
||||||
},
|
},
|
||||||
|
[3] = {
|
||||||
|
.tx_sig = -1,
|
||||||
|
.rx_sig = RMT_SIG_IN1_IDX
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -16,24 +16,28 @@
|
|||||||
#include "soc/gpio_sig_map.h"
|
#include "soc/gpio_sig_map.h"
|
||||||
|
|
||||||
const rmt_signal_conn_t rmt_periph_signals = {
|
const rmt_signal_conn_t rmt_periph_signals = {
|
||||||
.module = PERIPH_RMT_MODULE,
|
.groups = {
|
||||||
.irq = ETS_RMT_INTR_SOURCE,
|
|
||||||
.channels = {
|
|
||||||
[0] = {
|
[0] = {
|
||||||
.tx_sig = RMT_SIG_OUT0_IDX,
|
.module = PERIPH_RMT_MODULE,
|
||||||
.rx_sig = RMT_SIG_IN0_IDX
|
.irq = ETS_RMT_INTR_SOURCE,
|
||||||
},
|
.channels = {
|
||||||
[1] = {
|
[0] = {
|
||||||
.tx_sig = RMT_SIG_OUT1_IDX,
|
.tx_sig = RMT_SIG_OUT0_IDX,
|
||||||
.rx_sig = RMT_SIG_IN1_IDX
|
.rx_sig = RMT_SIG_IN0_IDX
|
||||||
},
|
},
|
||||||
[2] = {
|
[1] = {
|
||||||
.tx_sig = RMT_SIG_OUT2_IDX,
|
.tx_sig = RMT_SIG_OUT1_IDX,
|
||||||
.rx_sig = RMT_SIG_IN2_IDX
|
.rx_sig = RMT_SIG_IN1_IDX
|
||||||
},
|
},
|
||||||
[3] = {
|
[2] = {
|
||||||
.tx_sig = RMT_SIG_OUT3_IDX,
|
.tx_sig = RMT_SIG_OUT2_IDX,
|
||||||
.rx_sig = RMT_SIG_IN3_IDX
|
.rx_sig = RMT_SIG_IN2_IDX
|
||||||
|
},
|
||||||
|
[3] = {
|
||||||
|
.tx_sig = RMT_SIG_OUT3_IDX,
|
||||||
|
.rx_sig = RMT_SIG_IN3_IDX
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -16,40 +16,44 @@
|
|||||||
#include "soc/gpio_sig_map.h"
|
#include "soc/gpio_sig_map.h"
|
||||||
|
|
||||||
const rmt_signal_conn_t rmt_periph_signals = {
|
const rmt_signal_conn_t rmt_periph_signals = {
|
||||||
.module = PERIPH_RMT_MODULE,
|
.groups = {
|
||||||
.irq = ETS_RMT_INTR_SOURCE,
|
|
||||||
.channels = {
|
|
||||||
[0] = {
|
[0] = {
|
||||||
.tx_sig = RMT_SIG_OUT0_IDX,
|
.module = PERIPH_RMT_MODULE,
|
||||||
.rx_sig = -1
|
.irq = ETS_RMT_INTR_SOURCE,
|
||||||
},
|
.channels = {
|
||||||
[1] = {
|
[0] = {
|
||||||
.tx_sig = RMT_SIG_OUT1_IDX,
|
.tx_sig = RMT_SIG_OUT0_IDX,
|
||||||
.rx_sig = -1
|
.rx_sig = -1
|
||||||
},
|
},
|
||||||
[2] = {
|
[1] = {
|
||||||
.tx_sig = RMT_SIG_OUT2_IDX,
|
.tx_sig = RMT_SIG_OUT1_IDX,
|
||||||
.rx_sig = -1
|
.rx_sig = -1
|
||||||
},
|
},
|
||||||
[3] = {
|
[2] = {
|
||||||
.tx_sig = RMT_SIG_OUT3_IDX,
|
.tx_sig = RMT_SIG_OUT2_IDX,
|
||||||
.rx_sig = -1
|
.rx_sig = -1
|
||||||
},
|
},
|
||||||
[4] = {
|
[3] = {
|
||||||
.tx_sig = -1,
|
.tx_sig = RMT_SIG_OUT3_IDX,
|
||||||
.rx_sig = RMT_SIG_IN0_IDX
|
.rx_sig = -1
|
||||||
},
|
},
|
||||||
[5] = {
|
[4] = {
|
||||||
.tx_sig = -1,
|
.tx_sig = -1,
|
||||||
.rx_sig = RMT_SIG_IN1_IDX
|
.rx_sig = RMT_SIG_IN0_IDX
|
||||||
},
|
},
|
||||||
[6] = {
|
[5] = {
|
||||||
.tx_sig = -1,
|
.tx_sig = -1,
|
||||||
.rx_sig = RMT_SIG_IN2_IDX
|
.rx_sig = RMT_SIG_IN1_IDX
|
||||||
},
|
},
|
||||||
[7] = {
|
[6] = {
|
||||||
.tx_sig = -1,
|
.tx_sig = -1,
|
||||||
.rx_sig = RMT_SIG_IN3_IDX
|
.rx_sig = RMT_SIG_IN2_IDX
|
||||||
|
},
|
||||||
|
[7] = {
|
||||||
|
.tx_sig = -1,
|
||||||
|
.rx_sig = RMT_SIG_IN3_IDX
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -23,13 +23,15 @@ extern "C" {
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
struct {
|
struct {
|
||||||
|
const int irq;
|
||||||
|
const periph_module_t module;
|
||||||
struct {
|
struct {
|
||||||
const int tx_sig;
|
struct {
|
||||||
const int rx_sig;
|
const int tx_sig;
|
||||||
};
|
const int rx_sig;
|
||||||
} channels[SOC_RMT_CHANNELS_PER_GROUP];
|
};
|
||||||
const int irq;
|
} channels[SOC_RMT_CHANNELS_PER_GROUP];
|
||||||
const periph_module_t module;
|
} groups[SOC_RMT_GROUPS];
|
||||||
} rmt_signal_conn_t;
|
} rmt_signal_conn_t;
|
||||||
|
|
||||||
extern const rmt_signal_conn_t rmt_periph_signals;
|
extern const rmt_signal_conn_t rmt_periph_signals;
|
||||||
|
Loading…
Reference in New Issue
Block a user