Lorawan to Pulga

Dependencies:   pulga-lorawan-drv SPI_MX25R Si1133 BME280

Committer:
brunnobbco
Date:
Fri Jan 08 20:16:58 2021 +0000
Revision:
61:65744bc8ab55
Lorawan, GPS, Sensors

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brunnobbco 61:65744bc8ab55 1
brunnobbco 61:65744bc8ab55 2 #define SYNC1 0xB5
brunnobbco 61:65744bc8ab55 3 #define SYNC2 0x62
brunnobbco 61:65744bc8ab55 4
brunnobbco 61:65744bc8ab55 5 //GPS DEclaration
brunnobbco 61:65744bc8ab55 6 SPI spi_2(P0_5, P0_7, P0_11); // mosi, miso, sclk
brunnobbco 61:65744bc8ab55 7 DigitalOut cs(P0_30);
brunnobbco 61:65744bc8ab55 8 DigitalOut gps_reset(P1_2);
brunnobbco 61:65744bc8ab55 9 DigitalOut gps_int (P0_23);
brunnobbco 61:65744bc8ab55 10 DigitalOut gps_DSEL (P0_27);
brunnobbco 61:65744bc8ab55 11
brunnobbco 61:65744bc8ab55 12
brunnobbco 61:65744bc8ab55 13
brunnobbco 61:65744bc8ab55 14
brunnobbco 61:65744bc8ab55 15
brunnobbco 61:65744bc8ab55 16 typedef struct
brunnobbco 61:65744bc8ab55 17 {
brunnobbco 61:65744bc8ab55 18 uint8_t cls;
brunnobbco 61:65744bc8ab55 19 uint8_t id;
brunnobbco 61:65744bc8ab55 20 uint16_t len; //Length of the payload. Does not include cls, id, or checksum bytes
brunnobbco 61:65744bc8ab55 21 uint8_t *payload;
brunnobbco 61:65744bc8ab55 22 uint8_t checksumA; //Given to us from module. Checked against the rolling calculated A/B checksums.
brunnobbco 61:65744bc8ab55 23 uint8_t checksumB;
brunnobbco 61:65744bc8ab55 24 } gps_ubxPacket;
brunnobbco 61:65744bc8ab55 25
brunnobbco 61:65744bc8ab55 26 typedef struct
brunnobbco 61:65744bc8ab55 27 {
brunnobbco 61:65744bc8ab55 28 uint32_t iTOW=0;
brunnobbco 61:65744bc8ab55 29 uint16_t year=0;
brunnobbco 61:65744bc8ab55 30 uint8_t month=0;
brunnobbco 61:65744bc8ab55 31 uint8_t day=0;
brunnobbco 61:65744bc8ab55 32 uint8_t hour=0;
brunnobbco 61:65744bc8ab55 33 uint8_t min=0;
brunnobbco 61:65744bc8ab55 34 uint8_t sec=0;
brunnobbco 61:65744bc8ab55 35 int8_t valid=0;
brunnobbco 61:65744bc8ab55 36 uint32_t tAcc=0;
brunnobbco 61:65744bc8ab55 37 int32_t nano=0;
brunnobbco 61:65744bc8ab55 38 uint8_t fixtype=0;
brunnobbco 61:65744bc8ab55 39 int8_t flags=0;
brunnobbco 61:65744bc8ab55 40 int8_t flags2=0;
brunnobbco 61:65744bc8ab55 41 uint8_t numSV=0;
brunnobbco 61:65744bc8ab55 42 int32_t lon=0;
brunnobbco 61:65744bc8ab55 43 int32_t lat=0;
brunnobbco 61:65744bc8ab55 44 int32_t height=0;
brunnobbco 61:65744bc8ab55 45 int32_t hMSL=0;
brunnobbco 61:65744bc8ab55 46 uint32_t hAcc=0;
brunnobbco 61:65744bc8ab55 47 uint32_t vAcc=0;
brunnobbco 61:65744bc8ab55 48 int32_t velN=0;
brunnobbco 61:65744bc8ab55 49 int32_t velE=0;
brunnobbco 61:65744bc8ab55 50 int32_t velD=0;
brunnobbco 61:65744bc8ab55 51 int32_t gSpeed=0;
brunnobbco 61:65744bc8ab55 52 int32_t headMot=0;
brunnobbco 61:65744bc8ab55 53 uint32_t sAcc=0;
brunnobbco 61:65744bc8ab55 54 uint32_t headAcc=0;
brunnobbco 61:65744bc8ab55 55 uint16_t pDOP=0;
brunnobbco 61:65744bc8ab55 56 int32_t headVeh;
brunnobbco 61:65744bc8ab55 57 int16_t magDec;
brunnobbco 61:65744bc8ab55 58 uint16_t magAcc;
brunnobbco 61:65744bc8ab55 59
brunnobbco 61:65744bc8ab55 60
brunnobbco 61:65744bc8ab55 61 } gps_navPVT;
brunnobbco 61:65744bc8ab55 62
brunnobbco 61:65744bc8ab55 63
brunnobbco 61:65744bc8ab55 64 void gps_leBootMsg(){
brunnobbco 61:65744bc8ab55 65
brunnobbco 61:65744bc8ab55 66 #define MAXIMUM_PACKET_SIZE 60
brunnobbco 61:65744bc8ab55 67 int packet_size;
brunnobbco 61:65744bc8ab55 68 uint8_t packet[MAXIMUM_PACKET_SIZE];
brunnobbco 61:65744bc8ab55 69 uint8_t value;
brunnobbco 61:65744bc8ab55 70 int cont;
brunnobbco 61:65744bc8ab55 71 value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 72
brunnobbco 61:65744bc8ab55 73 while (value != '$' ){ //wait start boot msg
brunnobbco 61:65744bc8ab55 74 value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 75 wait_ms(5);
brunnobbco 61:65744bc8ab55 76 cont++;
brunnobbco 61:65744bc8ab55 77 if (cont > 100){
brunnobbco 61:65744bc8ab55 78 printf("\n no response \n");
brunnobbco 61:65744bc8ab55 79 return;
brunnobbco 61:65744bc8ab55 80 }
brunnobbco 61:65744bc8ab55 81 }
brunnobbco 61:65744bc8ab55 82 packet[0] = value;
brunnobbco 61:65744bc8ab55 83 value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 84 for (packet_size = 1 ; packet_size <= MAXIMUM_PACKET_SIZE ;packet_size++) {
brunnobbco 61:65744bc8ab55 85 if (value != '\n' ){
brunnobbco 61:65744bc8ab55 86 packet [packet_size]= value;
brunnobbco 61:65744bc8ab55 87 value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 88 }
brunnobbco 61:65744bc8ab55 89 else {
brunnobbco 61:65744bc8ab55 90 //lora_send_packet (packet , (uint8_t) packet_size+1); // manda atraves do lora a mensagem de boot do gps
brunnobbco 61:65744bc8ab55 91 printf("Boot msg: %s \n", packet);
brunnobbco 61:65744bc8ab55 92 return;
brunnobbco 61:65744bc8ab55 93 }
brunnobbco 61:65744bc8ab55 94
brunnobbco 61:65744bc8ab55 95 }
brunnobbco 61:65744bc8ab55 96
brunnobbco 61:65744bc8ab55 97 }
brunnobbco 61:65744bc8ab55 98
brunnobbco 61:65744bc8ab55 99 void gps_le_envia_linha(){
brunnobbco 61:65744bc8ab55 100
brunnobbco 61:65744bc8ab55 101 uint8_t packet[150];
brunnobbco 61:65744bc8ab55 102 uint8_t value;
brunnobbco 61:65744bc8ab55 103
brunnobbco 61:65744bc8ab55 104 for (int i=0;i < 149; i++){
brunnobbco 61:65744bc8ab55 105 if (value == '\n'){
brunnobbco 61:65744bc8ab55 106 //lora_send_packet (packet , (uint8_t) i);
brunnobbco 61:65744bc8ab55 107 return;
brunnobbco 61:65744bc8ab55 108 }
brunnobbco 61:65744bc8ab55 109 else packet [i] =value;
brunnobbco 61:65744bc8ab55 110 }
brunnobbco 61:65744bc8ab55 111 //lora_send_packet (packet , (uint8_t) 99);
brunnobbco 61:65744bc8ab55 112
brunnobbco 61:65744bc8ab55 113 }
brunnobbco 61:65744bc8ab55 114
brunnobbco 61:65744bc8ab55 115
brunnobbco 61:65744bc8ab55 116 gps_ubxPacket gps_calcula_check(gps_ubxPacket Packet) {
brunnobbco 61:65744bc8ab55 117
brunnobbco 61:65744bc8ab55 118 uint8_t Buffer[Packet.len + 4];
brunnobbco 61:65744bc8ab55 119 uint8_t CK_A=0;
brunnobbco 61:65744bc8ab55 120 uint8_t CK_B=0;
brunnobbco 61:65744bc8ab55 121
brunnobbco 61:65744bc8ab55 122 Buffer[0]= Packet.cls;
brunnobbco 61:65744bc8ab55 123 Buffer[1]= Packet.id;
brunnobbco 61:65744bc8ab55 124 Buffer[2]= Packet.len & 0xFF;
brunnobbco 61:65744bc8ab55 125 Buffer[3]= (Packet.len >> 8)& 0xFF;;
brunnobbco 61:65744bc8ab55 126
brunnobbco 61:65744bc8ab55 127 //send_packet (Buffer, (uint8_t) 4 );
brunnobbco 61:65744bc8ab55 128
brunnobbco 61:65744bc8ab55 129 for (uint16_t i = 0; i < Packet.len; i++) {
brunnobbco 61:65744bc8ab55 130 Buffer [i+4] = Packet.payload[i] ;
brunnobbco 61:65744bc8ab55 131 }
brunnobbco 61:65744bc8ab55 132
brunnobbco 61:65744bc8ab55 133 //send_packet (Buffer, (uint8_t) Packet.len + 4 );
brunnobbco 61:65744bc8ab55 134
brunnobbco 61:65744bc8ab55 135 for(int i=0 ; i < Packet.len + 4 ; i++) {
brunnobbco 61:65744bc8ab55 136 CK_A = CK_A + Buffer[i];
brunnobbco 61:65744bc8ab55 137 CK_B = CK_B + CK_A;
brunnobbco 61:65744bc8ab55 138 CK_A = CK_A & 0xFF;
brunnobbco 61:65744bc8ab55 139 CK_B = CK_B & 0xFF;
brunnobbco 61:65744bc8ab55 140 //uint8_t packet_check[5] ={Buffer[i],(uint8_t) (i+1),CK_A,CK_B,'#'};
brunnobbco 61:65744bc8ab55 141 // send_packet (packet_check , (uint8_t) 5);
brunnobbco 61:65744bc8ab55 142 }
brunnobbco 61:65744bc8ab55 143
brunnobbco 61:65744bc8ab55 144
brunnobbco 61:65744bc8ab55 145 // uint8_t packet_check[2] ={CK_A, CK_B};
brunnobbco 61:65744bc8ab55 146 // send_packet (packet_check , (uint8_t) 2);
brunnobbco 61:65744bc8ab55 147
brunnobbco 61:65744bc8ab55 148 Packet.checksumA = CK_A;
brunnobbco 61:65744bc8ab55 149 Packet.checksumB = CK_B;
brunnobbco 61:65744bc8ab55 150
brunnobbco 61:65744bc8ab55 151 return Packet;
brunnobbco 61:65744bc8ab55 152
brunnobbco 61:65744bc8ab55 153 }
brunnobbco 61:65744bc8ab55 154
brunnobbco 61:65744bc8ab55 155 void send_gps_packet(gps_ubxPacket packet){
brunnobbco 61:65744bc8ab55 156
brunnobbco 61:65744bc8ab55 157 spi_2.write(SYNC1);
brunnobbco 61:65744bc8ab55 158 spi_2.write(SYNC2);
brunnobbco 61:65744bc8ab55 159 spi_2.write(packet.cls);
brunnobbco 61:65744bc8ab55 160 spi_2.write(packet.id);
brunnobbco 61:65744bc8ab55 161 spi_2.write(packet.len & 0xFF);
brunnobbco 61:65744bc8ab55 162 spi_2.write((packet.len >> 8)& 0xFF);
brunnobbco 61:65744bc8ab55 163
brunnobbco 61:65744bc8ab55 164 for (uint16_t i = 0; i < packet.len; i++) {
brunnobbco 61:65744bc8ab55 165 spi_2.write(packet.payload[i]);
brunnobbco 61:65744bc8ab55 166 }
brunnobbco 61:65744bc8ab55 167 spi_2.write(packet.checksumA);
brunnobbco 61:65744bc8ab55 168 spi_2.write(packet.checksumB);
brunnobbco 61:65744bc8ab55 169
brunnobbco 61:65744bc8ab55 170 //=============imprime resposta
brunnobbco 61:65744bc8ab55 171 wait_ms(50);
brunnobbco 61:65744bc8ab55 172 gps_le_envia_linha();
brunnobbco 61:65744bc8ab55 173 gps_le_envia_linha();
brunnobbco 61:65744bc8ab55 174
brunnobbco 61:65744bc8ab55 175 }
brunnobbco 61:65744bc8ab55 176
brunnobbco 61:65744bc8ab55 177 gps_navPVT le_nav_pvt () {
brunnobbco 61:65744bc8ab55 178
brunnobbco 61:65744bc8ab55 179 gps_navPVT Pac;
brunnobbco 61:65744bc8ab55 180
brunnobbco 61:65744bc8ab55 181 char state = 0;
brunnobbco 61:65744bc8ab55 182 int cont =0;
brunnobbco 61:65744bc8ab55 183 int numb=0;
brunnobbco 61:65744bc8ab55 184
brunnobbco 61:65744bc8ab55 185 while (1){ //começou mensagem
brunnobbco 61:65744bc8ab55 186 if (cont > 100) {
brunnobbco 61:65744bc8ab55 187 // BMX160_read_acc();
brunnobbco 61:65744bc8ab55 188 return Pac;
brunnobbco 61:65744bc8ab55 189 }
brunnobbco 61:65744bc8ab55 190 if (state == 0 ){
brunnobbco 61:65744bc8ab55 191
brunnobbco 61:65744bc8ab55 192 if ( spi_2.write(0x00) == 0xB5){
brunnobbco 61:65744bc8ab55 193 state =1;
brunnobbco 61:65744bc8ab55 194 }
brunnobbco 61:65744bc8ab55 195 else {
brunnobbco 61:65744bc8ab55 196 cont++;
brunnobbco 61:65744bc8ab55 197 wait_ms(40);
brunnobbco 61:65744bc8ab55 198 }
brunnobbco 61:65744bc8ab55 199
brunnobbco 61:65744bc8ab55 200 }
brunnobbco 61:65744bc8ab55 201 else if (state == 1){ // read 0xb5
brunnobbco 61:65744bc8ab55 202 if (spi_2.write(0x00) == 0x62){
brunnobbco 61:65744bc8ab55 203 state =2;
brunnobbco 61:65744bc8ab55 204 //wait_ms(30);
brunnobbco 61:65744bc8ab55 205 }
brunnobbco 61:65744bc8ab55 206 else state =0;
brunnobbco 61:65744bc8ab55 207 }
brunnobbco 61:65744bc8ab55 208 else if (state == 2) {// read 0xb5 0x62
brunnobbco 61:65744bc8ab55 209 if (spi_2.write(0x00) == 0x01){
brunnobbco 61:65744bc8ab55 210 //printf("le_nav_pvt going to state 3");
brunnobbco 61:65744bc8ab55 211 state =3;
brunnobbco 61:65744bc8ab55 212 //wait_ms(30);
brunnobbco 61:65744bc8ab55 213 }
brunnobbco 61:65744bc8ab55 214 else state =0;
brunnobbco 61:65744bc8ab55 215 }
brunnobbco 61:65744bc8ab55 216 else if (state == 3) {// read 0xb5 0x62 0x01
brunnobbco 61:65744bc8ab55 217 if (spi_2.write(0x00) == 0x07){
brunnobbco 61:65744bc8ab55 218 state =4;
brunnobbco 61:65744bc8ab55 219 //printf("le_nav_pvt going to state 4");
brunnobbco 61:65744bc8ab55 220 //wait_ms(30);
brunnobbco 61:65744bc8ab55 221 }
brunnobbco 61:65744bc8ab55 222 else state =0;
brunnobbco 61:65744bc8ab55 223 }
brunnobbco 61:65744bc8ab55 224 else if (state == 4) {// read 0xb5 0x62 0x01 0x07
brunnobbco 61:65744bc8ab55 225 if (spi_2.write(0x00) == 0x5c){
brunnobbco 61:65744bc8ab55 226 state =5;
brunnobbco 61:65744bc8ab55 227 //printf("le_nav_pvt going to state 5");
brunnobbco 61:65744bc8ab55 228 //wait_ms(30);
brunnobbco 61:65744bc8ab55 229 }
brunnobbco 61:65744bc8ab55 230 else state =0;
brunnobbco 61:65744bc8ab55 231 }
brunnobbco 61:65744bc8ab55 232 else if (state == 5) {// read 0xb5 0x62 0x01 0x07 0x5c
brunnobbco 61:65744bc8ab55 233 if (spi_2.write(0x00) == 0x00){
brunnobbco 61:65744bc8ab55 234 state =6;
brunnobbco 61:65744bc8ab55 235 //printf("le_nav_pvt going to state 6");
brunnobbco 61:65744bc8ab55 236 //wait_ms(30);
brunnobbco 61:65744bc8ab55 237 }
brunnobbco 61:65744bc8ab55 238 else state =0;
brunnobbco 61:65744bc8ab55 239 }
brunnobbco 61:65744bc8ab55 240 else if (state == 6){ // read 0xb5 0x62 0x01 0x07 0x5c 0x00
brunnobbco 61:65744bc8ab55 241 uint8_t value1,value2,value3,value4;
brunnobbco 61:65744bc8ab55 242 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 243 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 244 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 245 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 246 Pac.iTOW = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 247
brunnobbco 61:65744bc8ab55 248 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 249 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 250 Pac.year = (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 251
brunnobbco 61:65744bc8ab55 252 Pac.month = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 253 Pac.day = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 254 Pac.hour = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 255 Pac.min = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 256 Pac.sec = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 257 Pac.valid = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 258
brunnobbco 61:65744bc8ab55 259 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 260 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 261 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 262 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 263 Pac.tAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 264
brunnobbco 61:65744bc8ab55 265 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 266 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 267 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 268 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 269 Pac.nano = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 270
brunnobbco 61:65744bc8ab55 271 Pac.fixtype = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 272 Pac.flags = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 273 Pac.flags2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 274 Pac.numSV = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 275
brunnobbco 61:65744bc8ab55 276 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 277 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 278 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 279 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 280 Pac.lon = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 281 lon= (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 282 //printf("Long Data %d \n ", lon);
brunnobbco 61:65744bc8ab55 283
brunnobbco 61:65744bc8ab55 284 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 285 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 286 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 287 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 288 Pac.lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 289 lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 290 //printf("Lat Data %d", lat);
brunnobbco 61:65744bc8ab55 291
brunnobbco 61:65744bc8ab55 292
brunnobbco 61:65744bc8ab55 293 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 294 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 295 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 296 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 297 Pac.height = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 298
brunnobbco 61:65744bc8ab55 299 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 300 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 301 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 302 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 303 Pac.hMSL = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 304
brunnobbco 61:65744bc8ab55 305 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 306 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 307 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 308 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 309 Pac.hAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 310
brunnobbco 61:65744bc8ab55 311 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 312 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 313 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 314 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 315 Pac.vAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 316
brunnobbco 61:65744bc8ab55 317 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 318 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 319 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 320 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 321 Pac.velN = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 322
brunnobbco 61:65744bc8ab55 323 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 324 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 325 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 326 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 327 Pac.velE = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 328
brunnobbco 61:65744bc8ab55 329 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 330 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 331 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 332 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 333 Pac.velD = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 334
brunnobbco 61:65744bc8ab55 335 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 336 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 337 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 338 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 339 Pac.gSpeed = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 340
brunnobbco 61:65744bc8ab55 341 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 342 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 343 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 344 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 345 Pac.headMot = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 346
brunnobbco 61:65744bc8ab55 347 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 348 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 349 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 350 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 351 Pac.sAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 352
brunnobbco 61:65744bc8ab55 353 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 354 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 355 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 356 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 357 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 358
brunnobbco 61:65744bc8ab55 359 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 360 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 361 Pac.pDOP = (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 362
brunnobbco 61:65744bc8ab55 363 for (int i=0; i < 6; i++)spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 364
brunnobbco 61:65744bc8ab55 365 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 366 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 367 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 368 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 369 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 370
brunnobbco 61:65744bc8ab55 371 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 372 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 373 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 374 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 375 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 376
brunnobbco 61:65744bc8ab55 377 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 378 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 379 Pac.magDec = (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 380
brunnobbco 61:65744bc8ab55 381 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 382 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 383 Pac.magAcc = (value2 << 8) + value1;
brunnobbco 61:65744bc8ab55 384
brunnobbco 61:65744bc8ab55 385
brunnobbco 61:65744bc8ab55 386 return Pac;
brunnobbco 61:65744bc8ab55 387 }
brunnobbco 61:65744bc8ab55 388 }
brunnobbco 61:65744bc8ab55 389 wait_ms(100);
brunnobbco 61:65744bc8ab55 390 }
brunnobbco 61:65744bc8ab55 391
brunnobbco 61:65744bc8ab55 392 void send_nav_pvt (){
brunnobbco 61:65744bc8ab55 393 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
brunnobbco 61:65744bc8ab55 394
brunnobbco 61:65744bc8ab55 395 //=============envia pacote nav pvt
brunnobbco 61:65744bc8ab55 396 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
brunnobbco 61:65744bc8ab55 397 spi_2.write(packet_nav_pvt[i]);
brunnobbco 61:65744bc8ab55 398 wait_ms(5);
brunnobbco 61:65744bc8ab55 399 }
brunnobbco 61:65744bc8ab55 400
brunnobbco 61:65744bc8ab55 401 gps_navPVT Data = le_nav_pvt();
brunnobbco 61:65744bc8ab55 402
brunnobbco 61:65744bc8ab55 403 uint8_t packet [100];
brunnobbco 61:65744bc8ab55 404
brunnobbco 61:65744bc8ab55 405 packet [0]= (Data.lon >> 24)& 0xff;
brunnobbco 61:65744bc8ab55 406 packet [1]= (Data.lon >> 16) & 0xff ;
brunnobbco 61:65744bc8ab55 407 packet [2]= (Data.lon >> 8) & 0xff;
brunnobbco 61:65744bc8ab55 408 packet [3]= Data.lon & 0xff;
brunnobbco 61:65744bc8ab55 409 packet [4]= (Data.lat >> 24)& 0xff;
brunnobbco 61:65744bc8ab55 410 packet [5]= (Data.lat >> 16) & 0xff ;
brunnobbco 61:65744bc8ab55 411 packet [6]= (Data.lat >> 8) & 0xff;
brunnobbco 61:65744bc8ab55 412 packet [7]= Data.lat & 0xff;
brunnobbco 61:65744bc8ab55 413 packet [8]= (Data.hMSL >> 24)& 0xff;
brunnobbco 61:65744bc8ab55 414 packet [9]= (Data.hMSL >> 16) & 0xff ;
brunnobbco 61:65744bc8ab55 415 packet [10]= (Data.hMSL >> 8) & 0xff;
brunnobbco 61:65744bc8ab55 416 packet [11]= Data.hMSL & 0xff;
brunnobbco 61:65744bc8ab55 417
brunnobbco 61:65744bc8ab55 418 if (Data.lon !=0 || Data.lat !=0 ){
brunnobbco 61:65744bc8ab55 419 //lora_send_packet (packet , (uint8_t) 12);
brunnobbco 61:65744bc8ab55 420 }
brunnobbco 61:65744bc8ab55 421 }
brunnobbco 61:65744bc8ab55 422
brunnobbco 61:65744bc8ab55 423 void send_gps_data(uint8_t *packet, uint8_t size){
brunnobbco 61:65744bc8ab55 424 uint8_t packet_rec[size];
brunnobbco 61:65744bc8ab55 425 for ( int i=0; i< size ; i++){
brunnobbco 61:65744bc8ab55 426 spi_2.write(packet[i]);
brunnobbco 61:65744bc8ab55 427
brunnobbco 61:65744bc8ab55 428 //wait_ms(5);
brunnobbco 61:65744bc8ab55 429 }
brunnobbco 61:65744bc8ab55 430 //send_packet (packet_rec ,size);
brunnobbco 61:65744bc8ab55 431 }
brunnobbco 61:65744bc8ab55 432
brunnobbco 61:65744bc8ab55 433 /*
brunnobbco 61:65744bc8ab55 434 void wait_packet (uint8_t *header) {
brunnobbco 61:65744bc8ab55 435
brunnobbco 61:65744bc8ab55 436 char state = 0;
brunnobbco 61:65744bc8ab55 437 int cont =0;
brunnobbco 61:65744bc8ab55 438
brunnobbco 61:65744bc8ab55 439 while (1){ //começou mensagem
brunnobbco 61:65744bc8ab55 440 if (cont > 250) {
brunnobbco 61:65744bc8ab55 441 //led2=!led2;
brunnobbco 61:65744bc8ab55 442 return;
brunnobbco 61:65744bc8ab55 443 }
brunnobbco 61:65744bc8ab55 444 if (state == 0 ){
brunnobbco 61:65744bc8ab55 445 if (spi_2.write(0x00) == header[0])
brunnobbco 61:65744bc8ab55 446 state =1;
brunnobbco 61:65744bc8ab55 447 else {
brunnobbco 61:65744bc8ab55 448 cont++;
brunnobbco 61:65744bc8ab55 449 wait_ms(10);
brunnobbco 61:65744bc8ab55 450 }
brunnobbco 61:65744bc8ab55 451
brunnobbco 61:65744bc8ab55 452
brunnobbco 61:65744bc8ab55 453 }
brunnobbco 61:65744bc8ab55 454 else if (state == 1){ // read 0xb5
brunnobbco 61:65744bc8ab55 455 if (spi_2.write(0x00) == header[1]){
brunnobbco 61:65744bc8ab55 456 state =2;
brunnobbco 61:65744bc8ab55 457 }
brunnobbco 61:65744bc8ab55 458 else state =0;
brunnobbco 61:65744bc8ab55 459 }
brunnobbco 61:65744bc8ab55 460 else if (state == 2) {// read 0xb5 0x62
brunnobbco 61:65744bc8ab55 461 if (spi_2.write(0x00) == header[2]){
brunnobbco 61:65744bc8ab55 462 state =3;
brunnobbco 61:65744bc8ab55 463 }
brunnobbco 61:65744bc8ab55 464 else state =0;
brunnobbco 61:65744bc8ab55 465 }
brunnobbco 61:65744bc8ab55 466 else if (state == 3) {// read 0xb5 0x62 0x06
brunnobbco 61:65744bc8ab55 467 if (spi_2.write(0x00) == header[3]){
brunnobbco 61:65744bc8ab55 468 state =4;
brunnobbco 61:65744bc8ab55 469 }
brunnobbco 61:65744bc8ab55 470 else state =0;
brunnobbco 61:65744bc8ab55 471 }
brunnobbco 61:65744bc8ab55 472 else if (state == 4) {// read 0xb5 0x62 0x06 0x013
brunnobbco 61:65744bc8ab55 473
brunnobbco 61:65744bc8ab55 474 uint8_t packet[100];
brunnobbco 61:65744bc8ab55 475 uint8_t value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 476 uint8_t packet_size;
brunnobbco 61:65744bc8ab55 477
brunnobbco 61:65744bc8ab55 478 for (packet_size = 0 ; packet_size < 100 ;packet_size++) {
brunnobbco 61:65744bc8ab55 479 if (value != '\n' ){
brunnobbco 61:65744bc8ab55 480 packet [packet_size]= value;
brunnobbco 61:65744bc8ab55 481 value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 482 }
brunnobbco 61:65744bc8ab55 483 else {
brunnobbco 61:65744bc8ab55 484 lora_send_packet (packet , (uint8_t) packet_size+1);
brunnobbco 61:65744bc8ab55 485 //packet_size = MAXIMUM_PACKET_SIZE +1;
brunnobbco 61:65744bc8ab55 486 return;
brunnobbco 61:65744bc8ab55 487 }
brunnobbco 61:65744bc8ab55 488 }
brunnobbco 61:65744bc8ab55 489
brunnobbco 61:65744bc8ab55 490 }
brunnobbco 61:65744bc8ab55 491 }
brunnobbco 61:65744bc8ab55 492 }*/
brunnobbco 61:65744bc8ab55 493
brunnobbco 61:65744bc8ab55 494 void wait_packet_byte (uint8_t *header, uint8_t byte) {
brunnobbco 61:65744bc8ab55 495
brunnobbco 61:65744bc8ab55 496 char state = 0;
brunnobbco 61:65744bc8ab55 497 int cont =0;
brunnobbco 61:65744bc8ab55 498
brunnobbco 61:65744bc8ab55 499 while (1){ //começou mensagem
brunnobbco 61:65744bc8ab55 500 if (cont > 250) {
brunnobbco 61:65744bc8ab55 501 //led2=!led2;
brunnobbco 61:65744bc8ab55 502 return;
brunnobbco 61:65744bc8ab55 503 }
brunnobbco 61:65744bc8ab55 504 if (state == 0 ){
brunnobbco 61:65744bc8ab55 505 if (spi_2.write(0x00) == header[0])
brunnobbco 61:65744bc8ab55 506 state =1;
brunnobbco 61:65744bc8ab55 507 else {
brunnobbco 61:65744bc8ab55 508 cont++;
brunnobbco 61:65744bc8ab55 509 wait_ms(10);
brunnobbco 61:65744bc8ab55 510 }
brunnobbco 61:65744bc8ab55 511
brunnobbco 61:65744bc8ab55 512
brunnobbco 61:65744bc8ab55 513 }
brunnobbco 61:65744bc8ab55 514 else if (state == 1){ // read 0xb5
brunnobbco 61:65744bc8ab55 515 if (spi_2.write(0x00) == header[1]){
brunnobbco 61:65744bc8ab55 516 state =2;
brunnobbco 61:65744bc8ab55 517 }
brunnobbco 61:65744bc8ab55 518 else state =0;
brunnobbco 61:65744bc8ab55 519 }
brunnobbco 61:65744bc8ab55 520 else if (state == 2) {// read 0xb5 0x62
brunnobbco 61:65744bc8ab55 521 if (spi_2.write(0x00) == header[2]){
brunnobbco 61:65744bc8ab55 522 state =3;
brunnobbco 61:65744bc8ab55 523 }
brunnobbco 61:65744bc8ab55 524 else state =0;
brunnobbco 61:65744bc8ab55 525 }
brunnobbco 61:65744bc8ab55 526 else if (state == 3) {// read 0xb5 0x62 0x06
brunnobbco 61:65744bc8ab55 527 if (spi_2.write(0x00) == header[3]){
brunnobbco 61:65744bc8ab55 528 state =4;
brunnobbco 61:65744bc8ab55 529 }
brunnobbco 61:65744bc8ab55 530 else state =0;
brunnobbco 61:65744bc8ab55 531 }
brunnobbco 61:65744bc8ab55 532 else if (state == 4) {// read 0xb5 0x62 0x06 0x013
brunnobbco 61:65744bc8ab55 533
brunnobbco 61:65744bc8ab55 534 if (byte == 0){//mostrar todo o pacote
brunnobbco 61:65744bc8ab55 535 uint8_t packet[100];
brunnobbco 61:65744bc8ab55 536 uint8_t value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 537 uint8_t packet_size;
brunnobbco 61:65744bc8ab55 538
brunnobbco 61:65744bc8ab55 539 for (packet_size = 0 ; packet_size < 100 ;packet_size++) {
brunnobbco 61:65744bc8ab55 540 if (value != '\n' ){
brunnobbco 61:65744bc8ab55 541 packet [packet_size]= value;
brunnobbco 61:65744bc8ab55 542 value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 543 }
brunnobbco 61:65744bc8ab55 544 else {
brunnobbco 61:65744bc8ab55 545 //lora_send_packet (packet , (uint8_t) packet_size+1);
brunnobbco 61:65744bc8ab55 546 //packet_size = MAXIMUM_PACKET_SIZE +1;
brunnobbco 61:65744bc8ab55 547 return;
brunnobbco 61:65744bc8ab55 548 }
brunnobbco 61:65744bc8ab55 549 }//fim for
brunnobbco 61:65744bc8ab55 550 }//fim if byte
brunnobbco 61:65744bc8ab55 551
brunnobbco 61:65744bc8ab55 552 else {//mostrar apenas um byte
brunnobbco 61:65744bc8ab55 553
brunnobbco 61:65744bc8ab55 554
brunnobbco 61:65744bc8ab55 555 for (int i = 0 ; i < byte-1 ;i++)
brunnobbco 61:65744bc8ab55 556 spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 557
brunnobbco 61:65744bc8ab55 558 uint8_t packet[]={(uint8_t)99,(uint8_t)spi_2.write(0x00)};
brunnobbco 61:65744bc8ab55 559 //lora_send_packet (packet , (uint8_t) 2);
brunnobbco 61:65744bc8ab55 560
brunnobbco 61:65744bc8ab55 561
brunnobbco 61:65744bc8ab55 562 for (int i = 0 ; i < 100 ;i++)
brunnobbco 61:65744bc8ab55 563 if (spi_2.write(0x00) == '\n')
brunnobbco 61:65744bc8ab55 564 return;
brunnobbco 61:65744bc8ab55 565
brunnobbco 61:65744bc8ab55 566 return;
brunnobbco 61:65744bc8ab55 567
brunnobbco 61:65744bc8ab55 568 }//fim else byte
brunnobbco 61:65744bc8ab55 569
brunnobbco 61:65744bc8ab55 570 }
brunnobbco 61:65744bc8ab55 571
brunnobbco 61:65744bc8ab55 572 }
brunnobbco 61:65744bc8ab55 573
brunnobbco 61:65744bc8ab55 574 }
brunnobbco 61:65744bc8ab55 575
brunnobbco 61:65744bc8ab55 576
brunnobbco 61:65744bc8ab55 577 void gps_wait_same_packet () {
brunnobbco 61:65744bc8ab55 578
brunnobbco 61:65744bc8ab55 579 char state = 0;
brunnobbco 61:65744bc8ab55 580 int cont =0;
brunnobbco 61:65744bc8ab55 581
brunnobbco 61:65744bc8ab55 582 while (1){ //começou mensagem
brunnobbco 61:65744bc8ab55 583 if (cont > 250) {
brunnobbco 61:65744bc8ab55 584 //led2=!led2;
brunnobbco 61:65744bc8ab55 585 return;
brunnobbco 61:65744bc8ab55 586 }
brunnobbco 61:65744bc8ab55 587 if (state == 0 ){
brunnobbco 61:65744bc8ab55 588 if (spi_2.write(0x00) == 0xb5)
brunnobbco 61:65744bc8ab55 589 state =1;
brunnobbco 61:65744bc8ab55 590 else {
brunnobbco 61:65744bc8ab55 591 cont++;
brunnobbco 61:65744bc8ab55 592 wait_ms(10);
brunnobbco 61:65744bc8ab55 593 }
brunnobbco 61:65744bc8ab55 594
brunnobbco 61:65744bc8ab55 595
brunnobbco 61:65744bc8ab55 596 }
brunnobbco 61:65744bc8ab55 597 else if (state == 1){ // read 0xb5
brunnobbco 61:65744bc8ab55 598 if (spi_2.write(0x00) == 0x62){
brunnobbco 61:65744bc8ab55 599 state =2;
brunnobbco 61:65744bc8ab55 600 }
brunnobbco 61:65744bc8ab55 601 else state =0;
brunnobbco 61:65744bc8ab55 602 }
brunnobbco 61:65744bc8ab55 603 else if (state == 2){
brunnobbco 61:65744bc8ab55 604 uint8_t packet[200];
brunnobbco 61:65744bc8ab55 605 uint8_t value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 606 uint8_t packet_size;
brunnobbco 61:65744bc8ab55 607
brunnobbco 61:65744bc8ab55 608 for (packet_size = 0 ; packet_size < 200 ;packet_size++) {
brunnobbco 61:65744bc8ab55 609 if (value != '\n' ){
brunnobbco 61:65744bc8ab55 610 packet [packet_size]= value;
brunnobbco 61:65744bc8ab55 611 value = spi_2.write(0x00);
brunnobbco 61:65744bc8ab55 612 }
brunnobbco 61:65744bc8ab55 613 else {
brunnobbco 61:65744bc8ab55 614 //lora_send_packet (packet , (uint8_t) packet_size+1);
brunnobbco 61:65744bc8ab55 615 //packet_size = MAXIMUM_PACKET_SIZE +1;
brunnobbco 61:65744bc8ab55 616 return;
brunnobbco 61:65744bc8ab55 617 }
brunnobbco 61:65744bc8ab55 618
brunnobbco 61:65744bc8ab55 619 }//fim for
brunnobbco 61:65744bc8ab55 620 // lora_send_packet (packet , 200);
brunnobbco 61:65744bc8ab55 621 }
brunnobbco 61:65744bc8ab55 622 }
brunnobbco 61:65744bc8ab55 623 }
brunnobbco 61:65744bc8ab55 624
brunnobbco 61:65744bc8ab55 625 void gps_config_gnss (){
brunnobbco 61:65744bc8ab55 626
brunnobbco 61:65744bc8ab55 627 uint8_t packet_cfg_gnss[] = {
brunnobbco 61:65744bc8ab55 628 0xB5, 0x62, // Header
brunnobbco 61:65744bc8ab55 629 0x03, 0x3E, // Class ID = CFG, Msg ID = UBX-CFG-GNSS
brunnobbco 61:65744bc8ab55 630 0x3C, 0x00, // Payload Length = 60 bytes
brunnobbco 61:65744bc8ab55 631 0x00, 0x00, 0x20, 0x07, // msgVer=0, numTrkChHw=32, numTrkChUse=32, numConfigBlocks=7
brunnobbco 61:65744bc8ab55 632 0x00, 0x08, 0x10, 0x00, 0x01, 0x00, 0x01, 0x01, // gnssId=0 (GPS), resTrkCh=8, maxTrkCh=12, ENABLE
brunnobbco 61:65744bc8ab55 633 0x01, 0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=1 (SBAS), resTrkCh=1, maxTrkCh=2, ENABLE
brunnobbco 61:65744bc8ab55 634 0x02, 0x04, 0x0A, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=2 (Galileo), resTrkCh=4, maxTrkCh=10, ENABLE
brunnobbco 61:65744bc8ab55 635 0x03, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=3 (BeiDou), resTrkCh=4, maxTrkCh=8, DISABLE
brunnobbco 61:65744bc8ab55 636 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=4 (IMES), resTrkCh=0, maxTrkCh=8, DISABLE
brunnobbco 61:65744bc8ab55 637 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=5 (QZSS), resTrkCh=0, maxTrkCh=3, DISABLE
brunnobbco 61:65744bc8ab55 638 0x06, 0x04, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=6 (GLONASS), resTrkCh=4, maxTrkCh=8, ENABLE
brunnobbco 61:65744bc8ab55 639 0x00, 0x00 //checksums A &amp; B
brunnobbco 61:65744bc8ab55 640 };
brunnobbco 61:65744bc8ab55 641 uint8_t pos_ck = sizeof(packet_cfg_gnss)-2;
brunnobbco 61:65744bc8ab55 642 printf("gnss config finish");
brunnobbco 61:65744bc8ab55 643 uint8_t ubxi;
brunnobbco 61:65744bc8ab55 644 //calcula checksum
brunnobbco 61:65744bc8ab55 645 for (ubxi=2; ubxi<pos_ck ; ubxi++) {
brunnobbco 61:65744bc8ab55 646 packet_cfg_gnss[pos_ck] = packet_cfg_gnss[pos_ck] + packet_cfg_gnss[ubxi];
brunnobbco 61:65744bc8ab55 647 packet_cfg_gnss[pos_ck+1] = packet_cfg_gnss[pos_ck+1] + packet_cfg_gnss[pos_ck];
brunnobbco 61:65744bc8ab55 648 }
brunnobbco 61:65744bc8ab55 649
brunnobbco 61:65744bc8ab55 650 }
brunnobbco 61:65744bc8ab55 651
brunnobbco 61:65744bc8ab55 652
brunnobbco 61:65744bc8ab55 653 void gps_print_local (){
brunnobbco 61:65744bc8ab55 654 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
brunnobbco 61:65744bc8ab55 655
brunnobbco 61:65744bc8ab55 656 //=============envia pacote nav pvt
brunnobbco 61:65744bc8ab55 657 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
brunnobbco 61:65744bc8ab55 658 spi_2.write(packet_nav_pvt[i]);
brunnobbco 61:65744bc8ab55 659 wait_ms(20);
brunnobbco 61:65744bc8ab55 660 }
brunnobbco 61:65744bc8ab55 661
brunnobbco 61:65744bc8ab55 662 gps_navPVT Data = le_nav_pvt();
brunnobbco 61:65744bc8ab55 663
brunnobbco 61:65744bc8ab55 664 //printf ("gps lat=%d lon=%d \n",Data.lat ,Data.lon );
brunnobbco 61:65744bc8ab55 665 //lat=Data.lat;
brunnobbco 61:65744bc8ab55 666 //lon=Data.lon;
brunnobbco 61:65744bc8ab55 667 }
brunnobbco 61:65744bc8ab55 668
brunnobbco 61:65744bc8ab55 669 void gps_config (){
brunnobbco 61:65744bc8ab55 670 gps_DSEL = 0;
brunnobbco 61:65744bc8ab55 671 //spi gps configuration
brunnobbco 61:65744bc8ab55 672 spi_2.format(8,0);
brunnobbco 61:65744bc8ab55 673 spi_2.frequency(1000000); //1MHz
brunnobbco 61:65744bc8ab55 674 cs=1;
brunnobbco 61:65744bc8ab55 675 wait(0.1);
brunnobbco 61:65744bc8ab55 676 cs=0;
brunnobbco 61:65744bc8ab55 677 wait(0.1);
brunnobbco 61:65744bc8ab55 678
brunnobbco 61:65744bc8ab55 679 gps_int = 0;
brunnobbco 61:65744bc8ab55 680
brunnobbco 61:65744bc8ab55 681 //gps reset
brunnobbco 61:65744bc8ab55 682 gps_reset = 1;
brunnobbco 61:65744bc8ab55 683 wait_ms(50);
brunnobbco 61:65744bc8ab55 684 //gps_reset = 0;
brunnobbco 61:65744bc8ab55 685 //wait(1.5);
brunnobbco 61:65744bc8ab55 686 }
brunnobbco 61:65744bc8ab55 687