31 lines
816 B
C
31 lines
816 B
C
#include "tfminiplus.h"
|
|
#include "stdlib.h"
|
|
#include "bsp_dwt.h"
|
|
|
|
static TFMiniInstance *tfmini;
|
|
|
|
TFMiniInstance *TFMiniRegister(I2C_HandleTypeDef *hi2c)
|
|
{
|
|
tfmini = (TFMiniInstance *)malloc(sizeof(TFMiniInstance));
|
|
IIC_Init_Config_s conf = {
|
|
.handle = hi2c,
|
|
.dev_address = 0x10,
|
|
.id = tfmini,
|
|
.work_mode = IIC_BLOCK_MODE,
|
|
};
|
|
tfmini->iic = IICRegister(&conf);
|
|
DWT_Delay(0.5);
|
|
return tfmini;
|
|
}
|
|
|
|
float GetDistance(TFMiniInstance *tfmini)
|
|
{
|
|
uint8_t cmd_buf[5] = {0x5A, 0x05, 0x00, 0x06, 0x65};
|
|
IICTransmit(tfmini->iic, cmd_buf, 5, IIC_SEQ_RELEASE);
|
|
IICReceive(tfmini->iic, tfmini->buf, 11, IIC_SEQ_RELEASE);
|
|
tfmini->Mode = tfmini->buf[6];
|
|
tfmini->Dist = (uint16_t)tfmini->buf[2] + (((uint16_t)tfmini->buf[3]) << 8);
|
|
tfmini->Strength = tfmini->buf[4] | (tfmini->buf[5] << 8);
|
|
return tfmini->Dist;
|
|
}
|