feat: 增加IMU初始化时重新上电功能
This commit is contained in:
@@ -223,14 +223,21 @@ void imu660ra_get_temperature(void)
|
|||||||
uint8 imu660ra_init(void)
|
uint8 imu660ra_init(void)
|
||||||
{
|
{
|
||||||
uint8 return_state = 0;
|
uint8 return_state = 0;
|
||||||
|
|
||||||
|
// 先给 IMU660RA 断电重启
|
||||||
|
gpio_init(IMU660RA_PE_PIN, GPO, 0, GPO_PUSH_PULL); // 配置 IMU660RA 的 PE 端口
|
||||||
|
gpio_low(IMU660RA_PE_PIN);
|
||||||
|
system_delay_ms(100);
|
||||||
|
gpio_high(IMU660RA_PE_PIN);
|
||||||
|
|
||||||
system_delay_ms(20); // 等待设备上电成功
|
system_delay_ms(20); // 等待设备上电成功
|
||||||
|
|
||||||
#if IMU660RA_USE_SOFT_IIC
|
#if IMU660RA_USE_SOFT_IIC
|
||||||
soft_iic_init(&imu660ra_iic_struct, IMU660RA_DEV_ADDR, IMU660RA_SOFT_IIC_DELAY, IMU660RA_SCL_PIN, IMU660RA_SDA_PIN); // 配置 IMU660RA 的 IIC 端口
|
soft_iic_init(&imu660ra_iic_struct, IMU660RA_DEV_ADDR, IMU660RA_SOFT_IIC_DELAY, IMU660RA_SCL_PIN, IMU660RA_SDA_PIN); // 配置 IMU660RA 的 IIC 端口
|
||||||
#else
|
#else
|
||||||
spi_init(IMU660RA_SPI, SPI_MODE0, IMU660RA_SPI_SPEED, IMU660RA_SPC_PIN, IMU660RA_SDI_PIN, IMU660RA_SDO_PIN, IMU660RA_CS_PIN); // 配置 IMU660RA 的 SPI 端口
|
spi_init(IMU660RA_SPI, SPI_MODE0, IMU660RA_SPI_SPEED, IMU660RA_SPC_PIN, IMU660RA_SDI_PIN, IMU660RA_SDO_PIN, IMU660RA_CS_PIN); // 配置 IMU660RA 的 SPI 端口
|
||||||
gpio_init(IMU660RA_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL); // 配置 IMU660RA 的 CS 端口
|
gpio_init(IMU660RA_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL); // 配置 IMU660RA 的 CS 端口
|
||||||
imu660ra_read_register(IMU660RA_CHIP_ID); // 读取一下设备 ID 将设备设置为 SPI 模式
|
imu660ra_read_register(IMU660RA_CHIP_ID); // 读取一下设备 ID 将设备设置为 SPI 模式
|
||||||
#endif
|
#endif
|
||||||
do {
|
do {
|
||||||
if (imu660ra_self_check()) // IMU660RA 自检
|
if (imu660ra_self_check()) // IMU660RA 自检
|
||||||
|
|||||||
@@ -61,9 +61,10 @@
|
|||||||
#define IMU660RA_USE_SOFT_IIC (1) // 默认使用硬件 SPI 方式驱动
|
#define IMU660RA_USE_SOFT_IIC (1) // 默认使用硬件 SPI 方式驱动
|
||||||
#if IMU660RA_USE_SOFT_IIC // 这两段 颜色正常的才是正确的 颜色灰的就是没有用的
|
#if IMU660RA_USE_SOFT_IIC // 这两段 颜色正常的才是正确的 颜色灰的就是没有用的
|
||||||
//====================================================软件 IIC 驱动====================================================
|
//====================================================软件 IIC 驱动====================================================
|
||||||
#define IMU660RA_SOFT_IIC_DELAY (10) // 软件 IIC 的时钟延时周期 数值越小 IIC 通信速率越快
|
#define IMU660RA_SOFT_IIC_DELAY (10) // 软件 IIC 的时钟延时周期 数值越小 IIC 通信速率越快
|
||||||
#define IMU660RA_SCL_PIN (E5) // 软件 IIC SCL 引脚 连接 IMU660RA 的 SCL 引脚
|
#define IMU660RA_SCL_PIN (E5) // 软件 IIC SCL 引脚 连接 IMU660RA 的 SCL 引脚
|
||||||
#define IMU660RA_SDA_PIN (E4) // 软件 IIC SDA 引脚 连接 IMU660RA 的 SDA 引脚
|
#define IMU660RA_SDA_PIN (E4) // 软件 IIC SDA 引脚 连接 IMU660RA 的 SDA 引脚
|
||||||
|
#define IMU660RA_PE_PIN (E6) // 软件 IIC SDO 引脚 连接 IMU660RA 的 SDO 引脚
|
||||||
//====================================================软件 IIC 驱动====================================================
|
//====================================================软件 IIC 驱动====================================================
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user