Spi protokol za senzor bmp280

Committer:
robert_musulin
Date:
Mon Jan 18 20:30:07 2021 +0000
Revision:
0:37ca398d1b7f
qq

Who changed what in which revision?

UserRevisionLine numberNew contents of line
robert_musulin 0:37ca398d1b7f 1
robert_musulin 0:37ca398d1b7f 2
robert_musulin 0:37ca398d1b7f 3 #include "mbed.h"
robert_musulin 0:37ca398d1b7f 4 #include "SPI_MJERENJE.h"
robert_musulin 0:37ca398d1b7f 5
robert_musulin 0:37ca398d1b7f 6 SPI_mjeri::SPI_mjeri(PinName MOSI, PinName MISO, PinName SCL, PinName SS) // definiranje konstruktora
robert_musulin 0:37ca398d1b7f 7 :
robert_musulin 0:37ca398d1b7f 8 spi(MOSI, MISO, SCL),
robert_musulin 0:37ca398d1b7f 9 ss(SS)
robert_musulin 0:37ca398d1b7f 10
robert_musulin 0:37ca398d1b7f 11
robert_musulin 0:37ca398d1b7f 12 { inicijalizacija(); // opoziv funkcije za inicijaliziranje
robert_musulin 0:37ca398d1b7f 13 }
robert_musulin 0:37ca398d1b7f 14
robert_musulin 0:37ca398d1b7f 15 void SPI_mjeri::inicijalizacija() // konstruktor za inicijalizaciju
robert_musulin 0:37ca398d1b7f 16 {
robert_musulin 0:37ca398d1b7f 17
robert_musulin 0:37ca398d1b7f 18 spi.format(8, 0); // 8-bitni podatak, mod 0
robert_musulin 0:37ca398d1b7f 19
robert_musulin 0:37ca398d1b7f 20 spi.frequency(100000); // 100 khhz frekvencija rada
robert_musulin 0:37ca398d1b7f 21 ss=0;
robert_musulin 0:37ca398d1b7f 22 spi.write(0xF5); // Registar „config“ postavlja brzinu, filtar i opcije sučelja uređaja.
robert_musulin 0:37ca398d1b7f 23 spi.write(0b11000000); // Standby 2000ms, bez filtra, 4-zicni SPI sučelje
robert_musulin 0:37ca398d1b7f 24 spi.write(0xF4); //Registar „ctrl_meas“ postavlja mogućnosti prikupljanja podataka uređaja
robert_musulin 0:37ca398d1b7f 25 spi.write(0b01100011); // Temparature oversampling x4, Normal mode
robert_musulin 0:37ca398d1b7f 26 spi.write(0xF3); //Registar „status“ postavlja bitove za indikaciju
robert_musulin 0:37ca398d1b7f 27 spi.write(0b0);
robert_musulin 0:37ca398d1b7f 28 ss = 1;
robert_musulin 0:37ca398d1b7f 29
robert_musulin 0:37ca398d1b7f 30 }
robert_musulin 0:37ca398d1b7f 31
robert_musulin 0:37ca398d1b7f 32 float SPI_mjeri::izmjeri() //funkcija sa kompenzacijskom formulom iz datasheeta sa stranice 22
robert_musulin 0:37ca398d1b7f 33 {
robert_musulin 0:37ca398d1b7f 34
robert_musulin 0:37ca398d1b7f 35 int32_t temp_raw, var1, var2, temp,t_fine;
robert_musulin 0:37ca398d1b7f 36 float tempf;
robert_musulin 0:37ca398d1b7f 37 char dat[3];
robert_musulin 0:37ca398d1b7f 38 char reg[6];
robert_musulin 0:37ca398d1b7f 39
robert_musulin 0:37ca398d1b7f 40 ss = 0;
robert_musulin 0:37ca398d1b7f 41 spi.write(0x88); // citanje dig_T registara temperetare 0x88 je adresa LSBa
robert_musulin 0:37ca398d1b7f 42 for(int i = 0; i < 6; i++)
robert_musulin 0:37ca398d1b7f 43 reg[i] = spi.write(0); // slanje dummy podataka
robert_musulin 0:37ca398d1b7f 44 ss = 1;
robert_musulin 0:37ca398d1b7f 45
robert_musulin 0:37ca398d1b7f 46
robert_musulin 0:37ca398d1b7f 47 dig_T1 = (reg[1] << 8) | reg[0]; //zapisivanje 8 bitnog podatka u 16 bitova
robert_musulin 0:37ca398d1b7f 48 dig_T2 = (reg[3] << 8) | reg[2];
robert_musulin 0:37ca398d1b7f 49 dig_T3 = (reg[5] << 8) | reg[4];
robert_musulin 0:37ca398d1b7f 50
robert_musulin 0:37ca398d1b7f 51
robert_musulin 0:37ca398d1b7f 52
robert_musulin 0:37ca398d1b7f 53 ss = 0;
robert_musulin 0:37ca398d1b7f 54 spi.write(0xFA); // adresa registra MSB raw dijela podatka
robert_musulin 0:37ca398d1b7f 55 for(int i = 0; i < 3; i++)
robert_musulin 0:37ca398d1b7f 56 dat[i] = spi.write(0);
robert_musulin 0:37ca398d1b7f 57 ss = 1;
robert_musulin 0:37ca398d1b7f 58 temp_raw = (dat[0] << 12) | (dat[1] << 4) | (dat[2] >> 4);
robert_musulin 0:37ca398d1b7f 59 var1 = ((((temp_raw >> 3) - (dig_T1 << 1))) * dig_T2) >> 11;
robert_musulin 0:37ca398d1b7f 60 var2 = (((((temp_raw >> 4) - dig_T1) * ((temp_raw >> 4) - dig_T1)) >> 12) * dig_T3) >> 14;
robert_musulin 0:37ca398d1b7f 61 t_fine = var1 + var2;
robert_musulin 0:37ca398d1b7f 62 temp = (t_fine * 5 + 128) >> 8;
robert_musulin 0:37ca398d1b7f 63 tempf = (float)temp;
robert_musulin 0:37ca398d1b7f 64 return (tempf/100.0f);
robert_musulin 0:37ca398d1b7f 65 }
robert_musulin 0:37ca398d1b7f 66
robert_musulin 0:37ca398d1b7f 67
robert_musulin 0:37ca398d1b7f 68
robert_musulin 0:37ca398d1b7f 69