static void apply_config(nrfx_uarte_t const * p_instance, nrfx_uarte_config_t const * p_config) { if (p_config->pseltxd != NRF_UARTE_PSEL_DISCONNECTED) { nrf_gpio_pin_set(p_config->pseltxd); nrf_gpio_cfg_output(p_config->pseltxd); } if (p_config->pselrxd != NRF_UARTE_PSEL_DISCONNECTED) { nrf_gpio_cfg_input(p_config->pselrxd, NRF_GPIO_PIN_NOPULL); } nrf_uarte_baudrate_set(p_instance->p_reg, p_config->baudrate); nrf_uarte_configure(p_instance->p_reg, p_config->parity, p_config->hwfc); nrf_uarte_txrx_pins_set(p_instance->p_reg, p_config->pseltxd, p_config->pselrxd); if (p_config->hwfc == NRF_UARTE_HWFC_ENABLED) { if (p_config->pselcts != NRF_UARTE_PSEL_DISCONNECTED) { nrf_gpio_cfg_input(p_config->pselcts, NRF_GPIO_PIN_NOPULL); } if (p_config->pselrts != NRF_UARTE_PSEL_DISCONNECTED) { nrf_gpio_pin_set(p_config->pselrts); nrf_gpio_cfg_output(p_config->pselrts); } nrf_uarte_hwfc_pins_set(p_instance->p_reg, p_config->pselrts, p_config->pselcts); } }
__STATIC_INLINE void apply_config(nrf_drv_uart_config_t const * p_config) { nrf_gpio_cfg_output(p_config->pseltxd); nrf_gpio_pin_set(p_config->pseltxd); nrf_gpio_cfg_input(p_config->pselrxd, NRF_GPIO_PIN_NOPULL); CODE_FOR_UARTE( nrf_uarte_baudrate_set(NRF_UARTE0, (nrf_uarte_baudrate_t)p_config->baudrate); nrf_uarte_configure(NRF_UARTE0, (nrf_uarte_parity_t)p_config->parity, (nrf_uarte_hwfc_t)p_config->hwfc); nrf_uarte_txrx_pins_set(NRF_UARTE0, p_config->pseltxd, p_config->pselrxd); if (p_config->hwfc == NRF_UART_HWFC_ENABLED) { nrf_gpio_cfg_output(p_config->pselrts); nrf_gpio_pin_set(p_config->pselrts); nrf_gpio_cfg_input(p_config->pselcts, NRF_GPIO_PIN_NOPULL); nrf_uarte_hwfc_pins_set(NRF_UARTE0, p_config->pselrts, p_config->pselcts); } )
/** * @brief Set the baud rate * * This routine set the given baud rate for the UARTE. * * @param dev UARTE device struct * @param baudrate Baud rate * * @return 0 on success or error code */ static int baudrate_set(struct device *dev, u32_t baudrate) { nrf_uarte_baudrate_t nrf_baudrate; /* calculated baudrate divisor */ NRF_UARTE_Type *uarte = get_uarte_instance(dev); switch (baudrate) { case 300: /* value not supported by Nordic HAL */ nrf_baudrate = 0x00014000; break; case 600: /* value not supported by Nordic HAL */ nrf_baudrate = 0x00027000; break; case 1200: nrf_baudrate = NRF_UARTE_BAUDRATE_1200; break; case 2400: nrf_baudrate = NRF_UARTE_BAUDRATE_2400; break; case 4800: nrf_baudrate = NRF_UARTE_BAUDRATE_4800; break; case 9600: nrf_baudrate = NRF_UARTE_BAUDRATE_9600; break; case 14400: nrf_baudrate = NRF_UARTE_BAUDRATE_14400; break; case 19200: nrf_baudrate = NRF_UARTE_BAUDRATE_19200; break; case 28800: nrf_baudrate = NRF_UARTE_BAUDRATE_28800; break; case 31250: nrf_baudrate = NRF_UARTE_BAUDRATE_31250; break; case 38400: nrf_baudrate = NRF_UARTE_BAUDRATE_38400; break; case 56000: nrf_baudrate = NRF_UARTE_BAUDRATE_56000; break; case 57600: nrf_baudrate = NRF_UARTE_BAUDRATE_57600; break; case 76800: nrf_baudrate = NRF_UARTE_BAUDRATE_76800; break; case 115200: nrf_baudrate = NRF_UARTE_BAUDRATE_115200; break; case 230400: nrf_baudrate = NRF_UARTE_BAUDRATE_230400; break; case 250000: nrf_baudrate = NRF_UARTE_BAUDRATE_250000; break; case 460800: nrf_baudrate = NRF_UARTE_BAUDRATE_460800; break; case 921600: nrf_baudrate = NRF_UARTE_BAUDRATE_921600; break; case 1000000: nrf_baudrate = NRF_UARTE_BAUDRATE_1000000; break; default: return -EINVAL; } nrf_uarte_baudrate_set(uarte, nrf_baudrate); return 0; }