GainSpan Wi-Fi module, test for SPI interface.

Dependencies:   mbed

Committer:
gsfan
Date:
Tue Aug 20 01:57:46 2019 +0000
Revision:
1:de94ad0f7925
Parent:
0:de199215b4c0
1st build;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsfan 1:de94ad0f7925 1 /*
gsfan 1:de94ad0f7925 2 * for GS2000 (GS2K / GS2100MIP)
gsfan 1:de94ad0f7925 3 * SDK BUILDER
gsfan 1:de94ad0f7925 4 * Application = Serial to Wi-Fi (Hosted)
gsfan 1:de94ad0f7925 5 * Host options for Serial Application = UART Command and SPI Data
gsfan 1:de94ad0f7925 6
gsfan 1:de94ad0f7925 7 Serial2WiFi APP
gsfan 1:de94ad0f7925 8 DataInterfaceReady
gsfan 1:de94ad0f7925 9
gsfan 1:de94ad0f7925 10 AT+BDATA=1
gsfan 1:de94ad0f7925 11 AT+WM=0
gsfan 1:de94ad0f7925 12 AT+NDHCP=1,gsfan
gsfan 1:de94ad0f7925 13 AT+WAUTH=0
gsfan 1:de94ad0f7925 14 AT+WPAPSK=SSID,PASS
gsfan 1:de94ad0f7925 15 AT+WA=SSID
gsfan 1:de94ad0f7925 16 AT+NSUDP=10000
gsfan 1:de94ad0f7925 17
gsfan 1:de94ad0f7925 18 */
gsfan 0:de199215b4c0 19 #include "mbed.h"
gsfan 0:de199215b4c0 20
gsfan 1:de94ad0f7925 21 DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);
gsfan 0:de199215b4c0 22 Serial pc(USBTX, USBRX);
gsfan 0:de199215b4c0 23
gsfan 1:de94ad0f7925 24 SPI spi(p5, p6, p7); // mosi(DIN), miso(DOUT), sck(CLK)
gsfan 1:de94ad0f7925 25 DigitalOut cs(p8); // cs(CS)
gsfan 1:de94ad0f7925 26 DigitalInOut reset(p10);
gsfan 1:de94ad0f7925 27 DigitalIn wake(p9); // host wakeup(GPIO28)
gsfan 1:de94ad0f7925 28 Serial ser(p13, p14); // uart
gsfan 1:de94ad0f7925 29
gsfan 1:de94ad0f7925 30 void send () {
gsfan 1:de94ad0f7925 31 int i;
gsfan 1:de94ad0f7925 32 char cmd[100];
gsfan 1:de94ad0f7925 33
gsfan 1:de94ad0f7925 34 // NSUDP cid=0
gsfan 1:de94ad0f7925 35 sprintf(cmd, "\x1bY%X%s:%d:%04d", 0, "192.168.0.10", 64540, 10);
gsfan 1:de94ad0f7925 36 for (i = 0; i < strlen(cmd); i ++) {
gsfan 1:de94ad0f7925 37 cs = 0;
gsfan 1:de94ad0f7925 38 spi.write(cmd[i]);
gsfan 1:de94ad0f7925 39 cs = 1;
gsfan 1:de94ad0f7925 40 }
gsfan 1:de94ad0f7925 41 for (i = 0; i < 10; i ++) {
gsfan 1:de94ad0f7925 42 cs = 0;
gsfan 1:de94ad0f7925 43 spi.write('A' + i);
gsfan 1:de94ad0f7925 44 cs = 1;
gsfan 1:de94ad0f7925 45 }
gsfan 1:de94ad0f7925 46 }
gsfan 0:de199215b4c0 47
gsfan 0:de199215b4c0 48 int main() {
gsfan 1:de94ad0f7925 49 Timer t;
gsfan 0:de199215b4c0 50 char c;
gsfan 0:de199215b4c0 51
gsfan 0:de199215b4c0 52 pc.baud(115200);
gsfan 1:de94ad0f7925 53 pc.printf("--- gs spi begin\r\n");
gsfan 1:de94ad0f7925 54
gsfan 1:de94ad0f7925 55 ser.baud(115200); // uart
gsfan 1:de94ad0f7925 56
gsfan 0:de199215b4c0 57 cs = 1;
gsfan 1:de94ad0f7925 58 wake.mode(PullDown);
gsfan 1:de94ad0f7925 59 spi.format(8, 1);
gsfan 1:de94ad0f7925 60 spi.frequency(10000000);
gsfan 1:de94ad0f7925 61 reset.output();
gsfan 1:de94ad0f7925 62 reset = 0;
gsfan 1:de94ad0f7925 63 led2 = 1;
gsfan 0:de199215b4c0 64
gsfan 1:de94ad0f7925 65 led1 = 1;
gsfan 1:de94ad0f7925 66 wait_ms(100);
gsfan 1:de94ad0f7925 67
gsfan 1:de94ad0f7925 68 reset.input();
gsfan 1:de94ad0f7925 69 reset.mode(PullUp);
gsfan 1:de94ad0f7925 70 led2 = 0;
gsfan 1:de94ad0f7925 71
gsfan 1:de94ad0f7925 72 t.reset();
gsfan 1:de94ad0f7925 73 t.start();
gsfan 0:de199215b4c0 74 for (;;) {
gsfan 1:de94ad0f7925 75 led3 = wake;
gsfan 1:de94ad0f7925 76 if (wake == 1) {
gsfan 1:de94ad0f7925 77 pc.printf("\r\nwake: ");
gsfan 1:de94ad0f7925 78 for (int i = 0; i < 1000; i ++) {
gsfan 1:de94ad0f7925 79 cs = 0;
gsfan 1:de94ad0f7925 80 c = spi.write(0xf5);
gsfan 1:de94ad0f7925 81 cs = 1;
gsfan 1:de94ad0f7925 82 if ((c >= 0x20 && c < 0x7f) || c == 0x0d || c == 0x0a) {
gsfan 1:de94ad0f7925 83 pc.printf(" %c", c);
gsfan 1:de94ad0f7925 84 } else
gsfan 1:de94ad0f7925 85 if (c != 0xf5) {
gsfan 1:de94ad0f7925 86 pc.printf(" %02x", c);
gsfan 1:de94ad0f7925 87 }
gsfan 1:de94ad0f7925 88 if (wake == 0) break;
gsfan 1:de94ad0f7925 89 }
gsfan 1:de94ad0f7925 90 pc.printf(" [EOM]\r\n");
gsfan 0:de199215b4c0 91 }
gsfan 1:de94ad0f7925 92
gsfan 1:de94ad0f7925 93 while (ser.readable()) {
gsfan 1:de94ad0f7925 94 c = ser.getc();
gsfan 0:de199215b4c0 95 if ((c >= 0x20 && c < 0x7f) || c == 0x0d || c == 0x0a) {
gsfan 0:de199215b4c0 96 pc.printf("%c", c);
gsfan 0:de199215b4c0 97 } else
gsfan 0:de199215b4c0 98 if (c != 0xf5) {
gsfan 1:de94ad0f7925 99 pc.printf(" %02x", c);
gsfan 1:de94ad0f7925 100 }
gsfan 1:de94ad0f7925 101 }
gsfan 1:de94ad0f7925 102
gsfan 1:de94ad0f7925 103 if (pc.readable()) {
gsfan 1:de94ad0f7925 104 c = pc.getc();
gsfan 1:de94ad0f7925 105 if (c == '@') {
gsfan 1:de94ad0f7925 106 send();
gsfan 1:de94ad0f7925 107 } else {
gsfan 1:de94ad0f7925 108 pc.putc(c);
gsfan 1:de94ad0f7925 109 ser.putc(c);
gsfan 0:de199215b4c0 110 }
gsfan 0:de199215b4c0 111 }
gsfan 0:de199215b4c0 112 }
gsfan 0:de199215b4c0 113 }