36 .tempc_sf_degc = (0.0),
37 .tempc_25c_offset = (0),
43 .delay_reset_ms = (800),
45 .delay_flashbackup_ms = (200),
47 .delay_filter_ms = (1),
53 .product_id =
"G320PDG0",
56 .accl_sf_mg = (1.0 / 5),
58 .tempc_25c_offset = (2364),
62 .dlta0_sf_deg = (1.0 / 125 * 1 / 2000),
63 .
dltv0_sf_mps = (1.0 / 5 * 1 / 1000 * 1 / 2000 * 9.80665),
64 .delay_reset_ms = (800),
66 .delay_flashbackup_ms = (200),
68 .delay_filter_ms = (1),
74 .product_id =
"G320PDGN",
77 .accl_sf_mg = (1.0 / 5),
79 .tempc_25c_offset = (2364),
83 .dlta0_sf_deg = (1.0 / 125 * 1 / 2000),
84 .
dltv0_sf_mps = (1.0 / 5 * 1 / 1000 * 1 / 2000 * 9.80665),
85 .delay_reset_ms = (800),
87 .delay_flashbackup_ms = (200),
89 .delay_filter_ms = (1),
95 .product_id =
"G354PDH0",
98 .accl_sf_mg = (1.0 / 5),
100 .tempc_25c_offset = (2364),
104 .dlta0_sf_deg = (1.0 / 62.5 * 1 / 2000),
105 .
dltv0_sf_mps = (1.0 / 5 * 1 / 1000 * 1 / 2000 * 9.80665),
106 .delay_reset_ms = (800),
108 .delay_flashbackup_ms = (200),
110 .delay_filter_ms = (1),
116 .product_id =
"G364PDCA",
119 .accl_sf_mg = (1.0 / 8),
121 .tempc_25c_offset = (2364),
125 .dlta0_sf_deg = (0.00375 * 1 / 2000),
126 .
dltv0_sf_mps = (1.0 / 8 * 1 / 1000 * 1 / 2000 * 9.80665),
127 .delay_reset_ms = (800),
129 .delay_flashbackup_ms = (200),
131 .delay_filter_ms = (1),
137 .product_id =
"G364PDC0",
140 .accl_sf_mg = (1.0 / 8),
142 .tempc_25c_offset = (2364),
146 .dlta0_sf_deg = (0.00750 * 1 / 2000),
147 .
dltv0_sf_mps = (1.0 / 8 * 1 / 1000 * 1 / 2000 * 9.80665),
148 .delay_reset_ms = (800),
150 .delay_flashbackup_ms = (200),
152 .delay_filter_ms = (1),
158 .product_id =
"G365PDC1",
162 .accl_sf_mg = (1.0 / 6.25),
163 .tempc_sf_degc = (-0.0037918),
164 .tempc_25c_offset = (2364),
166 .ang_sf_deg = (0.00699411),
167 .qtn_sf = (1.0 / (2 << 13)),
168 .dlta0_sf_deg = (1.0 / 66 * 1 / 2000),
169 .
dltv0_sf_mps = (1.0 / 6.25 * 1 / 1000 * 1 / 2000 * 9.80665),
170 .delay_reset_ms = (800),
172 .delay_flashbackup_ms = (200),
174 .delay_filter_ms = (1),
180 .product_id =
"G365PDF1",
184 .accl_sf_mg = (1.0 / 2.5),
185 .tempc_sf_degc = (-0.0037918),
186 .tempc_25c_offset = (2364),
188 .ang_sf_deg = (0.00699411),
189 .qtn_sf = (1.0 / (2 << 13)),
190 .dlta0_sf_deg = (1.0 / 66 * 1 / 2000),
191 .
dltv0_sf_mps = (1.0 / 2.5 * 1 / 1000 * 1 / 2000 * 9.80665),
192 .delay_reset_ms = (800),
194 .delay_flashbackup_ms = (200),
196 .delay_filter_ms = (1),
202 .product_id =
"G370PDF1",
207 .accl_sf_mg = (1.0 / 2.5),
208 .tempc_sf_degc = (-0.0037918),
209 .tempc_25c_offset = (2364),
213 .dlta0_sf_deg = (1.0 / 66 * 1 / 1000),
214 .
dltv0_sf_mps = (1.0 / 2.5 * 1 / 1000 * 1 / 1000 * 9.80665),
215 .delay_reset_ms = (800),
217 .delay_flashbackup_ms = (200),
219 .delay_filter_ms = (1),
225 .product_id =
"G370PDFN",
230 .accl_sf_mg = (1.0 / 2.5),
231 .tempc_sf_degc = (-0.0037918),
232 .tempc_25c_offset = (2364),
236 .dlta0_sf_deg = (1.0 / 66 * 1 / 1000),
237 .
dltv0_sf_mps = (1.0 / 2.5 * 1 / 1000 * 1 / 1000 * 9.80665),
238 .delay_reset_ms = (800),
240 .delay_flashbackup_ms = (200),
242 .delay_filter_ms = (1),
248 .product_id =
"G370PDS0",
253 .accl_sf_mg = (1.0 / 2.5),
254 .tempc_sf_degc = (-0.0037918),
255 .tempc_25c_offset = (2364),
259 .dlta0_sf_deg = (1.0 / 150 * 1 / 1000),
260 .
dltv0_sf_mps = (1.0 / 2.5 * 1 / 1000 * 1 / 1000 * 9.80665),
261 .delay_reset_ms = (800),
263 .delay_flashbackup_ms = (200),
265 .delay_filter_ms = (1),
271 .product_id =
"G330PDG0",
276 .accl_sf_mg = (1.0 / 4),
278 .tempc_25c_offset = (0),
280 .ang_sf_deg = (0.00699411),
281 .qtn_sf = (1.0 / (2 << 13)),
282 .dlta0_sf_deg = (1.0 / 66 * 1 / 2000),
283 .
dltv0_sf_mps = (1.0 / 4 * 1 / 1000 * 1 / 2000 * 9.80665),
284 .delay_reset_ms = (800),
286 .delay_flashbackup_ms = (200),
288 .delay_filter_ms = (1),
294 .product_id =
"G366PDG0",
299 .accl_sf_mg = (1.0 / 4),
301 .tempc_25c_offset = (0),
303 .ang_sf_deg = (0.00699411),
304 .qtn_sf = (1.0 / (2 << 13)),
305 .dlta0_sf_deg = (1.0 / 66 * 1 / 2000),
306 .
dltv0_sf_mps = (1.0 / 4 * 1 / 1000 * 1 / 2000 * 9.80665),
307 .delay_reset_ms = (800),
309 .delay_flashbackup_ms = (200),
311 .delay_filter_ms = (1),
317 .product_id =
"G370PDG0",
322 .accl_sf_mg = (1.0 / 4),
324 .tempc_25c_offset = (0),
328 .dlta0_sf_deg = (1.0 / 66 * 1 / 2000),
329 .
dltv0_sf_mps = (1.0 / 4 * 1 / 1000 * 1 / 2000 * 9.80665),
330 .delay_reset_ms = (800),
332 .delay_flashbackup_ms = (200),
334 .delay_filter_ms = (1),
340 .product_id =
"G370PDT0",
345 .accl_sf_mg = (1.0 / 4),
347 .tempc_25c_offset = (0),
351 .dlta0_sf_deg = (1.0 / 66 * 1 / 2000),
352 .
dltv0_sf_mps = (1.0 / 4 * 1 / 1000 * 1 / 2000 * 9.80665),
353 .delay_reset_ms = (800),
355 .delay_flashbackup_ms = (200),
357 .delay_filter_ms = (1),
363 .product_id =
"G570PR20",
366 .accl_sf_mg = (1.0 / 2),
368 .tempc_25c_offset = (0),
374 .delay_reset_ms = (5000),
376 .delay_flashbackup_ms = (200),
378 .delay_filter_ms = (0),
384 .product_id =
"G_UNKNOWN",
388 .tempc_sf_degc = (0.0),
389 .tempc_25c_offset = (0),
395 .delay_reset_ms = (800),
397 .delay_flashbackup_ms = (200),
399 .delay_filter_ms = (1),
414 unsigned int debug = FALSE;
415 unsigned short rxData;
416 unsigned short retryCount = 3;
429 }
while ((rxData &
BIT10) && (retryCount > 0));
431 if (retryCount == 0) {
432 printf(
"\r\n...Error: NOT_READY stuck HIGH.");
446 unsigned short rxData = 0xFFFF;
447 const unsigned short ID_VAL = 0x5345;
448 unsigned int debug = FALSE;
449 unsigned short retryCount = 10;
456 }
while ((rxData &
BIT10) == 0 && (retryCount > 0));
458 if (retryCount == 0) {
459 printf(
"\r\n...Error: Stuck in Sampling Mode.");
460 printf(
"\r\n...Attempting Hardware Reset if connected.");
467 if (rxData != ID_VAL) {
468 printf(
"\r\n...Error: Unexpected ID return value - 0x%04X", rxData);
469 printf(
"\r\n...Attempting Hardware Reset if connected.");
477 if (rxData != 0x0000) {
478 printf(
"\r\n...Error: DIAG_STAT return value - 0x%04X", rxData);
491 unsigned int debug = FALSE;
494 printf(
"\r\n...Sensor start.");
505 unsigned int debug = FALSE;
512 #endif // #ifndef SPI
513 printf(
"\r\n...Sensor stop.");
523 unsigned int debug = FALSE;
524 unsigned char SOFT_RST_BIT = 0x80;
526 printf(
"\r\n...Software Reset begin.");
529 printf(
"\r\n...Software Reset complete.");
540 unsigned int debug = FALSE;
541 unsigned short rxData;
542 unsigned short retryCount = 3000;
543 unsigned char FLASH_TEST_BIT = 0x08;
545 printf(
"\r\n...Flash test begin.");
551 }
while ((rxData &
BIT11) && (retryCount > 0));
552 if (retryCount == 0) {
553 printf(
"\r\n...Error: Flashtest bit did not return to 0b.");
558 printf(
"\r\n...Flash test complete.");
560 if ((rxData &
BIT2) != 0x0000)
return NG;
571 unsigned int debug = FALSE;
572 unsigned short rxData;
573 unsigned short retryCount = 3000;
574 unsigned char SELF_TEST_BIT = 0x04;
576 printf(
"\r\n...Self test begin.");
582 }
while ((rxData &
BIT10) && (retryCount > 0));
583 if (retryCount == 0) {
584 printf(
"\r\n...Error: Self test bit did not return to 0b.");
589 printf(
"\r\n...Self test complete.");
591 if ((rxData & 0x7800) != 0)
return NG;
609 unsigned int debug = FALSE;
610 unsigned short rxData;
611 unsigned short retryCount = 3000;
612 unsigned char INITIAL_BACKUP_BIT = 0x10;
614 printf(
"\r\n...InitialBackup begin.");
621 }
while ((rxData &
BIT4) && (retryCount > 0));
622 if (retryCount == 0) {
623 printf(
"\r\n...Error: InitialBackup bit did not return to 0b.");
627 printf(
"\r\n...Initial Backup complete.");
639 unsigned int debug = FALSE;
640 unsigned short rxData;
641 unsigned short retryCount = 3000;
642 unsigned char FLASH_BACKUP_BIT = 0x08;
644 printf(
"\r\n...FlashBackup begin.");
651 }
while ((rxData &
BIT3) && (retryCount > 0));
652 if (retryCount == 0) {
653 printf(
"\r\n...Error: FlashBackup bit did not return to 0b.");
658 printf(
"\r\n...Flashback complete.");
660 if ((rxData &
BIT0) != 0)
return NG;
767 unsigned int debug = FALSE;
772 printf(
"...sensorDummyWrite...");
788 pcharArr[0] = (char)prod_id1;
789 pcharArr[1] = (char)(prod_id1 >> 8);
790 pcharArr[2] = (char)prod_id2;
791 pcharArr[3] = (char)(prod_id2 >> 8);
792 pcharArr[4] = (char)prod_id3;
793 pcharArr[5] = (char)(prod_id3 >> 8);
794 pcharArr[6] = (char)prod_id4;
795 pcharArr[7] = (char)(prod_id4 >> 8);
814 pcharArr[0] = (char)ser_num1;
815 pcharArr[1] = (char)(ser_num1 >> 8);
816 pcharArr[2] = (char)ser_num2;
817 pcharArr[3] = (char)(ser_num2 >> 8);
818 pcharArr[4] = (char)ser_num3;
819 pcharArr[5] = (char)(ser_num3 >> 8);
820 pcharArr[6] = (char)ser_num4;
821 pcharArr[7] = (char)(ser_num4 >> 8);
837 unsigned int debug = FALSE;
895 int smpl_ctrl_hi = (options->
dout_rate & 0x0F);
900 int filter_ctrl_lo = (options->
filter_sel & 0x1F);
909 int burst_ctrl1_hi = 0;
925 int burst_ctrl2_hi = 0;
965 int atti_ctrl_hi = 0;
966 int atti_ctrl_lo = 0;
968 atti_ctrl_hi |= (((options->
atti_out | options->
qtn_out) & 0x01) << 2 |
973 atti_ctrl_lo = (options->
atti_conv & 0x1f);
985 int glob_cmd2_lo = 0;
999 unsigned short rxData;
1000 unsigned short retryCount = 3000;
1004 }
while ((rxData &
BIT5) && (retryCount > 0));
1006 if (retryCount == 0) {
1007 printf(
"\r\n...Error: Filter busy bit did not return to 0b.");
1044 }
while ((rxData &
BIT6) && (retryCount > 0));
1046 if (retryCount == 0) {
1048 "\r\n...Error: ATTI_MOTION_PROFILE_STAT bit did not return to 0b.");
1062 unsigned int debug = TRUE;
1063 printf(
"\r\nRegister Dump:\r\n");
1196 printf(
"\r\nReading device model and serial number...");
1204 printf(
"\r\nERROR: Could not identify product id.");
1209 printf(
"\r\nPRODUCT ID:\t%s", prod_id);
1210 printf(
"\r\nSERIAL ID:\t%s", serial_id);