-
Dependents: VL53L0X_Continuous_Ranging_Example
Fork of vl53l0x_api by
vl53l0x_i2c_platform.cpp@1:a0dafcd9fd11, 2017-02-15 (annotated)
- Committer:
- dfulford6
- Date:
- Wed Feb 15 15:45:28 2017 +0000
- Revision:
- 1:a0dafcd9fd11
- Parent:
- 0:e6fcdb78a136
Updated to be used with LPC 1768
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mjarvisal | 0:e6fcdb78a136 | 1 | #include "mbed.h" |
mjarvisal | 0:e6fcdb78a136 | 2 | #include "vl53l0x_i2c_platform.h" |
mjarvisal | 0:e6fcdb78a136 | 3 | #include "vl53l0x_platform.h" |
mjarvisal | 0:e6fcdb78a136 | 4 | |
dfulford6 | 1:a0dafcd9fd11 | 5 | //I2C i2c(I2C_SDA, I2C_SCL); |
dfulford6 | 1:a0dafcd9fd11 | 6 | I2C i2c(p9, p10); // default SDA and SCL lines for LPC 1768 |
mjarvisal | 0:e6fcdb78a136 | 7 | |
mjarvisal | 0:e6fcdb78a136 | 8 | int VL53L0X_scan( void ) |
mjarvisal | 0:e6fcdb78a136 | 9 | { |
mjarvisal | 0:e6fcdb78a136 | 10 | int Status; |
mjarvisal | 0:e6fcdb78a136 | 11 | int i; |
mjarvisal | 0:e6fcdb78a136 | 12 | char cmd[2]; |
mjarvisal | 0:e6fcdb78a136 | 13 | cmd[0]=0x01; |
mjarvisal | 0:e6fcdb78a136 | 14 | cmd[1]=0x00; |
dfulford6 | 1:a0dafcd9fd11 | 15 | i2c.frequency(100000);//default i2c frequency |
mjarvisal | 0:e6fcdb78a136 | 16 | for (i = 0; i<0xFF; i++) |
mjarvisal | 0:e6fcdb78a136 | 17 | { |
mjarvisal | 0:e6fcdb78a136 | 18 | cmd[0]=i; |
mjarvisal | 0:e6fcdb78a136 | 19 | Status = i2c.write(i, cmd, 1); |
mjarvisal | 0:e6fcdb78a136 | 20 | if (Status == 0) |
mjarvisal | 0:e6fcdb78a136 | 21 | break; |
mjarvisal | 0:e6fcdb78a136 | 22 | } |
mjarvisal | 0:e6fcdb78a136 | 23 | return i; |
mjarvisal | 0:e6fcdb78a136 | 24 | } |
mjarvisal | 0:e6fcdb78a136 | 25 | |
mjarvisal | 0:e6fcdb78a136 | 26 | int32_t VL53L0X_write_multi(uint8_t address, uint8_t index, uint8_t *pdata, int32_t count) |
mjarvisal | 0:e6fcdb78a136 | 27 | { |
mjarvisal | 0:e6fcdb78a136 | 28 | int Status; |
mjarvisal | 0:e6fcdb78a136 | 29 | char data[count+1]; |
mjarvisal | 0:e6fcdb78a136 | 30 | data[0]=index; |
mjarvisal | 0:e6fcdb78a136 | 31 | for (int i = 1; i< count+1; i++) |
mjarvisal | 0:e6fcdb78a136 | 32 | { |
mjarvisal | 0:e6fcdb78a136 | 33 | data[i]=pdata[i-1]; |
mjarvisal | 0:e6fcdb78a136 | 34 | } |
mjarvisal | 0:e6fcdb78a136 | 35 | Status = i2c.write(address, data, count+1); |
mjarvisal | 0:e6fcdb78a136 | 36 | return Status; |
mjarvisal | 0:e6fcdb78a136 | 37 | } |
mjarvisal | 0:e6fcdb78a136 | 38 | |
mjarvisal | 0:e6fcdb78a136 | 39 | int32_t VL53L0X_read_multi(uint8_t address, uint8_t index, uint8_t *pdata, int32_t count) |
mjarvisal | 0:e6fcdb78a136 | 40 | { |
mjarvisal | 0:e6fcdb78a136 | 41 | int Status; |
mjarvisal | 0:e6fcdb78a136 | 42 | char cmd[1]; |
mjarvisal | 0:e6fcdb78a136 | 43 | char data[count]; |
mjarvisal | 0:e6fcdb78a136 | 44 | cmd[0]=index; |
mjarvisal | 0:e6fcdb78a136 | 45 | Status = i2c.write(address, cmd, 1); |
mjarvisal | 0:e6fcdb78a136 | 46 | Status = i2c.read(address, data, count); |
mjarvisal | 0:e6fcdb78a136 | 47 | for (int i = 0; i< count; i++) |
mjarvisal | 0:e6fcdb78a136 | 48 | { |
mjarvisal | 0:e6fcdb78a136 | 49 | pdata[i] = data[i]; |
mjarvisal | 0:e6fcdb78a136 | 50 | } |
mjarvisal | 0:e6fcdb78a136 | 51 | return Status; |
mjarvisal | 0:e6fcdb78a136 | 52 | } |
mjarvisal | 0:e6fcdb78a136 | 53 | |
mjarvisal | 0:e6fcdb78a136 | 54 | int32_t VL53L0X_write_byte(uint8_t address, uint8_t index, uint8_t data) |
mjarvisal | 0:e6fcdb78a136 | 55 | { |
mjarvisal | 0:e6fcdb78a136 | 56 | int Status; |
mjarvisal | 0:e6fcdb78a136 | 57 | char cmd[2]; |
mjarvisal | 0:e6fcdb78a136 | 58 | cmd[0]=index; |
mjarvisal | 0:e6fcdb78a136 | 59 | cmd[1]=data; |
mjarvisal | 0:e6fcdb78a136 | 60 | Status = i2c.write(address, cmd, 2); |
mjarvisal | 0:e6fcdb78a136 | 61 | return Status; |
mjarvisal | 0:e6fcdb78a136 | 62 | } |
mjarvisal | 0:e6fcdb78a136 | 63 | |
mjarvisal | 0:e6fcdb78a136 | 64 | int32_t VL53L0X_write_word(uint8_t address, uint8_t index, uint16_t data) |
mjarvisal | 0:e6fcdb78a136 | 65 | { |
mjarvisal | 0:e6fcdb78a136 | 66 | int Status; |
mjarvisal | 0:e6fcdb78a136 | 67 | char cmd[2]; |
mjarvisal | 0:e6fcdb78a136 | 68 | char ind; |
mjarvisal | 0:e6fcdb78a136 | 69 | ind = index; |
mjarvisal | 0:e6fcdb78a136 | 70 | cmd[1]=data>>0&0xFF; |
mjarvisal | 0:e6fcdb78a136 | 71 | cmd[0]=data>>8&0xFF; |
mjarvisal | 0:e6fcdb78a136 | 72 | Status = i2c.write(address, &ind, 1); |
mjarvisal | 0:e6fcdb78a136 | 73 | Status |= i2c.write(address, cmd, 2); |
mjarvisal | 0:e6fcdb78a136 | 74 | return Status; |
mjarvisal | 0:e6fcdb78a136 | 75 | } |
mjarvisal | 0:e6fcdb78a136 | 76 | |
mjarvisal | 0:e6fcdb78a136 | 77 | int32_t VL53L0X_write_dword(uint8_t address, uint8_t index, uint32_t data) |
mjarvisal | 0:e6fcdb78a136 | 78 | { |
mjarvisal | 0:e6fcdb78a136 | 79 | int Status; |
mjarvisal | 0:e6fcdb78a136 | 80 | char cmd[4]; |
mjarvisal | 0:e6fcdb78a136 | 81 | char ind; |
mjarvisal | 0:e6fcdb78a136 | 82 | ind = index; |
mjarvisal | 0:e6fcdb78a136 | 83 | cmd[3]=data>>0&0xFF; |
mjarvisal | 0:e6fcdb78a136 | 84 | cmd[2]=data>>8&0xFF; |
mjarvisal | 0:e6fcdb78a136 | 85 | cmd[1]=data>>16&0xFF; |
mjarvisal | 0:e6fcdb78a136 | 86 | cmd[0]=data>>24&0xFF; |
mjarvisal | 0:e6fcdb78a136 | 87 | Status = i2c.write(address, &ind, 1); |
mjarvisal | 0:e6fcdb78a136 | 88 | Status |= i2c.write(address, cmd, 4); |
mjarvisal | 0:e6fcdb78a136 | 89 | return Status; |
mjarvisal | 0:e6fcdb78a136 | 90 | } |
mjarvisal | 0:e6fcdb78a136 | 91 | |
mjarvisal | 0:e6fcdb78a136 | 92 | int32_t VL53L0X_read_byte(uint8_t address, uint8_t index, uint8_t *pdata) |
mjarvisal | 0:e6fcdb78a136 | 93 | { |
mjarvisal | 0:e6fcdb78a136 | 94 | int Status; |
mjarvisal | 0:e6fcdb78a136 | 95 | char data; |
mjarvisal | 0:e6fcdb78a136 | 96 | char cmd[1]; |
mjarvisal | 0:e6fcdb78a136 | 97 | cmd[0]=index; |
mjarvisal | 0:e6fcdb78a136 | 98 | Status = i2c.write(address, cmd, 1); |
mjarvisal | 0:e6fcdb78a136 | 99 | Status |= i2c.read(address, &data, 1); |
mjarvisal | 0:e6fcdb78a136 | 100 | *pdata = data; |
mjarvisal | 0:e6fcdb78a136 | 101 | return Status; |
mjarvisal | 0:e6fcdb78a136 | 102 | } |
mjarvisal | 0:e6fcdb78a136 | 103 | |
mjarvisal | 0:e6fcdb78a136 | 104 | int32_t VL53L0X_read_word(uint8_t address, uint8_t index, uint16_t *pdata) |
mjarvisal | 0:e6fcdb78a136 | 105 | { |
mjarvisal | 0:e6fcdb78a136 | 106 | int Status; |
mjarvisal | 0:e6fcdb78a136 | 107 | uint16_t tmp; |
mjarvisal | 0:e6fcdb78a136 | 108 | char data[2]; |
mjarvisal | 0:e6fcdb78a136 | 109 | char cmd[1]; |
mjarvisal | 0:e6fcdb78a136 | 110 | tmp=0; |
mjarvisal | 0:e6fcdb78a136 | 111 | cmd[0]=index; |
mjarvisal | 0:e6fcdb78a136 | 112 | Status = i2c.write(address, cmd, 1); |
mjarvisal | 0:e6fcdb78a136 | 113 | Status |= i2c.read(address, data, 2); |
mjarvisal | 0:e6fcdb78a136 | 114 | tmp |= data[1]<<0; |
mjarvisal | 0:e6fcdb78a136 | 115 | tmp |= data[0]<<8; |
mjarvisal | 0:e6fcdb78a136 | 116 | *pdata = tmp; |
mjarvisal | 0:e6fcdb78a136 | 117 | return Status; |
mjarvisal | 0:e6fcdb78a136 | 118 | } |
mjarvisal | 0:e6fcdb78a136 | 119 | |
mjarvisal | 0:e6fcdb78a136 | 120 | int32_t VL53L0X_read_dword(uint8_t address, uint8_t index, uint32_t *pdata) |
mjarvisal | 0:e6fcdb78a136 | 121 | { |
mjarvisal | 0:e6fcdb78a136 | 122 | int Status; |
mjarvisal | 0:e6fcdb78a136 | 123 | uint32_t tmp; |
mjarvisal | 0:e6fcdb78a136 | 124 | char data[4]; |
mjarvisal | 0:e6fcdb78a136 | 125 | char cmd[1]; |
mjarvisal | 0:e6fcdb78a136 | 126 | tmp=0; |
mjarvisal | 0:e6fcdb78a136 | 127 | cmd[0]=index; |
mjarvisal | 0:e6fcdb78a136 | 128 | Status = i2c.write(address, cmd, 1); |
mjarvisal | 0:e6fcdb78a136 | 129 | Status |= i2c.read(address, data, 4); |
mjarvisal | 0:e6fcdb78a136 | 130 | tmp |= data[3]<<0; |
mjarvisal | 0:e6fcdb78a136 | 131 | tmp |= data[2]<<8; |
mjarvisal | 0:e6fcdb78a136 | 132 | tmp |= data[1]<<16; |
mjarvisal | 0:e6fcdb78a136 | 133 | tmp |= data[0]<<24; |
mjarvisal | 0:e6fcdb78a136 | 134 | *pdata=tmp; |
mjarvisal | 0:e6fcdb78a136 | 135 | return Status; |
mjarvisal | 0:e6fcdb78a136 | 136 | } |
mjarvisal | 0:e6fcdb78a136 | 137 | |
mjarvisal | 0:e6fcdb78a136 | 138 |