diff options
author | Fabio Utzig <utzig@utzig.org> | 2015-05-15 21:08:53 -0300 |
---|---|---|
committer | Fabio Utzig <utzig@utzig.org> | 2015-05-15 21:08:53 -0300 |
commit | 343042d9d25a80a47d6ba10026d66987a7db3256 (patch) | |
tree | 36f32970fac2ac332049bdc1aa2ecdb992347109 /os | |
parent | 69d70de9b746094768de835e14d2f3686d15e072 (diff) | |
download | ChibiOS-Contrib-343042d9d25a80a47d6ba10026d66987a7db3256.tar.gz ChibiOS-Contrib-343042d9d25a80a47d6ba10026d66987a7db3256.tar.bz2 ChibiOS-Contrib-343042d9d25a80a47d6ba10026d66987a7db3256.zip |
Add tx/rx pin configuration to SerialConfig
Diffstat (limited to 'os')
-rw-r--r-- | os/hal/ports/NRF51/NRF51822/serial_lld.c | 22 | ||||
-rw-r--r-- | os/hal/ports/NRF51/NRF51822/serial_lld.h | 2 |
2 files changed, 16 insertions, 8 deletions
diff --git a/os/hal/ports/NRF51/NRF51822/serial_lld.c b/os/hal/ports/NRF51/NRF51822/serial_lld.c index ea687c8..1783b92 100644 --- a/os/hal/ports/NRF51/NRF51822/serial_lld.c +++ b/os/hal/ports/NRF51/NRF51822/serial_lld.c @@ -33,6 +33,7 @@ /*===========================================================================*/
#define INVALID_BAUDRATE 0xFFFFFFFF
+#define INVALID_PIN 0xFF
/*===========================================================================*/
/* Driver exported variables. */
@@ -51,7 +52,9 @@ SerialDriver SD1; * @brief Driver default configuration.
*/
static const SerialConfig default_config = {
- 38400
+ .speed = 38400,
+ .tx_pin = INVALID_PIN,
+ .rx_pin = INVALID_PIN,
};
/*===========================================================================*/
@@ -131,8 +134,7 @@ OSAL_IRQ_HANDLER(Vector48) { osalSysUnlockFromISR();
}
- //TODO
- //NRF_UART0->EVENTS_ERROR = 0;
+ /* TODO: Error handling for EVENTS_ERROR */
OSAL_IRQ_EPILOGUE();
}
@@ -176,15 +178,19 @@ void sd_lld_start(SerialDriver *sdp, const SerialConfig *config) { if (sdp == &SD1) {
uint32_t regval;
- /* FIXME: some board specific, some hardcodeds! */
+ /* TODO: Add support for CTS/RTS! */
/* Configure PINs */
NRF_UART0->PSELRTS = ~0;
NRF_UART0->PSELCTS = ~0;
-
- NRF_GPIO->PIN_CNF[9] = 1;
- NRF_UART0->PSELTXD = 9;
- NRF_UART0->PSELRXD = 11;
+ if (config->tx_pin != INVALID_PIN) {
+ palSetPadMode(IOPORT1, config->tx_pin, PAL_MODE_OUTPUT_PUSHPULL);
+ NRF_UART0->PSELTXD = config->tx_pin;
+ }
+ if (config->rx_pin != INVALID_PIN) {
+ palSetPadMode(IOPORT1, config->rx_pin, PAL_MODE_INPUT);
+ NRF_UART0->PSELRXD = config->rx_pin;
+ }
regval = regval_from_baudrate(config->speed);
osalDbgAssert(regval != INVALID_BAUDRATE, "invalid baudrate speed");
diff --git a/os/hal/ports/NRF51/NRF51822/serial_lld.h b/os/hal/ports/NRF51/NRF51822/serial_lld.h index b7b1beb..62f1302 100644 --- a/os/hal/ports/NRF51/NRF51822/serial_lld.h +++ b/os/hal/ports/NRF51/NRF51822/serial_lld.h @@ -71,6 +71,8 @@ typedef struct { */
uint32_t speed;
/* End of the mandatory fields.*/
+ uint8_t tx_pin;
+ uint8_t rx_pin;
} SerialConfig;
/**
|