USB-UART bridge for XBee with XCTU.

Dependencies:   USBDevice mbed

USB to UART bridge for XBee with XCTU.
320 350
Windows serial driver:
https://developer.mbed.org/handbook/USBSerial
https://developer.mbed.org/media/uploads/samux/serial.zip

Committer:
va009039
Date:
Tue May 13 15:46:37 2014 +0900
Revision:
1:3d02f8b77d68
Parent:
0:9b1aa393acb3
add sendBreak,update USBDevice.lib.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:9b1aa393acb3 1 #include "BaseUsbUartBridge.h"
va009039 0:9b1aa393acb3 2 DigitalOut led_xbee(LED1),led_usb(LED2),led_reset(LED3),led_heartbeat(LED4);
va009039 0:9b1aa393acb3 3 RawSerial pc(MBED_UARTUSB);
va009039 0:9b1aa393acb3 4 #if defined(TARGET_LPC4088)
va009039 0:9b1aa393acb3 5 #define XBEE_UART P4_22,P4_23
va009039 0:9b1aa393acb3 6 DigitalOut xbee_rts(P4_21);
va009039 0:9b1aa393acb3 7 DigitalOut xbee_dtr(P4_19);
va009039 0:9b1aa393acb3 8 DigitalOut xbee_reset(P4_17);
va009039 0:9b1aa393acb3 9 DigitalIn reset_sw(P2_10);
va009039 0:9b1aa393acb3 10 #define SW_MODE PullUp
va009039 0:9b1aa393acb3 11 #elif defined(TARGET_LPC1768)
va009039 0:9b1aa393acb3 12 #define XBEE_UART p9,p10
va009039 0:9b1aa393acb3 13 DigitalOut xbee_rts(p21);
va009039 0:9b1aa393acb3 14 DigitalOut xbee_dtr(p22);
va009039 0:9b1aa393acb3 15 DigitalOut xbee_reset(p30);
va009039 0:9b1aa393acb3 16 DigitalIn reset_sw(p14);
va009039 0:9b1aa393acb3 17 #define SW_MODE PullDown
va009039 0:9b1aa393acb3 18 #else
va009039 0:9b1aa393acb3 19 #error "target error"
va009039 0:9b1aa393acb3 20 #endif
va009039 0:9b1aa393acb3 21
va009039 0:9b1aa393acb3 22 class USB_XBee : public BaseUsbUartBridge {
va009039 0:9b1aa393acb3 23 public:
va009039 0:9b1aa393acb3 24 USB_XBee(PinName tx, PinName rx) : BaseUsbUartBridge(tx, rx) {}
va009039 0:9b1aa393acb3 25 virtual void controlLineStateChanged(int rts, int dtr){
va009039 0:9b1aa393acb3 26 xbee_rts = rts ^ 1;
va009039 0:9b1aa393acb3 27 xbee_dtr = dtr ^ 1;
va009039 0:9b1aa393acb3 28 }
va009039 0:9b1aa393acb3 29 virtual void monitor(src_t src, uint8_t c) {
va009039 0:9b1aa393acb3 30 switch(src) {
va009039 0:9b1aa393acb3 31 case _UART: led_xbee = !led_xbee; break;
va009039 0:9b1aa393acb3 32 case _USB: led_usb = !led_usb; break;
va009039 0:9b1aa393acb3 33 }
va009039 0:9b1aa393acb3 34 //pc.putc(c);// debug
va009039 0:9b1aa393acb3 35 }
va009039 0:9b1aa393acb3 36 };
va009039 0:9b1aa393acb3 37
va009039 0:9b1aa393acb3 38 USB_XBee usb_xbee(XBEE_UART);
va009039 0:9b1aa393acb3 39
va009039 0:9b1aa393acb3 40 int main() {
va009039 0:9b1aa393acb3 41 pc.baud(115200);
va009039 0:9b1aa393acb3 42
va009039 0:9b1aa393acb3 43 xbee_rts = 0;
va009039 0:9b1aa393acb3 44 xbee_dtr = 0;
va009039 0:9b1aa393acb3 45 xbee_reset = 1;
va009039 0:9b1aa393acb3 46 reset_sw.mode(SW_MODE);
va009039 0:9b1aa393acb3 47 int prev_sw = 1;
va009039 0:9b1aa393acb3 48
va009039 0:9b1aa393acb3 49 Timer heartbeat_t;
va009039 0:9b1aa393acb3 50 heartbeat_t.reset();
va009039 0:9b1aa393acb3 51 heartbeat_t.start();
va009039 0:9b1aa393acb3 52 while(1) {
va009039 0:9b1aa393acb3 53 if (reset_sw ^ prev_sw) {
va009039 0:9b1aa393acb3 54 prev_sw = reset_sw;
va009039 0:9b1aa393acb3 55 xbee_reset = prev_sw ^ (SW_MODE == PullDown ? 1 : 0);
va009039 0:9b1aa393acb3 56 led_reset = xbee_reset;
va009039 0:9b1aa393acb3 57 }
va009039 0:9b1aa393acb3 58 if (heartbeat_t.read_ms() > 500) {
va009039 0:9b1aa393acb3 59 heartbeat_t.reset();
va009039 0:9b1aa393acb3 60 led_heartbeat = !led_heartbeat;
va009039 0:9b1aa393acb3 61 }
va009039 0:9b1aa393acb3 62 usb_xbee.poll();
va009039 0:9b1aa393acb3 63 }
va009039 0:9b1aa393acb3 64 }