Gainspan module evaluation with WIZwiki-W7500 using SerialPassthrough.
Dependencies: mbed
Fork of SerialPassthrough_GainspanModule_W7500 by
This is a serial-passthrough example using WIZwiki-W7500 and gainspan-WiFi-module.
With this example, I can issue at-command-sets to the WiFi module with WIZwiki-W7500's serial. UART data flow is shown as below.
[PC Serial Terminal] <=> [WIZwiki-W7500's UIART1/DAP] <=> [WIZwiki-W7500's UIART0] <=> [Gainspan WiFi module]
Connected pins between WIZwiki-W7500 and WiFi-module are only 4 pins. (3.3V, GND, UART-Tx, UART-Rx) And, here is a picture.
And here is a captures of test logs. Red box is what I issued.
[PS] ASYNC_DEBUG is for internal-debugging like ISR. You can ignore it.
main.cpp@0:98000a7ccec5, 2015-08-21 (annotated)
- Committer:
- SteveKim
- Date:
- Fri Aug 21 05:53:34 2015 +0000
- Revision:
- 0:98000a7ccec5
- Child:
- 1:95a26b8d2887
Gainspan module evaluation with WIZwikiW7500 using SerialPassthrough.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
SteveKim | 0:98000a7ccec5 | 1 | #include "mbed.h" |
SteveKim | 0:98000a7ccec5 | 2 | #include "CBuffer.h" |
SteveKim | 0:98000a7ccec5 | 3 | |
SteveKim | 0:98000a7ccec5 | 4 | DigitalOut led1(LED1); |
SteveKim | 0:98000a7ccec5 | 5 | DigitalOut led4(LED4); |
SteveKim | 0:98000a7ccec5 | 6 | |
SteveKim | 0:98000a7ccec5 | 7 | RawSerial pc(USBTX, USBRX); // tx, rx |
SteveKim | 0:98000a7ccec5 | 8 | RawSerial dev(D1, D0); // tx, rx for WIZwiki-W75000 |
SteveKim | 0:98000a7ccec5 | 9 | |
SteveKim | 0:98000a7ccec5 | 10 | //////////////////////////////////////////////////////////////////////////////////////////////// |
SteveKim | 0:98000a7ccec5 | 11 | // mbed Async Debug |
SteveKim | 0:98000a7ccec5 | 12 | Timeout timer_buffer_debug; |
SteveKim | 0:98000a7ccec5 | 13 | CircBuffer<char> async_debugbufer(1024); |
SteveKim | 0:98000a7ccec5 | 14 | |
SteveKim | 0:98000a7ccec5 | 15 | void print_debugbuffer() |
SteveKim | 0:98000a7ccec5 | 16 | { |
SteveKim | 0:98000a7ccec5 | 17 | char c=0; |
SteveKim | 0:98000a7ccec5 | 18 | while ( async_debugbufer.available() ) { |
SteveKim | 0:98000a7ccec5 | 19 | async_debugbufer.dequeue(&c); |
SteveKim | 0:98000a7ccec5 | 20 | pc.putc(c); |
SteveKim | 0:98000a7ccec5 | 21 | } |
SteveKim | 0:98000a7ccec5 | 22 | timer_buffer_debug.attach(&print_debugbuffer, 0.1); |
SteveKim | 0:98000a7ccec5 | 23 | } |
SteveKim | 0:98000a7ccec5 | 24 | |
SteveKim | 0:98000a7ccec5 | 25 | #include <stdarg.h> |
SteveKim | 0:98000a7ccec5 | 26 | static char debug_line[64]; |
SteveKim | 0:98000a7ccec5 | 27 | void mbed_async_debug(const char *format, ...) |
SteveKim | 0:98000a7ccec5 | 28 | { |
SteveKim | 0:98000a7ccec5 | 29 | va_list args; |
SteveKim | 0:98000a7ccec5 | 30 | |
SteveKim | 0:98000a7ccec5 | 31 | va_start(args, format); |
SteveKim | 0:98000a7ccec5 | 32 | |
SteveKim | 0:98000a7ccec5 | 33 | vsnprintf(debug_line, sizeof(debug_line), format, args); |
SteveKim | 0:98000a7ccec5 | 34 | int length = strlen(debug_line); |
SteveKim | 0:98000a7ccec5 | 35 | |
SteveKim | 0:98000a7ccec5 | 36 | for (int i=0; i<length; i++) |
SteveKim | 0:98000a7ccec5 | 37 | async_debugbufer.queue(debug_line[i]); |
SteveKim | 0:98000a7ccec5 | 38 | |
SteveKim | 0:98000a7ccec5 | 39 | va_end(args); |
SteveKim | 0:98000a7ccec5 | 40 | } |
SteveKim | 0:98000a7ccec5 | 41 | |
SteveKim | 0:98000a7ccec5 | 42 | // mbed Async Debug Print, You can move below line to mbed-src. |
SteveKim | 0:98000a7ccec5 | 43 | void (*dbg_f)(const char *format, ...); |
SteveKim | 0:98000a7ccec5 | 44 | extern void (*dbg_f)(const char *format, ...); |
SteveKim | 0:98000a7ccec5 | 45 | |
SteveKim | 0:98000a7ccec5 | 46 | //////////////////////////////////////////////////////////////////////////////////////////////// |
SteveKim | 0:98000a7ccec5 | 47 | |
SteveKim | 0:98000a7ccec5 | 48 | void dev_recv() |
SteveKim | 0:98000a7ccec5 | 49 | { |
SteveKim | 0:98000a7ccec5 | 50 | led1 = !led1; |
SteveKim | 0:98000a7ccec5 | 51 | while(dev.readable()) { |
SteveKim | 0:98000a7ccec5 | 52 | pc.putc(dev.getc()); |
SteveKim | 0:98000a7ccec5 | 53 | } |
SteveKim | 0:98000a7ccec5 | 54 | } |
SteveKim | 0:98000a7ccec5 | 55 | |
SteveKim | 0:98000a7ccec5 | 56 | void pc_recv() |
SteveKim | 0:98000a7ccec5 | 57 | { |
SteveKim | 0:98000a7ccec5 | 58 | led4 = !led4; |
SteveKim | 0:98000a7ccec5 | 59 | while(pc.readable()) { |
SteveKim | 0:98000a7ccec5 | 60 | dev.putc(pc.getc()); |
SteveKim | 0:98000a7ccec5 | 61 | } |
SteveKim | 0:98000a7ccec5 | 62 | } |
SteveKim | 0:98000a7ccec5 | 63 | |
SteveKim | 0:98000a7ccec5 | 64 | int main() |
SteveKim | 0:98000a7ccec5 | 65 | { |
SteveKim | 0:98000a7ccec5 | 66 | for (int i=0; i<10; i++) |
SteveKim | 0:98000a7ccec5 | 67 | { |
SteveKim | 0:98000a7ccec5 | 68 | led1 = !led1; |
SteveKim | 0:98000a7ccec5 | 69 | led4 = !led4; |
SteveKim | 0:98000a7ccec5 | 70 | wait(0.1); |
SteveKim | 0:98000a7ccec5 | 71 | } |
SteveKim | 0:98000a7ccec5 | 72 | |
SteveKim | 0:98000a7ccec5 | 73 | pc.baud(115200); |
SteveKim | 0:98000a7ccec5 | 74 | dev.baud(9600); |
SteveKim | 0:98000a7ccec5 | 75 | |
SteveKim | 0:98000a7ccec5 | 76 | pc.printf("Serial Passthrough Started. \r\n"); |
SteveKim | 0:98000a7ccec5 | 77 | |
SteveKim | 0:98000a7ccec5 | 78 | dbg_f = &mbed_async_debug; |
SteveKim | 0:98000a7ccec5 | 79 | timer_buffer_debug.attach(&print_debugbuffer, 0.1); |
SteveKim | 0:98000a7ccec5 | 80 | |
SteveKim | 0:98000a7ccec5 | 81 | pc.attach(&pc_recv, Serial::RxIrq); |
SteveKim | 0:98000a7ccec5 | 82 | dev.attach(&dev_recv, Serial::RxIrq); |
SteveKim | 0:98000a7ccec5 | 83 | |
SteveKim | 0:98000a7ccec5 | 84 | while(1) { |
SteveKim | 0:98000a7ccec5 | 85 | wait(1); |
SteveKim | 0:98000a7ccec5 | 86 | } |
SteveKim | 0:98000a7ccec5 | 87 | } |