From c5edd57aa86014af236f829edcf3f1c66a92ffe3 Mon Sep 17 00:00:00 2001 From: bmy <2583236812@qq.com> Date: Tue, 16 Apr 2024 09:49:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0IMU=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E6=97=B6=E9=87=8D=E6=96=B0=E4=B8=8A=E7=94=B5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/zf_device/zf_device_imu660ra.c | 11 +++++++++-- libraries/zf_device/zf_device_imu660ra.h | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/libraries/zf_device/zf_device_imu660ra.c b/libraries/zf_device/zf_device_imu660ra.c index 4339782..40dc5f8 100644 --- a/libraries/zf_device/zf_device_imu660ra.c +++ b/libraries/zf_device/zf_device_imu660ra.c @@ -223,14 +223,21 @@ void imu660ra_get_temperature(void) uint8 imu660ra_init(void) { 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); // 等待设备上电成功 #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 端口 #else 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 端口 - imu660ra_read_register(IMU660RA_CHIP_ID); // 读取一下设备 ID 将设备设置为 SPI 模式 + gpio_init(IMU660RA_CS_PIN, GPO, GPIO_HIGH, GPO_PUSH_PULL); // 配置 IMU660RA 的 CS 端口 + imu660ra_read_register(IMU660RA_CHIP_ID); // 读取一下设备 ID 将设备设置为 SPI 模式 #endif do { if (imu660ra_self_check()) // IMU660RA 自检 diff --git a/libraries/zf_device/zf_device_imu660ra.h b/libraries/zf_device/zf_device_imu660ra.h index 76ec418..5d0b355 100644 --- a/libraries/zf_device/zf_device_imu660ra.h +++ b/libraries/zf_device/zf_device_imu660ra.h @@ -61,9 +61,10 @@ #define IMU660RA_USE_SOFT_IIC (1) // 默认使用硬件 SPI 方式驱动 #if IMU660RA_USE_SOFT_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_SDA_PIN (E4) // 软件 IIC SDA 引脚 连接 IMU660RA 的 SDA 引脚 +#define IMU660RA_PE_PIN (E6) // 软件 IIC SDO 引脚 连接 IMU660RA 的 SDO 引脚 //====================================================软件 IIC 驱动==================================================== #else