Test software for SatChat prototype hardware Platform - MAX32630FTHR
Dependencies: USBDevice max32630fthr
main.cpp@2:814706310a71, 2017-07-01 (annotated)
- Committer:
- koziniec
- Date:
- Sat Jul 01 01:05:45 2017 +0000
- Revision:
- 2:814706310a71
- Parent:
- 1:b8cb82927f33
- Child:
- 3:1dff075c1c88
tidied index
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
koziniec | 0:59c04ca89ae2 | 1 | |
koziniec | 0:59c04ca89ae2 | 2 | #include "mbed.h" |
koziniec | 0:59c04ca89ae2 | 3 | #include "max32630fthr.h" |
koziniec | 1:b8cb82927f33 | 4 | #include <stdbool.h> |
koziniec | 1:b8cb82927f33 | 5 | #define on 1 |
koziniec | 1:b8cb82927f33 | 6 | #define off 0 |
koziniec | 1:b8cb82927f33 | 7 | |
koziniec | 0:59c04ca89ae2 | 8 | Serial pc(USBTX, USBRX); |
koziniec | 1:b8cb82927f33 | 9 | Serial gps(P5_3, P5_4, 9600); |
koziniec | 0:59c04ca89ae2 | 10 | I2C i2c(P5_7,P6_0); // SDA, SCL |
koziniec | 0:59c04ca89ae2 | 11 | |
koziniec | 1:b8cb82927f33 | 12 | DigitalOut red_led(LED1,1); |
koziniec | 1:b8cb82927f33 | 13 | DigitalOut green_led(LED2,1); |
koziniec | 1:b8cb82927f33 | 14 | DigitalOut blue_led(LED3,1); |
koziniec | 1:b8cb82927f33 | 15 | |
koziniec | 1:b8cb82927f33 | 16 | void gps_power(bool state) |
koziniec | 1:b8cb82927f33 | 17 | { |
koziniec | 1:b8cb82927f33 | 18 | char data[2]; |
koziniec | 1:b8cb82927f33 | 19 | data[0] = 0x16; //MAX14690 LDO3cfg register |
koziniec | 1:b8cb82927f33 | 20 | data[1] = 0xE0; //Disable LDO3 |
koziniec | 1:b8cb82927f33 | 21 | if (state == on) { |
koziniec | 1:b8cb82927f33 | 22 | data[1] = 0xE2; //Enable LDO3 |
koziniec | 1:b8cb82927f33 | 23 | } |
koziniec | 1:b8cb82927f33 | 24 | i2c.write( 0x50, data, 2 ); |
koziniec | 1:b8cb82927f33 | 25 | } |
koziniec | 1:b8cb82927f33 | 26 | |
koziniec | 1:b8cb82927f33 | 27 | void gps_update(void) |
koziniec | 1:b8cb82927f33 | 28 | { |
koziniec | 1:b8cb82927f33 | 29 | char nmea_descriptor[5] = {0}; |
koziniec | 1:b8cb82927f33 | 30 | gps_power(on); |
koziniec | 1:b8cb82927f33 | 31 | while (1) { |
koziniec | 1:b8cb82927f33 | 32 | char nmea_sentence[82] = {0}; //Fill with NUL terminators |
koziniec | 1:b8cb82927f33 | 33 | gps.format(8,Serial::None,1); |
koziniec | 1:b8cb82927f33 | 34 | while (gps.getc()!='$'); //wait for start of sentence |
koziniec | 1:b8cb82927f33 | 35 | int nmea_index = 0; |
koziniec | 2:814706310a71 | 36 | nmea_sentence[nmea_index] = '$'; |
koziniec | 2:814706310a71 | 37 | while (nmea_sentence[nmea_index++] != '\n') { |
koziniec | 1:b8cb82927f33 | 38 | blue_led = 1; |
koziniec | 2:814706310a71 | 39 | nmea_sentence[nmea_index] = gps.getc(); |
koziniec | 1:b8cb82927f33 | 40 | blue_led = 0; |
koziniec | 1:b8cb82927f33 | 41 | //pc.putc(nmea_sentence[nmea_index-1]); |
koziniec | 1:b8cb82927f33 | 42 | if (nmea_index > 80) { |
koziniec | 1:b8cb82927f33 | 43 | nmea_index=80; |
koziniec | 1:b8cb82927f33 | 44 | } |
koziniec | 1:b8cb82927f33 | 45 | } |
koziniec | 1:b8cb82927f33 | 46 | // const char s[2] = ","; |
koziniec | 1:b8cb82927f33 | 47 | const char gprmc[7] = "$GPRMC"; |
koziniec | 1:b8cb82927f33 | 48 | char *token; |
koziniec | 1:b8cb82927f33 | 49 | token = strtok(nmea_sentence, ","); |
koziniec | 1:b8cb82927f33 | 50 | if (strcmp(token,gprmc) == 0){ |
koziniec | 1:b8cb82927f33 | 51 | pc.printf( " %s\n\r", token ); |
koziniec | 1:b8cb82927f33 | 52 | token = strtok(NULL, ","); |
koziniec | 1:b8cb82927f33 | 53 | pc.printf( " %s\n\r", token ); |
koziniec | 1:b8cb82927f33 | 54 | token = strtok(NULL, ","); |
koziniec | 1:b8cb82927f33 | 55 | pc.printf( " %s\n\r", token ); |
koziniec | 1:b8cb82927f33 | 56 | } |
koziniec | 1:b8cb82927f33 | 57 | } |
koziniec | 1:b8cb82927f33 | 58 | |
koziniec | 1:b8cb82927f33 | 59 | while (gps.readable()) { |
koziniec | 1:b8cb82927f33 | 60 | char dummy = gps.getc(); |
koziniec | 1:b8cb82927f33 | 61 | } |
koziniec | 1:b8cb82927f33 | 62 | } |
koziniec | 1:b8cb82927f33 | 63 | |
koziniec | 1:b8cb82927f33 | 64 | |
koziniec | 1:b8cb82927f33 | 65 | int main() |
koziniec | 1:b8cb82927f33 | 66 | { |
koziniec | 1:b8cb82927f33 | 67 | // |
koziniec | 1:b8cb82927f33 | 68 | char data[2]; |
koziniec | 1:b8cb82927f33 | 69 | data[0] = 0x1A; //MAX14690 BootCfg register |
koziniec | 1:b8cb82927f33 | 70 | data[1] = 0x30; //Always-On Mode, off state via PWR_OFF_CMD |
koziniec | 0:59c04ca89ae2 | 71 | i2c.write( 0x50, data, 2 ); |
koziniec | 0:59c04ca89ae2 | 72 | |
koziniec | 1:b8cb82927f33 | 73 | data[0] = 0x17; //MAX14690 LDO3Vset register |
koziniec | 0:59c04ca89ae2 | 74 | data[1] = 0x19; //3.3V |
koziniec | 0:59c04ca89ae2 | 75 | i2c.write( 0x50, data, 2 ); |
koziniec | 1:b8cb82927f33 | 76 | gps_power(off); |
koziniec | 1:b8cb82927f33 | 77 | wait(5); |
koziniec | 1:b8cb82927f33 | 78 | while (1) { |
koziniec | 1:b8cb82927f33 | 79 | gps_update(); |
koziniec | 0:59c04ca89ae2 | 80 | } |
koziniec | 0:59c04ca89ae2 | 81 | } |
koziniec | 0:59c04ca89ae2 | 82 | |
koziniec | 0:59c04ca89ae2 | 83 | |
koziniec | 0:59c04ca89ae2 | 84 | |
koziniec | 0:59c04ca89ae2 | 85 | |
koziniec | 0:59c04ca89ae2 | 86 | |
koziniec | 0:59c04ca89ae2 | 87 | |
koziniec | 0:59c04ca89ae2 | 88 | |
koziniec | 0:59c04ca89ae2 | 89 | |
koziniec | 0:59c04ca89ae2 | 90 | |
koziniec | 0:59c04ca89ae2 | 91 |