mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_Analog_Devices/TARGET_ADUCM302X/TARGET_ADUCM3029/api/serial_api.c@189:f392fc9709a3, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 22:31:08 2019 +0000
- Revision:
- 189:f392fc9709a3
- Parent:
- 178:79309dc6340a
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 178:79309dc6340a | 1 | /******************************************************************************* |
AnnaBridge | 178:79309dc6340a | 2 | * Copyright (c) 2010-2017 Analog Devices, Inc. |
AnnaBridge | 178:79309dc6340a | 3 | * |
AnnaBridge | 178:79309dc6340a | 4 | * All rights reserved. |
AnnaBridge | 178:79309dc6340a | 5 | * |
AnnaBridge | 178:79309dc6340a | 6 | * Redistribution and use in source and binary forms, with or without modification, |
AnnaBridge | 178:79309dc6340a | 7 | * are permitted provided that the following conditions are met: |
AnnaBridge | 178:79309dc6340a | 8 | * - Redistributions of source code must retain the above copyright notice, |
AnnaBridge | 178:79309dc6340a | 9 | * this list of conditions and the following disclaimer. |
AnnaBridge | 178:79309dc6340a | 10 | * - Redistributions in binary form must reproduce the above copyright notice, |
AnnaBridge | 178:79309dc6340a | 11 | * this list of conditions and the following disclaimer in the documentation |
AnnaBridge | 178:79309dc6340a | 12 | * and/or other materials provided with the distribution. |
AnnaBridge | 178:79309dc6340a | 13 | * - Modified versions of the software must be conspicuously marked as such. |
AnnaBridge | 178:79309dc6340a | 14 | * - This software is licensed solely and exclusively for use with processors |
AnnaBridge | 178:79309dc6340a | 15 | * manufactured by or for Analog Devices, Inc. |
AnnaBridge | 178:79309dc6340a | 16 | * - This software may not be combined or merged with other code in any manner |
AnnaBridge | 178:79309dc6340a | 17 | * that would cause the software to become subject to terms and conditions |
AnnaBridge | 178:79309dc6340a | 18 | * which differ from those listed here. |
AnnaBridge | 178:79309dc6340a | 19 | * - Neither the name of Analog Devices, Inc. nor the names of its |
AnnaBridge | 178:79309dc6340a | 20 | * contributors may be used to endorse or promote products derived |
AnnaBridge | 178:79309dc6340a | 21 | * from this software without specific prior written permission. |
AnnaBridge | 178:79309dc6340a | 22 | * - The use of this software may or may not infringe the patent rights of one |
AnnaBridge | 178:79309dc6340a | 23 | * or more patent holders. This license does not release you from the |
AnnaBridge | 178:79309dc6340a | 24 | * requirement that you obtain separate licenses from these patent holders |
AnnaBridge | 178:79309dc6340a | 25 | * to use this software. |
AnnaBridge | 178:79309dc6340a | 26 | * |
AnnaBridge | 178:79309dc6340a | 27 | * THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. AND CONTRIBUTORS "AS IS" |
AnnaBridge | 178:79309dc6340a | 28 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON- |
AnnaBridge | 178:79309dc6340a | 29 | * INFRINGEMENT, TITLE, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
AnnaBridge | 178:79309dc6340a | 30 | * DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES, INC. OR CONTRIBUTORS BE LIABLE |
AnnaBridge | 178:79309dc6340a | 31 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE OR |
AnnaBridge | 178:79309dc6340a | 32 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, DAMAGES ARISING OUT OF |
AnnaBridge | 178:79309dc6340a | 33 | * CLAIMS OF INTELLECTUAL PROPERTY RIGHTS INFRINGEMENT; PROCUREMENT OF |
AnnaBridge | 178:79309dc6340a | 34 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
AnnaBridge | 178:79309dc6340a | 35 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
AnnaBridge | 178:79309dc6340a | 36 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
AnnaBridge | 178:79309dc6340a | 37 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
AnnaBridge | 178:79309dc6340a | 38 | * POSSIBILITY OF SUCH DAMAGE. |
AnnaBridge | 178:79309dc6340a | 39 | ******************************************************************************/ |
AnnaBridge | 178:79309dc6340a | 40 | |
AnnaBridge | 178:79309dc6340a | 41 | #include "serial_api.h" |
AnnaBridge | 178:79309dc6340a | 42 | |
AnnaBridge | 178:79309dc6340a | 43 | #if DEVICE_SERIAL |
AnnaBridge | 178:79309dc6340a | 44 | |
AnnaBridge | 178:79309dc6340a | 45 | // math.h required for floating point operations for baud rate calculation |
AnnaBridge | 178:79309dc6340a | 46 | #include <math.h> |
AnnaBridge | 178:79309dc6340a | 47 | #include "mbed_assert.h" |
AnnaBridge | 178:79309dc6340a | 48 | |
AnnaBridge | 178:79309dc6340a | 49 | #include <string.h> |
AnnaBridge | 178:79309dc6340a | 50 | |
AnnaBridge | 178:79309dc6340a | 51 | #include "cmsis.h" |
AnnaBridge | 178:79309dc6340a | 52 | #include "pinmap.h" |
AnnaBridge | 178:79309dc6340a | 53 | #include "PeripheralPins.h" |
AnnaBridge | 178:79309dc6340a | 54 | #include "drivers/uart/adi_uart.h" |
AnnaBridge | 178:79309dc6340a | 55 | |
AnnaBridge | 178:79309dc6340a | 56 | #define ADI_UART_MEMORY_SIZE (ADI_UART_BIDIR_MEMORY_SIZE) |
AnnaBridge | 178:79309dc6340a | 57 | |
AnnaBridge | 178:79309dc6340a | 58 | static ADI_UART_HANDLE hDevice; |
AnnaBridge | 178:79309dc6340a | 59 | static uint32_t UartDeviceMem[(ADI_UART_MEMORY_SIZE + 3)/4]; |
AnnaBridge | 178:79309dc6340a | 60 | static uint32_t serial_irq_ids[2] = {0}; |
AnnaBridge | 178:79309dc6340a | 61 | static uart_irq_handler irq_handler = NULL; |
AnnaBridge | 178:79309dc6340a | 62 | int stdio_uart_inited = 0; |
AnnaBridge | 178:79309dc6340a | 63 | serial_t stdio_uart; |
AnnaBridge | 178:79309dc6340a | 64 | static int rxbuffer[1]; |
AnnaBridge | 178:79309dc6340a | 65 | static int txbuffer[1]; |
AnnaBridge | 178:79309dc6340a | 66 | |
AnnaBridge | 178:79309dc6340a | 67 | static void uart_callback(void *pCBParam, uint32_t Event, void *pArg) |
AnnaBridge | 178:79309dc6340a | 68 | { |
AnnaBridge | 178:79309dc6340a | 69 | MBED_ASSERT(irq_handler); |
AnnaBridge | 178:79309dc6340a | 70 | |
AnnaBridge | 178:79309dc6340a | 71 | if (Event == ADI_UART_EVENT_TX_BUFFER_PROCESSED) |
AnnaBridge | 178:79309dc6340a | 72 | irq_handler(serial_irq_ids[0], TxIrq); |
AnnaBridge | 178:79309dc6340a | 73 | else if (Event == ADI_UART_EVENT_RX_BUFFER_PROCESSED) |
AnnaBridge | 178:79309dc6340a | 74 | irq_handler(serial_irq_ids[0], RxIrq); |
AnnaBridge | 178:79309dc6340a | 75 | } |
AnnaBridge | 178:79309dc6340a | 76 | |
AnnaBridge | 178:79309dc6340a | 77 | |
AnnaBridge | 178:79309dc6340a | 78 | void serial_free(serial_t *obj) |
AnnaBridge | 178:79309dc6340a | 79 | { |
AnnaBridge | 178:79309dc6340a | 80 | adi_uart_Close(hDevice); |
AnnaBridge | 178:79309dc6340a | 81 | } |
AnnaBridge | 178:79309dc6340a | 82 | |
AnnaBridge | 178:79309dc6340a | 83 | void serial_baud(serial_t *obj, int baudrate) |
AnnaBridge | 178:79309dc6340a | 84 | { |
AnnaBridge | 178:79309dc6340a | 85 | uint32_t uartdivc,uartdivm,uartdivn,uartosr; |
AnnaBridge | 178:79309dc6340a | 86 | switch (baudrate) { |
AnnaBridge | 178:79309dc6340a | 87 | default: |
AnnaBridge | 178:79309dc6340a | 88 | case 9600: |
AnnaBridge | 178:79309dc6340a | 89 | uartdivc= 22; |
AnnaBridge | 178:79309dc6340a | 90 | uartdivm= 3; |
AnnaBridge | 178:79309dc6340a | 91 | uartdivn= 1734; |
AnnaBridge | 178:79309dc6340a | 92 | uartosr= 3; |
AnnaBridge | 178:79309dc6340a | 93 | break; |
AnnaBridge | 178:79309dc6340a | 94 | case 19200: |
AnnaBridge | 178:79309dc6340a | 95 | uartdivc= 11; |
AnnaBridge | 178:79309dc6340a | 96 | uartdivm= 3; |
AnnaBridge | 178:79309dc6340a | 97 | uartdivn= 1735; |
AnnaBridge | 178:79309dc6340a | 98 | uartosr= 3; |
AnnaBridge | 178:79309dc6340a | 99 | break; |
AnnaBridge | 178:79309dc6340a | 100 | case 38400: |
AnnaBridge | 178:79309dc6340a | 101 | uartdivc= 17; |
AnnaBridge | 178:79309dc6340a | 102 | uartdivm= 1; |
AnnaBridge | 178:79309dc6340a | 103 | uartdivn= 0501; |
AnnaBridge | 178:79309dc6340a | 104 | uartosr= 3; |
AnnaBridge | 178:79309dc6340a | 105 | break; |
AnnaBridge | 178:79309dc6340a | 106 | case 57600: |
AnnaBridge | 178:79309dc6340a | 107 | uartdivc= 07; |
AnnaBridge | 178:79309dc6340a | 108 | uartdivm= 2; |
AnnaBridge | 178:79309dc6340a | 109 | uartdivn= 0031; |
AnnaBridge | 178:79309dc6340a | 110 | uartosr= 3; |
AnnaBridge | 178:79309dc6340a | 111 | break; |
AnnaBridge | 178:79309dc6340a | 112 | case 115200: |
AnnaBridge | 178:79309dc6340a | 113 | uartdivc= 07; |
AnnaBridge | 178:79309dc6340a | 114 | uartdivm= 2; |
AnnaBridge | 178:79309dc6340a | 115 | uartdivn= 0031; |
AnnaBridge | 178:79309dc6340a | 116 | uartosr= 2; |
AnnaBridge | 178:79309dc6340a | 117 | break; |
AnnaBridge | 178:79309dc6340a | 118 | case 230400: |
AnnaBridge | 178:79309dc6340a | 119 | uartdivc= 07; |
AnnaBridge | 178:79309dc6340a | 120 | uartdivm= 2; |
AnnaBridge | 178:79309dc6340a | 121 | uartdivn= 0031; |
AnnaBridge | 178:79309dc6340a | 122 | uartosr= 1; |
AnnaBridge | 178:79309dc6340a | 123 | break; |
AnnaBridge | 178:79309dc6340a | 124 | case 460800: |
AnnaBridge | 178:79309dc6340a | 125 | uartdivc= 07; |
AnnaBridge | 178:79309dc6340a | 126 | uartdivm= 2; |
AnnaBridge | 178:79309dc6340a | 127 | uartdivn= 0031; |
AnnaBridge | 178:79309dc6340a | 128 | uartosr= 0; |
AnnaBridge | 178:79309dc6340a | 129 | break; |
AnnaBridge | 178:79309dc6340a | 130 | case 921600: |
AnnaBridge | 178:79309dc6340a | 131 | uartdivc= 01; |
AnnaBridge | 178:79309dc6340a | 132 | uartdivm= 1; |
AnnaBridge | 178:79309dc6340a | 133 | uartdivn= 1563; |
AnnaBridge | 178:79309dc6340a | 134 | uartosr= 2; |
AnnaBridge | 178:79309dc6340a | 135 | break; |
AnnaBridge | 178:79309dc6340a | 136 | case 1000000: |
AnnaBridge | 178:79309dc6340a | 137 | uartdivc= 01; |
AnnaBridge | 178:79309dc6340a | 138 | uartdivm= 1; |
AnnaBridge | 178:79309dc6340a | 139 | uartdivn= 1280; |
AnnaBridge | 178:79309dc6340a | 140 | uartosr= 2; |
AnnaBridge | 178:79309dc6340a | 141 | break; |
AnnaBridge | 178:79309dc6340a | 142 | case 1500000: |
AnnaBridge | 178:79309dc6340a | 143 | uartdivc= 01; |
AnnaBridge | 178:79309dc6340a | 144 | uartdivm= 2; |
AnnaBridge | 178:79309dc6340a | 145 | uartdivn= 0341; |
AnnaBridge | 178:79309dc6340a | 146 | uartosr= 1; |
AnnaBridge | 178:79309dc6340a | 147 | break; |
AnnaBridge | 178:79309dc6340a | 148 | case 3000000: |
AnnaBridge | 178:79309dc6340a | 149 | uartdivc= 01; |
AnnaBridge | 178:79309dc6340a | 150 | uartdivm= 2; |
AnnaBridge | 178:79309dc6340a | 151 | uartdivn= 0341; |
AnnaBridge | 178:79309dc6340a | 152 | uartosr= 0; |
AnnaBridge | 178:79309dc6340a | 153 | break; |
AnnaBridge | 178:79309dc6340a | 154 | case 4000000: |
AnnaBridge | 178:79309dc6340a | 155 | uartdivc= 01; |
AnnaBridge | 178:79309dc6340a | 156 | uartdivm= 1; |
AnnaBridge | 178:79309dc6340a | 157 | uartdivn= 1280; |
AnnaBridge | 178:79309dc6340a | 158 | uartosr= 0; |
AnnaBridge | 178:79309dc6340a | 159 | break; |
AnnaBridge | 178:79309dc6340a | 160 | case 5000000: |
AnnaBridge | 178:79309dc6340a | 161 | uartdivc= 01; |
AnnaBridge | 178:79309dc6340a | 162 | uartdivm= 1; |
AnnaBridge | 178:79309dc6340a | 163 | uartdivn= 0614; |
AnnaBridge | 178:79309dc6340a | 164 | uartosr= 0; |
AnnaBridge | 178:79309dc6340a | 165 | break; |
AnnaBridge | 178:79309dc6340a | 166 | case 6000000: |
AnnaBridge | 178:79309dc6340a | 167 | uartdivc= 01; |
AnnaBridge | 178:79309dc6340a | 168 | uartdivm= 1; |
AnnaBridge | 178:79309dc6340a | 169 | uartdivn= 0171; |
AnnaBridge | 178:79309dc6340a | 170 | uartosr= 0; |
AnnaBridge | 178:79309dc6340a | 171 | break; |
AnnaBridge | 178:79309dc6340a | 172 | case 6500000: |
AnnaBridge | 178:79309dc6340a | 173 | uartdivc= 01; |
AnnaBridge | 178:79309dc6340a | 174 | uartdivm= 1; |
AnnaBridge | 178:79309dc6340a | 175 | uartdivn= 0000; |
AnnaBridge | 178:79309dc6340a | 176 | uartosr= 0; |
AnnaBridge | 178:79309dc6340a | 177 | break; |
AnnaBridge | 178:79309dc6340a | 178 | } |
AnnaBridge | 178:79309dc6340a | 179 | adi_uart_ConfigBaudRate(hDevice,uartdivc,uartdivm,uartdivn,uartosr); |
AnnaBridge | 178:79309dc6340a | 180 | } |
AnnaBridge | 178:79309dc6340a | 181 | |
AnnaBridge | 178:79309dc6340a | 182 | void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) |
AnnaBridge | 178:79309dc6340a | 183 | { |
AnnaBridge | 178:79309dc6340a | 184 | int convertedparity = ADI_UART_NO_PARITY; |
AnnaBridge | 178:79309dc6340a | 185 | int convertedstopbits = ADI_UART_ONE_STOPBIT; |
AnnaBridge | 178:79309dc6340a | 186 | |
AnnaBridge | 178:79309dc6340a | 187 | if (stop_bits) |
AnnaBridge | 178:79309dc6340a | 188 | convertedstopbits = ADI_UART_ONE_AND_HALF_TWO_STOPBITS; |
AnnaBridge | 178:79309dc6340a | 189 | |
AnnaBridge | 178:79309dc6340a | 190 | if (parity == ParityOdd) |
AnnaBridge | 178:79309dc6340a | 191 | convertedparity = ADI_UART_ODD_PARITY; |
AnnaBridge | 178:79309dc6340a | 192 | else if (parity == ParityEven) |
AnnaBridge | 178:79309dc6340a | 193 | convertedparity = ADI_UART_EVEN_PARITY; |
AnnaBridge | 178:79309dc6340a | 194 | else if (parity == ParityForced1) |
AnnaBridge | 178:79309dc6340a | 195 | convertedparity = ADI_UART_ODD_PARITY_STICKY; |
AnnaBridge | 178:79309dc6340a | 196 | else if (parity == ParityForced0) |
AnnaBridge | 178:79309dc6340a | 197 | convertedparity = ADI_UART_EVEN_PARITY_STICKY; |
AnnaBridge | 178:79309dc6340a | 198 | |
AnnaBridge | 178:79309dc6340a | 199 | adi_uart_SetConfiguration(hDevice,convertedparity,convertedstopbits, (data_bits - 5)); |
AnnaBridge | 178:79309dc6340a | 200 | } |
AnnaBridge | 178:79309dc6340a | 201 | |
AnnaBridge | 178:79309dc6340a | 202 | void serial_init(serial_t *obj, PinName tx, PinName rx) |
AnnaBridge | 178:79309dc6340a | 203 | { |
AnnaBridge | 178:79309dc6340a | 204 | uint32_t uart_tx = pinmap_peripheral(tx, PinMap_UART_TX); |
AnnaBridge | 178:79309dc6340a | 205 | uint32_t uart_rx = pinmap_peripheral(rx, PinMap_UART_RX); |
AnnaBridge | 178:79309dc6340a | 206 | |
AnnaBridge | 178:79309dc6340a | 207 | obj->index = pinmap_merge(uart_tx, uart_rx); |
AnnaBridge | 178:79309dc6340a | 208 | MBED_ASSERT((int)obj->index != NC); |
AnnaBridge | 178:79309dc6340a | 209 | |
AnnaBridge | 178:79309dc6340a | 210 | adi_uart_Open(0,ADI_UART_DIR_BIDIRECTION,UartDeviceMem,ADI_UART_MEMORY_SIZE,&hDevice); |
AnnaBridge | 178:79309dc6340a | 211 | |
AnnaBridge | 178:79309dc6340a | 212 | serial_baud(obj, 9600); |
AnnaBridge | 178:79309dc6340a | 213 | serial_format(obj, 8, ParityNone, 1); |
AnnaBridge | 178:79309dc6340a | 214 | |
AnnaBridge | 178:79309dc6340a | 215 | pinmap_pinout(tx, PinMap_UART_TX); |
AnnaBridge | 178:79309dc6340a | 216 | pinmap_pinout(rx, PinMap_UART_RX); |
AnnaBridge | 178:79309dc6340a | 217 | |
AnnaBridge | 178:79309dc6340a | 218 | if (tx != NC) { |
AnnaBridge | 178:79309dc6340a | 219 | pin_mode(tx, PullUp); |
AnnaBridge | 178:79309dc6340a | 220 | } |
AnnaBridge | 178:79309dc6340a | 221 | if (rx != NC) { |
AnnaBridge | 178:79309dc6340a | 222 | pin_mode(rx, PullUp); |
AnnaBridge | 178:79309dc6340a | 223 | } |
AnnaBridge | 178:79309dc6340a | 224 | if (obj->index == STDIO_UART) { |
AnnaBridge | 178:79309dc6340a | 225 | stdio_uart_inited = 1; |
AnnaBridge | 178:79309dc6340a | 226 | memcpy(&stdio_uart, obj, sizeof(serial_t)); |
AnnaBridge | 178:79309dc6340a | 227 | } |
AnnaBridge | 178:79309dc6340a | 228 | } |
AnnaBridge | 178:79309dc6340a | 229 | |
AnnaBridge | 178:79309dc6340a | 230 | int serial_getc(serial_t *obj) |
AnnaBridge | 178:79309dc6340a | 231 | { |
AnnaBridge | 178:79309dc6340a | 232 | void *pBuff; |
AnnaBridge | 178:79309dc6340a | 233 | uint32_t hw_error; |
AnnaBridge | 178:79309dc6340a | 234 | |
AnnaBridge | 178:79309dc6340a | 235 | adi_uart_SubmitRxBuffer(hDevice, rxbuffer, 1, true); |
AnnaBridge | 178:79309dc6340a | 236 | adi_uart_GetRxBuffer(hDevice, &pBuff, &hw_error); |
AnnaBridge | 178:79309dc6340a | 237 | return rxbuffer[0]; |
AnnaBridge | 178:79309dc6340a | 238 | } |
AnnaBridge | 178:79309dc6340a | 239 | |
AnnaBridge | 178:79309dc6340a | 240 | void serial_putc(serial_t *obj, int c) |
AnnaBridge | 178:79309dc6340a | 241 | { |
AnnaBridge | 178:79309dc6340a | 242 | void *pBuff; |
AnnaBridge | 178:79309dc6340a | 243 | uint32_t hw_error; |
AnnaBridge | 178:79309dc6340a | 244 | |
AnnaBridge | 178:79309dc6340a | 245 | txbuffer[0] = c; |
AnnaBridge | 178:79309dc6340a | 246 | adi_uart_SubmitTxBuffer(hDevice,txbuffer, 1, true); |
AnnaBridge | 178:79309dc6340a | 247 | adi_uart_GetTxBuffer(hDevice, &pBuff, &hw_error); |
AnnaBridge | 178:79309dc6340a | 248 | return; |
AnnaBridge | 178:79309dc6340a | 249 | } |
AnnaBridge | 178:79309dc6340a | 250 | |
AnnaBridge | 178:79309dc6340a | 251 | int serial_readable(serial_t *obj) |
AnnaBridge | 178:79309dc6340a | 252 | { |
AnnaBridge | 178:79309dc6340a | 253 | bool bAvailable = false; |
AnnaBridge | 178:79309dc6340a | 254 | adi_uart_IsRxBufferAvailable(hDevice, &bAvailable); |
AnnaBridge | 178:79309dc6340a | 255 | return bAvailable; |
AnnaBridge | 178:79309dc6340a | 256 | } |
AnnaBridge | 178:79309dc6340a | 257 | |
AnnaBridge | 178:79309dc6340a | 258 | int serial_writable(serial_t *obj) |
AnnaBridge | 178:79309dc6340a | 259 | { |
AnnaBridge | 178:79309dc6340a | 260 | bool bAvailable = false; |
AnnaBridge | 178:79309dc6340a | 261 | adi_uart_IsTxBufferAvailable(hDevice, &bAvailable); |
AnnaBridge | 178:79309dc6340a | 262 | return bAvailable; |
AnnaBridge | 178:79309dc6340a | 263 | } |
AnnaBridge | 178:79309dc6340a | 264 | |
AnnaBridge | 178:79309dc6340a | 265 | void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) |
AnnaBridge | 178:79309dc6340a | 266 | { |
AnnaBridge | 178:79309dc6340a | 267 | MBED_ASSERT(obj); |
AnnaBridge | 178:79309dc6340a | 268 | |
AnnaBridge | 178:79309dc6340a | 269 | adi_uart_RegisterCallback(hDevice, &uart_callback, obj); |
AnnaBridge | 178:79309dc6340a | 270 | } |
AnnaBridge | 178:79309dc6340a | 271 | |
AnnaBridge | 178:79309dc6340a | 272 | void serial_pinout_tx(PinName tx) |
AnnaBridge | 178:79309dc6340a | 273 | { |
AnnaBridge | 178:79309dc6340a | 274 | pinmap_pinout(tx, PinMap_UART_TX); |
AnnaBridge | 178:79309dc6340a | 275 | } |
AnnaBridge | 178:79309dc6340a | 276 | |
AnnaBridge | 178:79309dc6340a | 277 | void serial_break_set(serial_t *obj) |
AnnaBridge | 178:79309dc6340a | 278 | { |
AnnaBridge | 178:79309dc6340a | 279 | adi_uart_ForceTxBreak(hDevice, true); |
AnnaBridge | 178:79309dc6340a | 280 | } |
AnnaBridge | 178:79309dc6340a | 281 | |
AnnaBridge | 178:79309dc6340a | 282 | void serial_break_clear(serial_t *obj) |
AnnaBridge | 178:79309dc6340a | 283 | { |
AnnaBridge | 178:79309dc6340a | 284 | adi_uart_ForceTxBreak(hDevice, false); |
AnnaBridge | 178:79309dc6340a | 285 | } |
AnnaBridge | 178:79309dc6340a | 286 | |
AnnaBridge | 178:79309dc6340a | 287 | void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) |
AnnaBridge | 178:79309dc6340a | 288 | { |
AnnaBridge | 178:79309dc6340a | 289 | |
AnnaBridge | 178:79309dc6340a | 290 | MBED_ASSERT(obj); |
AnnaBridge | 178:79309dc6340a | 291 | |
AnnaBridge | 178:79309dc6340a | 292 | irq_handler = handler; |
AnnaBridge | 178:79309dc6340a | 293 | serial_irq_ids[0] = id; |
AnnaBridge | 178:79309dc6340a | 294 | } |
AnnaBridge | 178:79309dc6340a | 295 | #endif |