Files
25-sentry-chassis/00-Driver/BMI088Middleware.c

88 lines
1.4 KiB
C

#include "BMI088Middleware.h"
#include "main.h"
extern SPI_HandleTypeDef hspi1;
void BMI088_GPIO_init(void)
{
}
void BMI088_com_init(void)
{
}
void BMI088_delay_ms(uint16_t ms)
{
while(ms--)
{
BMI088_delay_us(1000);
}
}
void BMI088_delay_us(uint16_t us)
{
uint32_t ticks = 0;
uint32_t told = 0;
uint32_t tnow = 0;
uint32_t tcnt = 0;
uint32_t reload = 0;
reload = SysTick->LOAD;
ticks = us * 168;
told = SysTick->VAL;
while (1)
{
tnow = SysTick->VAL;
if (tnow != told)
{
if (tnow < told)
{
tcnt += told - tnow;
}
else
{
tcnt += reload - tnow + told;
}
told = tnow;
if (tcnt >= ticks)
{
break;
}
}
}
}
void BMI088_ACCEL_NS_L(void)
{
HAL_GPIO_WritePin(CS1_ACCEL_GPIO_Port, CS1_ACCEL_Pin, GPIO_PIN_RESET);
}
void BMI088_ACCEL_NS_H(void)
{
HAL_GPIO_WritePin(CS1_ACCEL_GPIO_Port, CS1_ACCEL_Pin, GPIO_PIN_SET);
}
void BMI088_GYRO_NS_L(void)
{
HAL_GPIO_WritePin(CS1_GYRO_GPIO_Port, CS1_GYRO_Pin, GPIO_PIN_RESET);
}
void BMI088_GYRO_NS_H(void)
{
HAL_GPIO_WritePin(CS1_GYRO_GPIO_Port, CS1_GYRO_Pin, GPIO_PIN_SET);
}
uint8_t BMI088_read_write_byte(uint8_t txdata)
{
uint8_t rx_data;
HAL_SPI_TransmitReceive(&hspi1, &txdata, &rx_data, 1, 1000);
return rx_data;
}