Fixed algorithm to read 3 bytes of accelerometer data registers
Fork of COG4050_adxl355_adxl357 by
main.cpp@1:d3aeaa02781d, 2018-08-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |