base program for tilt measurement

Dependencies:   COG4050_ADT7420

Fork of COG4050_adxl355_adxl357 by ADI_CAC

Committer:
vtoffoli
Date:
Tue Aug 07 07:20:36 2018 +0000
Revision:
1:d3aeaa02781d
Parent:
0:74a0756399ff
Child:
2:14dc1ec57f3b
COG4050+ADXL362

Who changed what in which revision?

UserRevisionLine numberNew contents of line
APS_Lab 0:74a0756399ff 1 #include "mbed.h"
APS_Lab 0:74a0756399ff 2
vtoffoli 1:d3aeaa02781d 3 const static uint8_t _WRITE_REG_CMD = 0x0A; // write register
vtoffoli 1:d3aeaa02781d 4 const static uint8_t _READ_REG_CMD = 0x0B; // read register
vtoffoli 1:d3aeaa02781d 5 const static uint8_t _DUMMY_BYTE = 0xAA;
APS_Lab 0:74a0756399ff 6
APS_Lab 0:74a0756399ff 7
vtoffoli 1:d3aeaa02781d 8 SPI adxl362(SPI1_MOSI, SPI1_MISO, SPI1_SCLK);
vtoffoli 1:d3aeaa02781d 9 DigitalOut CS(SPI1_CS3);
APS_Lab 0:74a0756399ff 10
vtoffoli 1:d3aeaa02781d 11 void adxl362_reset(void);
vtoffoli 1:d3aeaa02781d 12 int adxl362_GetID(void);
vtoffoli 1:d3aeaa02781d 13 void adxl362_write_reg(uint8_t reg, uint8_t data);
vtoffoli 1:d3aeaa02781d 14 uint8_t adxl362_read_reg(uint8_t reg);
APS_Lab 0:74a0756399ff 15
APS_Lab 0:74a0756399ff 16 Serial pc(USBTX, USBRX);
APS_Lab 0:74a0756399ff 17
APS_Lab 0:74a0756399ff 18 int main() {
vtoffoli 1:d3aeaa02781d 19 pc.baud(9600);
vtoffoli 1:d3aeaa02781d 20 pc.printf("SPI ADXL362 Demo\n");
vtoffoli 1:d3aeaa02781d 21 CS = 1;
vtoffoli 1:d3aeaa02781d 22 adxl362.lock();
APS_Lab 0:74a0756399ff 23
vtoffoli 1:d3aeaa02781d 24 //adxl362_reset();
vtoffoli 1:d3aeaa02781d 25 wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
vtoffoli 1:d3aeaa02781d 26 //adxl362.set_mode(ADXL362::MEASUREMENT);
vtoffoli 1:d3aeaa02781d 27 uint8_t x,y,z;
vtoffoli 1:d3aeaa02781d 28 while(1) {
vtoffoli 1:d3aeaa02781d 29 x=adxl362_GetID();
vtoffoli 1:d3aeaa02781d 30 //y=adxl362.scany_u8();
vtoffoli 1:d3aeaa02781d 31 //z=adxl362.scanz_u8();
vtoffoli 1:d3aeaa02781d 32 //printf("x = %x y = %x z = %x\r\n",x,y,z);
vtoffoli 1:d3aeaa02781d 33 printf("id = %x \r\n",x);
vtoffoli 1:d3aeaa02781d 34 wait_ms(10);
APS_Lab 0:74a0756399ff 35 }
APS_Lab 0:74a0756399ff 36 }
APS_Lab 0:74a0756399ff 37
vtoffoli 1:d3aeaa02781d 38 void adxl362_reset(void)
vtoffoli 1:d3aeaa02781d 39 { // format
vtoffoli 1:d3aeaa02781d 40 adxl362.format(8,0);
vtoffoli 1:d3aeaa02781d 41 adxl362.frequency(5e6);
APS_Lab 0:74a0756399ff 42
vtoffoli 1:d3aeaa02781d 43 adxl362_write_reg(0x1F, 0x52);
APS_Lab 0:74a0756399ff 44 }
vtoffoli 1:d3aeaa02781d 45
vtoffoli 1:d3aeaa02781d 46 void adxl362_write_reg(uint8_t reg, uint8_t data)
vtoffoli 1:d3aeaa02781d 47 {
vtoffoli 1:d3aeaa02781d 48 adxl362.format(8, 0);
vtoffoli 1:d3aeaa02781d 49 CS = 0;
vtoffoli 1:d3aeaa02781d 50 adxl362.write(_WRITE_REG_CMD);
vtoffoli 1:d3aeaa02781d 51 adxl362.write(static_cast<uint8_t>(reg));
vtoffoli 1:d3aeaa02781d 52 adxl362.write(static_cast<uint8_t>(data));
vtoffoli 1:d3aeaa02781d 53 CS = 1;
vtoffoli 1:d3aeaa02781d 54 }
APS_Lab 0:74a0756399ff 55
vtoffoli 1:d3aeaa02781d 56 uint8_t adxl362_read_reg(uint8_t reg)
APS_Lab 0:74a0756399ff 57 {
vtoffoli 1:d3aeaa02781d 58 uint8_t ret_val;
vtoffoli 1:d3aeaa02781d 59 CS = 0;
vtoffoli 1:d3aeaa02781d 60 adxl362.format(8, 0);
vtoffoli 1:d3aeaa02781d 61 adxl362.write(_READ_REG_CMD);
vtoffoli 1:d3aeaa02781d 62 adxl362.write(reg);
vtoffoli 1:d3aeaa02781d 63 ret_val = adxl362.write(_DUMMY_BYTE);
vtoffoli 1:d3aeaa02781d 64 CS = 1;
vtoffoli 1:d3aeaa02781d 65 return ret_val;
vtoffoli 1:d3aeaa02781d 66 }
vtoffoli 1:d3aeaa02781d 67 int adxl362_GetID(void)
vtoffoli 1:d3aeaa02781d 68 {
vtoffoli 1:d3aeaa02781d 69 uint8_t ret_val;
vtoffoli 1:d3aeaa02781d 70 ret_val = adxl362_read_reg(0x00);
vtoffoli 1:d3aeaa02781d 71 return ret_val;
vtoffoli 1:d3aeaa02781d 72 }