# ADIS16505 **Repository Path**: qCwCp/ADIS16505 ## Basic Information - **Project Name**: ADIS16505 - **Description**: ADIS16505驱动 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-09 - **Last Updated**: 2025-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: driver ## README ## ADIS16505驱动 ### 硬件连接 | ADIS16505 | MCU | | :-------: | :--: | | CS* | SS* | | SCLK | SCLK | | DIN | MOSI | | DOUT | MISO | | RST* (Opt.) | GPIO | | SYNC (Opt.) | GPIO | | DR (Opt.) | EXTI | - RST*引脚**接高阻或拉高** - 若使用Direct Input Sync Mode,SYNC脚输入脉冲波,频率1900Hz~2100Hz,正脉宽 ≥ 5us,即占空比约大于1% - 若想要监测IMU的输出数据寄存器是否更新,则连接DR引脚,更新时触发边沿信号 ### SPI设置 See Theory of Operation -> SPI in datasheet for detail. :exclamation::exclamation::exclamation: SPI初始化一定要正确 | Processor Setting | Description | | :-------------------------------------: | :-------------------------------: | | Master | SS* | | SCLK ≤ 2MHz (**≤ 1MHz for burst mode**) | Maximum serial clock rate | | SPI Mode 3 | CPOL=1 (polarity), CPHA=1 (phase) | | MSB First Mode | Bit sequence | | 8-Bit or 16-Bit Mode | Shift register and data length | 注意,ADIS默认应将SPI配置为16-Bit Mode,但本驱动库也兼容了8-Bit Mode,通过定义宏` SPI_ADIS16505_DATASIZE_8BIT`来使用该模式。 ### 预定义宏 platform_specific_impl.h ```C #define PLATFORM_STM32_USE_HAL // 选择平台 // #define PLATFORM_LINUX_USE_MRAA // #define SPI_ADIS16505_DATASIZE_8BIT // SPI模式 #define ADIS16505_USE_HARDWARE_RST // 使用硬件重启功能 #define ADIS16505_USE_INPUT_SYNC_MODE // 使用外部输入的同步信号 ``` ### 移植说明 主要文件目录 ```bash /root ├── docs/ │ └── adis16505.pdf ├── adis16505.c ├── adis16505.h ├── platform_specific_impl.c ├── platform_specific_impl.h └── README.md ``` 其中,adis16505.c & adis16505.h移植时不需要更改 platform_specific_impl.c & platform_specific_impl.h需要根据移植平台适配更改 需要实现的函数包括: ```c void delay_ms(uint32_t nms); // 毫秒延时 void delay_us(uint16_t nus); // 微秒延时 void ADIS16505_Select(); // 片选拉低 void ADIS16505_Deselect(); // 片选拉高 uint8_t SPI_ADIS16505_WR_Word(const uint16_t word, uint16_t* pRxData); // SPI全双工读写单字 (16bits) uint8_t SPI_ADIS16505_WR_Words(const uint16_t* pTxData, uint16_t* pRxData, uint16_t num); // SPI全双工读写多字 (16bits) void ADIS16505_HardwareReset(); // 硬件重启 ``` 通过定义宏(e.g.`PLATFORM_STM32_USE_HAL`)来进行平台管理,这里详见代码 使用该驱动库的方法为: ```C /* USER CODE BEGIN Includes */ #include "adis16505.h" /* USER CODE END Includes */ /* USER CODE BEGIN PV */ ADIS16505 imu; // 定义结构体变量 /* USER CODE END PV */ /* SYSTEM BEGIN Init */ // Clock_Init(); // GPIO_Init(); // SPI_Init(); // ... /* SYSTEM END Init */ ADIS16505_Init(&imu); // 初始化IMU /* USE IMU */ // e.g. ADIS16505_BurstRead(&imu); ```