|
|
@@ -15,8 +15,8 @@
|
|
|
|
|
|
#include <stdint.h>
|
|
|
#include <stdbool.h>
|
|
|
+#include <stddef.h>
|
|
|
#include "soc/rmt_struct.h"
|
|
|
-#include "soc/soc_caps.h"
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
extern "C" {
|
|
|
@@ -279,6 +279,15 @@ static inline uint32_t rmt_ll_rx_get_limit(rmt_dev_t *dev, uint32_t channel)
|
|
|
return dev->rx_lim[channel].rx_lim;
|
|
|
}
|
|
|
|
|
|
+static inline void rmt_ll_enable_interrupt(rmt_dev_t *dev, uint32_t mask, bool enable)
|
|
|
+{
|
|
|
+ if (enable) {
|
|
|
+ dev->int_ena.val |= mask;
|
|
|
+ } else {
|
|
|
+ dev->int_ena.val &= ~mask;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static inline void rmt_ll_enable_tx_end_interrupt(rmt_dev_t *dev, uint32_t channel, bool enable)
|
|
|
{
|
|
|
if (enable) {
|
|
|
@@ -469,12 +478,14 @@ static inline void rmt_ll_tx_set_carrier_always_on(rmt_dev_t *dev, uint32_t chan
|
|
|
dev->tx_conf[channel].carrier_eff_en = !enable;
|
|
|
}
|
|
|
|
|
|
-//Writes items to the specified TX channel memory with the given offset and writen length.
|
|
|
+//Writes items to the specified TX channel memory with the given offset and length.
|
|
|
//the caller should ensure that (length + off) <= (memory block * SOC_RMT_MEM_WORDS_PER_CHANNEL)
|
|
|
-static inline void rmt_ll_write_memory(rmt_mem_t *mem, uint32_t channel, const rmt_item32_t *data, uint32_t length, uint32_t off)
|
|
|
+static inline void rmt_ll_write_memory(rmt_mem_t *mem, uint32_t channel, const void *data, size_t length_in_words, size_t off)
|
|
|
{
|
|
|
- for (uint32_t i = 0; i < length; i++) {
|
|
|
- mem->chan[channel].data32[i + off].val = data[i].val;
|
|
|
+ volatile uint32_t *to = (volatile uint32_t *)&mem->chan[channel].data32[off];
|
|
|
+ uint32_t *from = (uint32_t *)data;
|
|
|
+ while (length_in_words--) {
|
|
|
+ *to++ = *from++;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -483,20 +494,6 @@ static inline void rmt_ll_rx_enable_pingpong(rmt_dev_t *dev, uint32_t channel, b
|
|
|
dev->rx_conf[channel].conf1.mem_rx_wrap_en = enable;
|
|
|
}
|
|
|
|
|
|
-/************************************************************************************************
|
|
|
- * Following Low Level APIs only used for backward compatible, will be deprecated in the IDF v5.0
|
|
|
- ***********************************************************************************************/
|
|
|
-
|
|
|
-static inline void rmt_ll_set_intr_enable_mask(uint32_t mask)
|
|
|
-{
|
|
|
- RMT.int_ena.val |= mask;
|
|
|
-}
|
|
|
-
|
|
|
-static inline void rmt_ll_clr_intr_enable_mask(uint32_t mask)
|
|
|
-{
|
|
|
- RMT.int_ena.val &= (~mask);
|
|
|
-}
|
|
|
-
|
|
|
#ifdef __cplusplus
|
|
|
}
|
|
|
#endif
|