The API library for controlling the ST VL6180 ToF sensor.

Committer:
charlesmn
Date:
Wed Oct 28 14:51:47 2020 +0000
Revision:
0:1da5e4bcb8e5
The API for controlling the VL6180 ToF sensor.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
charlesmn 0:1da5e4bcb8e5 1 #include "vl6180_I2c.h"
charlesmn 0:1da5e4bcb8e5 2 #include "spi_interface.h"
charlesmn 0:1da5e4bcb8e5 3
charlesmn 0:1da5e4bcb8e5 4 int vl6180_i2c_write_if(uint8_t* pBuffer, uint8_t DeviceAddr, uint16_t RegisterAddr,
charlesmn 0:1da5e4bcb8e5 5 uint16_t NumByteToWrite)
charlesmn 0:1da5e4bcb8e5 6 {
charlesmn 0:1da5e4bcb8e5 7
charlesmn 0:1da5e4bcb8e5 8 static vl6180_DevI2C *dev_I2C = new vl6180_DevI2C(D14, D15);
charlesmn 0:1da5e4bcb8e5 9
charlesmn 0:1da5e4bcb8e5 10 // dev_I2C->frequency(400000);
charlesmn 0:1da5e4bcb8e5 11
charlesmn 0:1da5e4bcb8e5 12
charlesmn 0:1da5e4bcb8e5 13 int status = dev_I2C->vl6180_i2c_write(pBuffer, DeviceAddr, RegisterAddr, NumByteToWrite);
charlesmn 0:1da5e4bcb8e5 14
charlesmn 0:1da5e4bcb8e5 15 if(status)
charlesmn 0:1da5e4bcb8e5 16 {
charlesmn 0:1da5e4bcb8e5 17 printf("vl6180_i2c_write_if fail %d \n",DeviceAddr);
charlesmn 0:1da5e4bcb8e5 18
charlesmn 0:1da5e4bcb8e5 19 return -1;
charlesmn 0:1da5e4bcb8e5 20 }
charlesmn 0:1da5e4bcb8e5 21 // printf("vl6180_i2c_write_if %d %d %d %d \n",DeviceAddr,RegisterAddr,NumByteToWrite,status);
charlesmn 0:1da5e4bcb8e5 22
charlesmn 0:1da5e4bcb8e5 23 return status;
charlesmn 0:1da5e4bcb8e5 24 }
charlesmn 0:1da5e4bcb8e5 25
charlesmn 0:1da5e4bcb8e5 26 int vl6180_i2c_write_stmpe1600(uint8_t* pBuffer, uint8_t DeviceAddr, uint16_t RegisterAddr,
charlesmn 0:1da5e4bcb8e5 27 uint16_t NumByteToWrite)
charlesmn 0:1da5e4bcb8e5 28 {
charlesmn 0:1da5e4bcb8e5 29
charlesmn 0:1da5e4bcb8e5 30 static vl6180_DevI2C *dev_I2C = new vl6180_DevI2C(D14, D15);
charlesmn 0:1da5e4bcb8e5 31
charlesmn 0:1da5e4bcb8e5 32 // dev_I2C->frequency(400000);
charlesmn 0:1da5e4bcb8e5 33
charlesmn 0:1da5e4bcb8e5 34
charlesmn 0:1da5e4bcb8e5 35 int status = dev_I2C->vl6180_i2c_write_stmpe(pBuffer, DeviceAddr, RegisterAddr, NumByteToWrite);
charlesmn 0:1da5e4bcb8e5 36
charlesmn 0:1da5e4bcb8e5 37 if(status)
charlesmn 0:1da5e4bcb8e5 38 {
charlesmn 0:1da5e4bcb8e5 39 printf("vl6180_i2c_write_stmpe1600 fail %d\n",DeviceAddr);
charlesmn 0:1da5e4bcb8e5 40
charlesmn 0:1da5e4bcb8e5 41 return -1;
charlesmn 0:1da5e4bcb8e5 42 }
charlesmn 0:1da5e4bcb8e5 43 // printf("vl6180_i2c_write_stmpe1600 %d %d %d %d \n",DeviceAddr,RegisterAddr,NumByteToWrite,status);
charlesmn 0:1da5e4bcb8e5 44
charlesmn 0:1da5e4bcb8e5 45 return status;
charlesmn 0:1da5e4bcb8e5 46 }
charlesmn 0:1da5e4bcb8e5 47
charlesmn 0:1da5e4bcb8e5 48
charlesmn 0:1da5e4bcb8e5 49
charlesmn 0:1da5e4bcb8e5 50 int vl6180_i2c_read_if(uint8_t* pBuffer, uint8_t DeviceAddr, uint16_t RegisterAddr,
charlesmn 0:1da5e4bcb8e5 51 uint16_t NumByteToRead)
charlesmn 0:1da5e4bcb8e5 52 {
charlesmn 0:1da5e4bcb8e5 53
charlesmn 0:1da5e4bcb8e5 54
charlesmn 0:1da5e4bcb8e5 55 static vl6180_DevI2C *dev_I2C = new vl6180_DevI2C(D14, D15);
charlesmn 0:1da5e4bcb8e5 56 if (dev_I2C == NULL)
charlesmn 0:1da5e4bcb8e5 57 {
charlesmn 0:1da5e4bcb8e5 58 printf("vl6180_i2c_read_if no pointer%d\n",NumByteToRead);
charlesmn 0:1da5e4bcb8e5 59 }
charlesmn 0:1da5e4bcb8e5 60 dev_I2C->frequency(400000);
charlesmn 0:1da5e4bcb8e5 61 // printf("vl6180_i2c_read_if %d\n",NumByteToRead);
charlesmn 0:1da5e4bcb8e5 62 int status = dev_I2C->vl6180_i2c_read(pBuffer, DeviceAddr, RegisterAddr, NumByteToRead);
charlesmn 0:1da5e4bcb8e5 63 // printf("vl6180_i2c_read_if %d %d %d %d %d\n",status, DeviceAddr, RegisterAddr,NumByteToRead ,pBuffer[0]);
charlesmn 0:1da5e4bcb8e5 64 // delete dev_I2C;
charlesmn 0:1da5e4bcb8e5 65
charlesmn 0:1da5e4bcb8e5 66 return status;
charlesmn 0:1da5e4bcb8e5 67 }
charlesmn 0:1da5e4bcb8e5 68
charlesmn 0:1da5e4bcb8e5 69
charlesmn 0:1da5e4bcb8e5 70
charlesmn 0:1da5e4bcb8e5 71 int vl6180_i2c_read_stmpe(uint8_t* pBuffer, uint8_t DeviceAddr, uint16_t RegisterAddr,
charlesmn 0:1da5e4bcb8e5 72 uint16_t NumByteToRead)
charlesmn 0:1da5e4bcb8e5 73 {
charlesmn 0:1da5e4bcb8e5 74
charlesmn 0:1da5e4bcb8e5 75
charlesmn 0:1da5e4bcb8e5 76 static vl6180_DevI2C *dev_I2C = new vl6180_DevI2C(D14, D15);
charlesmn 0:1da5e4bcb8e5 77 if (dev_I2C == NULL)
charlesmn 0:1da5e4bcb8e5 78 {
charlesmn 0:1da5e4bcb8e5 79 printf("vl6180_i2c_read_if no pointer%d\n",NumByteToRead);
charlesmn 0:1da5e4bcb8e5 80 }
charlesmn 0:1da5e4bcb8e5 81 dev_I2C->frequency(400000);
charlesmn 0:1da5e4bcb8e5 82 // printf("vl6180_i2c_read_if %d\n",NumByteToRead);
charlesmn 0:1da5e4bcb8e5 83 int status = dev_I2C->vl6180_i2c_read_stmpe(pBuffer, DeviceAddr, RegisterAddr, NumByteToRead);
charlesmn 0:1da5e4bcb8e5 84 // printf("vl6180_i2c_read_if %d %d %d %d %d\n",status, DeviceAddr, RegisterAddr,NumByteToRead ,pBuffer[0]);
charlesmn 0:1da5e4bcb8e5 85 // delete dev_I2C;
charlesmn 0:1da5e4bcb8e5 86
charlesmn 0:1da5e4bcb8e5 87 return status;
charlesmn 0:1da5e4bcb8e5 88 }