-

Dependents:   VL53L0X_Continuous_Ranging_Example

Fork of vl53l0x_api by Markus Järvisalo

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?

UserRevisionLine numberNew 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