esp-idf/components/hal/rmt_hal.c

33 wiersze
1.1 KiB
C
Czysty Zwykły widok Historia

/*
* SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
2019-11-19 08:10:02 +00:00
#include "hal/rmt_hal.h"
#include "hal/rmt_ll.h"
#include "soc/soc_caps.h"
2019-11-19 08:10:02 +00:00
void rmt_hal_init(rmt_hal_context_t *hal)
{
hal->regs = &RMT;
}
void rmt_hal_tx_channel_reset(rmt_hal_context_t *hal, uint32_t channel)
2019-11-19 08:10:02 +00:00
{
2022-03-01 07:06:29 +00:00
rmt_ll_tx_reset_channels_clock_div(hal->regs, 1 << channel);
rmt_ll_tx_reset_pointer(hal->regs, channel);
2022-03-01 07:06:29 +00:00
#if SOC_RMT_SUPPORT_TX_LOOP_COUNT
rmt_ll_tx_reset_loop_count(hal->regs, channel);
#endif // SOC_RMT_SUPPORT_TX_LOOP_COUNT
rmt_ll_enable_interrupt(hal->regs, RMT_LL_EVENT_TX_MASK(channel), false);
rmt_ll_clear_interrupt_status(hal->regs, RMT_LL_EVENT_TX_MASK(channel));
2019-11-19 08:10:02 +00:00
}
void rmt_hal_rx_channel_reset(rmt_hal_context_t *hal, uint32_t channel)
2019-11-19 08:10:02 +00:00
{
2022-03-01 07:06:29 +00:00
rmt_ll_rx_reset_channels_clock_div(hal->regs, 1 << channel);
rmt_ll_rx_reset_pointer(hal->regs, channel);
2022-03-01 07:06:29 +00:00
rmt_ll_enable_interrupt(hal->regs, RMT_LL_EVENT_RX_MASK(channel), false);
rmt_ll_clear_interrupt_status(hal->regs, RMT_LL_EVENT_RX_MASK(channel));
2019-11-19 08:10:02 +00:00
}