MPL3115A2
Fork of SPI_HelloWorld_Mbed by
Mit dem XTRINSIC-SENSE Board von element14 wird der Sensor MPL3115 ausgelesen.
mbed | XTRINSIC-SENSE Board |
---|---|
VOUT 3.3v | CN2->3.3v (1) |
GND | CN2->SCL (3) |
pin9 sda | CN3->SDA (3) |
pin10 scl | CN3->SCL (5) |
Datenblatt Board: /media/uploads/ODEM/xtrinsic-sense_user_manual_v0_5.pdf
Datenblatt Sensor: /media/uploads/ODEM/mpl3115a2.pdf
main.cpp@2:29e536aabd5b, 2017-06-14 (annotated)
- Committer:
- ODEM
- Date:
- Wed Jun 14 13:49:06 2017 +0000
- Revision:
- 2:29e536aabd5b
- Parent:
- 1:a5921d978d61
- Child:
- 3:3da5bf0df3ab
v1.0 I2c not working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ODEM | 2:29e536aabd5b | 1 | // Read from I2C slave at address 0x62 |
ODEM | 2:29e536aabd5b | 2 | |
mbed_official | 0:466ad3f38b6b | 3 | #include "mbed.h" |
ODEM | 2:29e536aabd5b | 4 | |
ODEM | 2:29e536aabd5b | 5 | I2C i2c(p9, p10); |
ODEM | 2:29e536aabd5b | 6 | int SlaveAddress = 0xc0; |
ODEM | 2:29e536aabd5b | 7 | //set to Altimeter |
ODEM | 2:29e536aabd5b | 8 | int SetA1 = 0x26; |
ODEM | 2:29e536aabd5b | 9 | int SetA2 = 0xB8; |
ODEM | 2:29e536aabd5b | 10 | //enable data flag |
ODEM | 2:29e536aabd5b | 11 | int flag1 = 0x13; |
ODEM | 2:29e536aabd5b | 12 | int flag2 = 0x07; |
ODEM | 2:29e536aabd5b | 13 | //Set Active |
ODEM | 2:29e536aabd5b | 14 | int active1 = 0x26; |
ODEM | 2:29e536aabd5b | 15 | int active2 = 0xB9; |
ODEM | 2:29e536aabd5b | 16 | //read status register |
ODEM | 2:29e536aabd5b | 17 | int status1 = 0x00; |
ODEM | 2:29e536aabd5b | 18 | |
ODEM | 2:29e536aabd5b | 19 | |
ODEM | 2:29e536aabd5b | 20 | // |
ODEM | 2:29e536aabd5b | 21 | int OUT_P_MSB=0; |
ODEM | 2:29e536aabd5b | 22 | char data_OUT_P_MSB[1]; |
ODEM | 2:29e536aabd5b | 23 | char STA; |
ODEM | 2:29e536aabd5b | 24 | |
ODEM | 2:29e536aabd5b | 25 | |
ODEM | 2:29e536aabd5b | 26 | |
ODEM | 2:29e536aabd5b | 27 | /******************************main**********************************/ |
ODEM | 2:29e536aabd5b | 28 | int main() |
ODEM | 2:29e536aabd5b | 29 | { |
ODEM | 2:29e536aabd5b | 30 | char data_OUT_P_MSB[1]; |
ODEM | 2:29e536aabd5b | 31 | data_OUT_P_MSB[0] = 0x01; |
ODEM | 2:29e536aabd5b | 32 | |
ODEM | 2:29e536aabd5b | 33 | //cmd = 0x60; |
ODEM | 2:29e536aabd5b | 34 | |
ODEM | 2:29e536aabd5b | 35 | char data[2]; |
ODEM | 2:29e536aabd5b | 36 | data[0]=SetA1; |
ODEM | 2:29e536aabd5b | 37 | data[1]=SetA2; |
ODEM | 2:29e536aabd5b | 38 | |
ODEM | 2:29e536aabd5b | 39 | char flags[2]; |
ODEM | 2:29e536aabd5b | 40 | flags[0]=flag1; |
ODEM | 2:29e536aabd5b | 41 | flags[1]=flag2; |
ODEM | 2:29e536aabd5b | 42 | |
ODEM | 2:29e536aabd5b | 43 | char active[2]; |
ODEM | 2:29e536aabd5b | 44 | active[0]=active1; |
ODEM | 2:29e536aabd5b | 45 | active[1]=active2; |
mbed_official | 0:466ad3f38b6b | 46 | |
ODEM | 2:29e536aabd5b | 47 | char status [1]; |
ODEM | 2:29e536aabd5b | 48 | status[0]=status1; |
ODEM | 2:29e536aabd5b | 49 | char cmd[2]; |
ODEM | 2:29e536aabd5b | 50 | const int addr = 0xc1; |
ODEM | 2:29e536aabd5b | 51 | |
ODEM | 2:29e536aabd5b | 52 | // wait(0.1); |
ODEM | 2:29e536aabd5b | 53 | //WRITE |
ODEM | 2:29e536aabd5b | 54 | //set to Altimeter |
ODEM | 2:29e536aabd5b | 55 | i2c.write(SlaveAddress, data, 2); |
ODEM | 2:29e536aabd5b | 56 | //enable data flag |
ODEM | 2:29e536aabd5b | 57 | i2c.write(SlaveAddress, flags, 2); |
ODEM | 2:29e536aabd5b | 58 | //Set Active |
ODEM | 2:29e536aabd5b | 59 | i2c.write(SlaveAddress, active, 2); |
ODEM | 2:29e536aabd5b | 60 | |
ODEM | 2:29e536aabd5b | 61 | while(1) { |
ODEM | 2:29e536aabd5b | 62 | |
ODEM | 2:29e536aabd5b | 63 | /*//READ |
ODEM | 2:29e536aabd5b | 64 | //read status register |
ODEM | 2:29e536aabd5b | 65 | STA=i2c.read(SlaveAddress, status, 2,false); |
ODEM | 2:29e536aabd5b | 66 | |
ODEM | 2:29e536aabd5b | 67 | |
ODEM | 2:29e536aabd5b | 68 | if (STA&&0x08==1) { |
ODEM | 2:29e536aabd5b | 69 | OUT_P_MSB=i2c.read(SlaveAddress, data_OUT_P_MSB, 1); |
ODEM | 2:29e536aabd5b | 70 | } |
ODEM | 2:29e536aabd5b | 71 | |
ODEM | 2:29e536aabd5b | 72 | |
ODEM | 2:29e536aabd5b | 73 | printf("data= %04X\n", OUT_P_MSB); |
ODEM | 2:29e536aabd5b | 74 | printf("data= %d\n", STA);*/ |
ODEM | 2:29e536aabd5b | 75 | |
ODEM | 2:29e536aabd5b | 76 | cmd[0] = 0x01; |
ODEM | 2:29e536aabd5b | 77 | cmd[1] = 0x00; |
ODEM | 2:29e536aabd5b | 78 | i2c.write(addr, cmd, 2); |
mbed_official | 0:466ad3f38b6b | 79 | |
ODEM | 2:29e536aabd5b | 80 | wait(0.5); |
ODEM | 2:29e536aabd5b | 81 | cmd[0] = 0x00; |
ODEM | 2:29e536aabd5b | 82 | i2c.write(addr, cmd, 1); |
ODEM | 2:29e536aabd5b | 83 | i2c.read(addr, cmd, 2); |
ODEM | 2:29e536aabd5b | 84 | printf("Temp = %d\n", cmd); |
ODEM | 2:29e536aabd5b | 85 | float tmp = (float((cmd[0]<<8)|cmd[1]) / 256.0); |
ODEM | 2:29e536aabd5b | 86 | printf("Temp = %.2f\n", tmp); |
ODEM | 2:29e536aabd5b | 87 | } |
ODEM | 2:29e536aabd5b | 88 | } |
ODEM | 2:29e536aabd5b | 89 | |
ODEM | 2:29e536aabd5b | 90 | |
ODEM | 2:29e536aabd5b | 91 |