LinkNode_LIS3DH_test

Dependencies:   mbed

Fork of LinkNode_LIS3DH by Delong Qi

Committer:
helloqi
Date:
Wed Apr 13 12:34:56 2016 +0000
Revision:
11:c16a53584668
Parent:
4:81cea7a352b0
LinkNode_LIS3DH

Who changed what in which revision?

UserRevisionLine numberNew contents of line
helloqi 11:c16a53584668 1 #include<mbed.h>
helloqi 11:c16a53584668 2
helloqi 11:c16a53584668 3 uint16_t x_a,y_a,z_a;
helloqi 11:c16a53584668 4 bool flag = 0;
helloqi 11:c16a53584668 5
helloqi 11:c16a53584668 6 SPI spi_master(P0_6,P0_5,P0_7); //mosi miso sclk
helloqi 11:c16a53584668 7 DigitalOut cs(P0_4);
helloqi 11:c16a53584668 8
helloqi 11:c16a53584668 9 //Serial pc(P0_23,P0_25);
helloqi 11:c16a53584668 10
helloqi 11:c16a53584668 11 Serial pc(P0_9,P0_11);
dan 0:7dec7e9ac085 12
helloqi 11:c16a53584668 13 uint8_t LIS3DH_SPI_RD(uint8_t addr)
helloqi 11:c16a53584668 14 {
helloqi 11:c16a53584668 15 uint8_t temp;
helloqi 11:c16a53584668 16 cs = 0;
helloqi 11:c16a53584668 17 wait_us(10);
helloqi 11:c16a53584668 18 spi_master.write(addr);
helloqi 11:c16a53584668 19 temp=spi_master.write(0xff);
helloqi 11:c16a53584668 20 wait_us(10);
helloqi 11:c16a53584668 21 cs = 1;
helloqi 11:c16a53584668 22 return temp;
helloqi 11:c16a53584668 23 }
helloqi 11:c16a53584668 24
helloqi 11:c16a53584668 25 void LIS3DH_SPI_WR(uint8_t addr,uint8_t wrdata)
helloqi 11:c16a53584668 26 {
helloqi 11:c16a53584668 27 cs = 0;
helloqi 11:c16a53584668 28 wait_us(10);
helloqi 11:c16a53584668 29 spi_master.write(addr);
helloqi 11:c16a53584668 30 spi_master.write(wrdata);
helloqi 11:c16a53584668 31 wait_us(10);
helloqi 11:c16a53584668 32 cs = 1;
helloqi 11:c16a53584668 33 }
dan 0:7dec7e9ac085 34
helloqi 11:c16a53584668 35 void SPI_LIS3DH_Init()
helloqi 11:c16a53584668 36 {
helloqi 11:c16a53584668 37 spi_master.format(8,3);
helloqi 11:c16a53584668 38 spi_master.frequency(100000);
helloqi 11:c16a53584668 39 wait_ms(5);
helloqi 11:c16a53584668 40 LIS3DH_SPI_WR(0x24,0x80);
helloqi 11:c16a53584668 41 wait_ms(5);
helloqi 11:c16a53584668 42 LIS3DH_SPI_WR(0x20,0x17);
helloqi 11:c16a53584668 43 LIS3DH_SPI_WR(0x23,0x80);
helloqi 11:c16a53584668 44 }
helloqi 11:c16a53584668 45
helloqi 11:c16a53584668 46 void get_val(void)
helloqi 11:c16a53584668 47 {
helloqi 11:c16a53584668 48 uint8_t Dx_L=1,Dy_L=1,Dz_L=1;
helloqi 11:c16a53584668 49 uint8_t Dx_H=1,Dy_H=1,Dz_H=1;
helloqi 11:c16a53584668 50 if(LIS3DH_SPI_RD(0x0f|0x80)==0x33)
helloqi 11:c16a53584668 51 {
helloqi 11:c16a53584668 52 printf("check device ok!\r\n");
helloqi 11:c16a53584668 53 flag=1;
helloqi 11:c16a53584668 54 Dx_H=LIS3DH_SPI_RD(0x29|0x80);
helloqi 11:c16a53584668 55 Dx_L=LIS3DH_SPI_RD(0x28|0x80);
helloqi 11:c16a53584668 56 Dy_H=LIS3DH_SPI_RD(0x2b|0x80);
helloqi 11:c16a53584668 57 Dy_L=LIS3DH_SPI_RD(0x2A|0x80);
helloqi 11:c16a53584668 58 Dz_H=LIS3DH_SPI_RD(0x2d|0x80);
helloqi 11:c16a53584668 59 Dz_L=LIS3DH_SPI_RD(0x2C|0x80);
stevep 4:81cea7a352b0 60 }
helloqi 11:c16a53584668 61 else
helloqi 11:c16a53584668 62 {
helloqi 11:c16a53584668 63 printf("check device err!\r\n");
helloqi 11:c16a53584668 64 wait(1);
helloqi 11:c16a53584668 65 }
helloqi 11:c16a53584668 66 x_a=Dx_H<<8|Dx_L/16;
helloqi 11:c16a53584668 67 y_a=Dy_H<<8|Dy_L/16;
helloqi 11:c16a53584668 68 z_a=Dz_H<<8|Dz_L/16;
dan 0:7dec7e9ac085 69 }
helloqi 11:c16a53584668 70
helloqi 11:c16a53584668 71 int main(void)
helloqi 11:c16a53584668 72 {
helloqi 11:c16a53584668 73 SPI_LIS3DH_Init();
helloqi 11:c16a53584668 74 while(1)
helloqi 11:c16a53584668 75 {
helloqi 11:c16a53584668 76 get_val();
helloqi 11:c16a53584668 77 if(flag)
helloqi 11:c16a53584668 78 {
helloqi 11:c16a53584668 79 printf("Dx=:%d\r\n",x_a);
helloqi 11:c16a53584668 80 printf("Dy=:%d\r\n",y_a);
helloqi 11:c16a53584668 81 printf("Dz=:%d\r\n",z_a);
helloqi 11:c16a53584668 82 flag=0;
helloqi 11:c16a53584668 83 wait(1);
helloqi 11:c16a53584668 84 }
helloqi 11:c16a53584668 85 }
helloqi 11:c16a53584668 86 }