USB to UART bridge
Fork of XBee-ExplorerLite by
UART | pinout |
---|---|
TXD | p9 |
RXD | p10 |
RTS | p5 |
DTR | p6 |
Windows serial driver:
https://developer.mbed.org/handbook/USBSerial
https://developer.mbed.org/media/uploads/samux/serial.zip
main.cpp@2:79ca417c25b2, 2015-08-11 (annotated)
- Committer:
- va009039
- Date:
- Tue Aug 11 23:07:42 2015 +0000
- Revision:
- 2:79ca417c25b2
- Parent:
- 0:9b1aa393acb3
add LPC11U35
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 | 2:79ca417c25b2 | 1 | // main.cpp 2015/7/8 |
va009039 | 2:79ca417c25b2 | 2 | // USB-to-UART-bridge |
va009039 | 0:9b1aa393acb3 | 3 | #include "BaseUsbUartBridge.h" |
va009039 | 2:79ca417c25b2 | 4 | |
va009039 | 2:79ca417c25b2 | 5 | DigitalInOut uart_nRTS(p5); |
va009039 | 2:79ca417c25b2 | 6 | DigitalInOut uart_nDTR(p6); |
va009039 | 2:79ca417c25b2 | 7 | #if defined(TARGET_MCU_LPC11U35_501) |
va009039 | 2:79ca417c25b2 | 8 | DigitalOut led_uart(LED1); |
va009039 | 2:79ca417c25b2 | 9 | DigitalOut led_usb(LED2); |
va009039 | 2:79ca417c25b2 | 10 | DigitalOut led_rts(p18); |
va009039 | 2:79ca417c25b2 | 11 | DigitalOut led_dtr(p20); |
va009039 | 0:9b1aa393acb3 | 12 | #else |
va009039 | 2:79ca417c25b2 | 13 | DigitalOut led_uart(LED1); |
va009039 | 2:79ca417c25b2 | 14 | DigitalOut led_usb(LED2); |
va009039 | 2:79ca417c25b2 | 15 | DigitalOut led_rts(LED3); |
va009039 | 2:79ca417c25b2 | 16 | DigitalOut led_dtr(LED4); |
va009039 | 0:9b1aa393acb3 | 17 | #endif |
va009039 | 0:9b1aa393acb3 | 18 | |
va009039 | 2:79ca417c25b2 | 19 | class USB_UART : public BaseUsbUartBridge { |
va009039 | 0:9b1aa393acb3 | 20 | public: |
va009039 | 2:79ca417c25b2 | 21 | USB_UART(PinName tx, PinName rx) : BaseUsbUartBridge(tx, rx) { |
va009039 | 2:79ca417c25b2 | 22 | uart_nRTS.mode(PullUp); |
va009039 | 2:79ca417c25b2 | 23 | uart_nDTR.mode(PullUp); |
va009039 | 2:79ca417c25b2 | 24 | uart_nRTS.input(); |
va009039 | 2:79ca417c25b2 | 25 | uart_nDTR.input(); |
va009039 | 2:79ca417c25b2 | 26 | } |
va009039 | 2:79ca417c25b2 | 27 | virtual void controlLineStateChanged(int rts, int dtr) { |
va009039 | 2:79ca417c25b2 | 28 | led_rts = rts; |
va009039 | 2:79ca417c25b2 | 29 | led_dtr = dtr; |
va009039 | 2:79ca417c25b2 | 30 | if (rts) { |
va009039 | 2:79ca417c25b2 | 31 | uart_nRTS.output(); |
va009039 | 2:79ca417c25b2 | 32 | uart_nRTS = 0; |
va009039 | 2:79ca417c25b2 | 33 | } else { |
va009039 | 2:79ca417c25b2 | 34 | uart_nRTS.input(); |
va009039 | 2:79ca417c25b2 | 35 | } |
va009039 | 2:79ca417c25b2 | 36 | if (dtr) { |
va009039 | 2:79ca417c25b2 | 37 | uart_nDTR.output(); |
va009039 | 2:79ca417c25b2 | 38 | uart_nDTR = 0; |
va009039 | 2:79ca417c25b2 | 39 | } else { |
va009039 | 2:79ca417c25b2 | 40 | uart_nDTR.input(); |
va009039 | 2:79ca417c25b2 | 41 | } |
va009039 | 0:9b1aa393acb3 | 42 | } |
va009039 | 0:9b1aa393acb3 | 43 | virtual void monitor(src_t src, uint8_t c) { |
va009039 | 0:9b1aa393acb3 | 44 | switch(src) { |
va009039 | 2:79ca417c25b2 | 45 | case _UART: led_uart = !led_uart; break; |
va009039 | 0:9b1aa393acb3 | 46 | case _USB: led_usb = !led_usb; break; |
va009039 | 0:9b1aa393acb3 | 47 | } |
va009039 | 0:9b1aa393acb3 | 48 | } |
va009039 | 2:79ca417c25b2 | 49 | } usb_uart(UART_TX, UART_RX); |
va009039 | 0:9b1aa393acb3 | 50 | |
va009039 | 0:9b1aa393acb3 | 51 | int main() { |
va009039 | 0:9b1aa393acb3 | 52 | while(1) { |
va009039 | 2:79ca417c25b2 | 53 | usb_uart.poll(); |
va009039 | 0:9b1aa393acb3 | 54 | } |
va009039 | 0:9b1aa393acb3 | 55 | } |