rmt_hal.c 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. /*
  2. * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include "hal/rmt_hal.h"
  7. #include "hal/rmt_ll.h"
  8. #include "soc/soc_caps.h"
  9. void rmt_hal_init(rmt_hal_context_t *hal)
  10. {
  11. hal->regs = &RMT;
  12. }
  13. void rmt_hal_tx_channel_reset(rmt_hal_context_t *hal, uint32_t channel)
  14. {
  15. rmt_ll_tx_reset_channels_clock_div(hal->regs, 1 << channel);
  16. rmt_ll_tx_reset_pointer(hal->regs, channel);
  17. #if SOC_RMT_SUPPORT_TX_LOOP_COUNT
  18. rmt_ll_tx_reset_loop_count(hal->regs, channel);
  19. #endif // SOC_RMT_SUPPORT_TX_LOOP_COUNT
  20. rmt_ll_enable_interrupt(hal->regs, RMT_LL_EVENT_TX_MASK(channel), false);
  21. rmt_ll_clear_interrupt_status(hal->regs, RMT_LL_EVENT_TX_MASK(channel));
  22. }
  23. void rmt_hal_rx_channel_reset(rmt_hal_context_t *hal, uint32_t channel)
  24. {
  25. rmt_ll_rx_reset_channels_clock_div(hal->regs, 1 << channel);
  26. rmt_ll_rx_reset_pointer(hal->regs, channel);
  27. rmt_ll_enable_interrupt(hal->regs, RMT_LL_EVENT_RX_MASK(channel), false);
  28. rmt_ll_clear_interrupt_status(hal->regs, RMT_LL_EVENT_RX_MASK(channel));
  29. }