Rename library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging

Committer:
Charles MacNeill
Date:
Wed Jul 14 12:45:49 2021 +0100
Revision:
5:89031b2f5316
The class files now just are wrappers for the files in the "MODULES" directory.The porting directory includes the mbed interface

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Charles MacNeill 5:89031b2f5316 1 /* Define to prevent from recursive inclusion --------------------------------*/
Charles MacNeill 5:89031b2f5316 2 #ifndef __DEV_53L1X_I2C_H
Charles MacNeill 5:89031b2f5316 3 #define __DEV_53L1X_I2C_H
Charles MacNeill 5:89031b2f5316 4
Charles MacNeill 5:89031b2f5316 5 /* Includes ------------------------------------------------------------------*/
Charles MacNeill 5:89031b2f5316 6 #include <stdlib.h>
Charles MacNeill 5:89031b2f5316 7 #include "mbed.h"
Charles MacNeill 5:89031b2f5316 8
Charles MacNeill 5:89031b2f5316 9 #include "pinmap.h"
Charles MacNeill 5:89031b2f5316 10
Charles MacNeill 5:89031b2f5316 11
Charles MacNeill 5:89031b2f5316 12 //Class replacing DevI2C class as it was not implementing a 16bit address registers
Charles MacNeill 5:89031b2f5316 13 class vl53L3_DevI2C : public I2C
Charles MacNeill 5:89031b2f5316 14 {
Charles MacNeill 5:89031b2f5316 15 public:
Charles MacNeill 5:89031b2f5316 16 /** Create a DevI2C Master interface, connected to the specified pins
Charles MacNeill 5:89031b2f5316 17 *
Charles MacNeill 5:89031b2f5316 18 * @param sda I2C data line pin
Charles MacNeill 5:89031b2f5316 19 * @param scl I2C clock line pin
Charles MacNeill 5:89031b2f5316 20 */
Charles MacNeill 5:89031b2f5316 21 vl53L3_DevI2C(PinName sda, PinName scl) : I2C(sda, scl) { printf ("hello\n");}
Charles MacNeill 5:89031b2f5316 22
Charles MacNeill 5:89031b2f5316 23
Charles MacNeill 5:89031b2f5316 24 int VL53L3_i2c_write(uint8_t* pBuffer, uint8_t DeviceAddr, uint16_t RegisterAddr,
Charles MacNeill 5:89031b2f5316 25 uint16_t NumByteToWrite) {
Charles MacNeill 5:89031b2f5316 26 int ret;
Charles MacNeill 5:89031b2f5316 27 uint8_t tmp[TEMP_BUF_SIZE];
Charles MacNeill 5:89031b2f5316 28
Charles MacNeill 5:89031b2f5316 29 if(NumByteToWrite >= TEMP_BUF_SIZE) return -2;
Charles MacNeill 5:89031b2f5316 30
Charles MacNeill 5:89031b2f5316 31 // First, send device address. Then, send data and STOP condition
Charles MacNeill 5:89031b2f5316 32 tmp[0] = RegisterAddr >> 8;
Charles MacNeill 5:89031b2f5316 33 tmp[1] = RegisterAddr & 0x0FF;
Charles MacNeill 5:89031b2f5316 34 memcpy(tmp+2, pBuffer, NumByteToWrite);
Charles MacNeill 5:89031b2f5316 35
Charles MacNeill 5:89031b2f5316 36 ret = write(DeviceAddr, (const char*)tmp, NumByteToWrite+2, false);
Charles MacNeill 5:89031b2f5316 37
Charles MacNeill 5:89031b2f5316 38 if(ret) return -1;
Charles MacNeill 5:89031b2f5316 39 return 0;
Charles MacNeill 5:89031b2f5316 40 }
Charles MacNeill 5:89031b2f5316 41
Charles MacNeill 5:89031b2f5316 42 /**
Charles MacNeill 5:89031b2f5316 43 * @brief Reads a buffer from the I2C peripheral device.
Charles MacNeill 5:89031b2f5316 44 * @param pBuffer pointer to the byte-array to read data in to
Charles MacNeill 5:89031b2f5316 45 * @param DeviceAddr specifies the peripheral device slave address.
Charles MacNeill 5:89031b2f5316 46 * @param RegisterAddr specifies the internal address register
Charles MacNeill 5:89031b2f5316 47 * where to start reading from (must be correctly masked).
Charles MacNeill 5:89031b2f5316 48 * @param NumByteToRead number of bytes to be read.
Charles MacNeill 5:89031b2f5316 49 * @retval 0 if ok,
Charles MacNeill 5:89031b2f5316 50 * @retval -1 if an I2C error has occured
Charles MacNeill 5:89031b2f5316 51 * @note On some devices if NumByteToWrite is greater
Charles MacNeill 5:89031b2f5316 52 * than one, the RegisterAddr must be masked correctly!
Charles MacNeill 5:89031b2f5316 53 */
Charles MacNeill 5:89031b2f5316 54 int VL53L3_i2c_read(uint8_t* pBuffer, uint8_t DeviceAddr, uint16_t RegisterAddr,
Charles MacNeill 5:89031b2f5316 55 uint16_t NumByteToRead) {
Charles MacNeill 5:89031b2f5316 56 int ret;
Charles MacNeill 5:89031b2f5316 57 uint8_t ExpanderData[2];
Charles MacNeill 5:89031b2f5316 58 ExpanderData[0] = RegisterAddr >> 8;
Charles MacNeill 5:89031b2f5316 59 ExpanderData[1] = RegisterAddr & 0x0FF;
Charles MacNeill 5:89031b2f5316 60 /* Send device address, with no STOP condition */
Charles MacNeill 5:89031b2f5316 61
Charles MacNeill 5:89031b2f5316 62 ret = write(DeviceAddr, (const char*)ExpanderData, 2, true);
Charles MacNeill 5:89031b2f5316 63
Charles MacNeill 5:89031b2f5316 64 if(!ret) {
Charles MacNeill 5:89031b2f5316 65 /* Read data, with STOP condition */
Charles MacNeill 5:89031b2f5316 66 ret = read(DeviceAddr, (char*)pBuffer, NumByteToRead, false);
Charles MacNeill 5:89031b2f5316 67 }
Charles MacNeill 5:89031b2f5316 68
Charles MacNeill 5:89031b2f5316 69 if(ret) return -1;
Charles MacNeill 5:89031b2f5316 70 return 0;
Charles MacNeill 5:89031b2f5316 71 }
Charles MacNeill 5:89031b2f5316 72
Charles MacNeill 5:89031b2f5316 73 private:
Charles MacNeill 5:89031b2f5316 74 static const unsigned int TEMP_BUF_SIZE = 256;
Charles MacNeill 5:89031b2f5316 75 };
Charles MacNeill 5:89031b2f5316 76
Charles MacNeill 5:89031b2f5316 77 #endif /* __DEV_53L1X_I2C_H */