![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
LinkNode_LIS3DH
Fork of mbed_blinky by
main.cpp@11:c16a53584668, 2016-04-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |