88 lines
1.4 KiB
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;
|
|
}
|
|
|