Gainspan module evaluation with WIZwiki-W7500 using SerialPassthrough.

Dependencies:   mbed

Fork of SerialPassthrough_GainspanModule_W7500 by Steve Kim

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. /media/uploads/SteveKim/gainspan-w7500.jpg

And here is a captures of test logs. Red box is what I issued.

/media/uploads/SteveKim/gainspan-w7500-2.jpg

[PS] ASYNC_DEBUG is for internal-debugging like ISR. You can ignore it.

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?

UserRevisionLine numberNew 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 }