|
Paparazzi UAS
v5.12_stable-4-g9b43e9b
Paparazzi is a free software Unmanned Aircraft System.
|
Driver for CH Robotics UM6 IMU/AHRS subsystem. More...
#include "generated/airframe.h"#include "subsystems/imu.h"#include "mcu_periph/uart.h"#include "subsystems/ahrs.h"
Include dependency graph for imu_um6.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | UM6Packet |
Macros | |
| #define | IMU_UM6_BUFFER_LENGTH 32 |
| #define | IMU_UM6_DATA_OFFSET 5 |
| #define | IMU_UM6_LONG_DELAY 4000000 |
| #define | IMU_UM6_COMMUNICATION_REG 0x00 |
| #define | IMU_UM6_MISC_CONFIG_REG 0x01 |
| #define | IMU_UM6_GET_FIRMWARE_CMD 0xAA |
| #define | IMU_UM6_ZERO_GYROS_CMD 0xAC |
| #define | IMU_UM6_RESET_EKF_CMD 0xAD |
| #define | IMU_UM6_GET_DATA 0xAE |
| #define | IMU_UM6_SET_ACCEL_REF 0xAF |
| #define | IMU_UM6_SET_MAG_REF 0xB0 |
| #define | IMU_UM6_GYRO_PROC 0x5C |
| #define | IMU_UM6_ACCEL_PROC 0x5E |
| #define | IMU_UM6_MAG_PROC 0x60 |
| #define | IMU_UM6_EULER 0x62 |
| #define | IMU_UM6_QUAT 0x64 |
Enumerations | |
| enum | UM6PacketStatus { UM6PacketWaiting, UM6PacketReadingS, UM6PacketReadingN, UM6PacketReadingPT, UM6PacketReadingAddr, UM6PacketReadingData } |
| enum | UM6Status { UM6Uninit, UM6Running } |
Functions | |
| void | UM6_packet_read_message (void) |
| void | UM6_packet_parse (uint8_t c) |
| void | imu_um6_publish (void) |
| void | imu_um6_init (void) |
| void | imu_um6_periodic (void) |
| static void | imu_um6_event (void) |
Variables | |
| struct UM6Packet | UM6_packet |
| uint8_t | PacketLength |
| uint8_t | PacketType |
| uint8_t | PacketAddr |
| uint16_t | chk_calc |
| uint16_t | chk_rec |
| enum UM6Status | UM6_status |
| volatile uint8_t | UM6_imu_available |
| struct FloatEulers | UM6_eulers |
| struct FloatQuat | UM6_quat |
Driver for CH Robotics UM6 IMU/AHRS subsystem.
Takes care of configuration of the IMU, communication and parsing the received packets. See UM6 datasheet for configuration options. Should be used with ahrs_extern_euler AHRS subsystem.
Definition in file imu_um6.h.
| struct UM6Packet |
| #define IMU_UM6_ACCEL_PROC 0x5E |
Definition at line 55 of file imu_um6.h.
Referenced by UM6_packet_read_message().
| #define IMU_UM6_COMMUNICATION_REG 0x00 |
Definition at line 45 of file imu_um6.h.
Referenced by imu_um6_init().
| #define IMU_UM6_DATA_OFFSET 5 |
Definition at line 42 of file imu_um6.h.
Referenced by UM6_packet_read_message().
| #define IMU_UM6_EULER 0x62 |
Definition at line 57 of file imu_um6.h.
Referenced by UM6_packet_read_message().
| #define IMU_UM6_GYRO_PROC 0x5C |
Definition at line 54 of file imu_um6.h.
Referenced by UM6_packet_read_message().
| #define IMU_UM6_MAG_PROC 0x60 |
Definition at line 56 of file imu_um6.h.
Referenced by UM6_packet_read_message().
| #define IMU_UM6_MISC_CONFIG_REG 0x01 |
Definition at line 46 of file imu_um6.h.
Referenced by imu_um6_init().
| #define IMU_UM6_QUAT 0x64 |
Definition at line 58 of file imu_um6.h.
Referenced by UM6_packet_read_message().
| #define IMU_UM6_RESET_EKF_CMD 0xAD |
Definition at line 49 of file imu_um6.h.
Referenced by UM6_imu_align().
| #define IMU_UM6_SET_ACCEL_REF 0xAF |
Definition at line 51 of file imu_um6.h.
Referenced by UM6_imu_align().
| #define IMU_UM6_SET_MAG_REF 0xB0 |
Definition at line 52 of file imu_um6.h.
Referenced by UM6_imu_align().
| #define IMU_UM6_ZERO_GYROS_CMD 0xAC |
Definition at line 48 of file imu_um6.h.
Referenced by UM6_imu_align().
| enum UM6PacketStatus |
|
inlinestatic |
Definition at line 105 of file imu_um6.h.
References imu_um6_publish(), UM6Packet::msg_available, uart_char_available(), uart_getch(), UM6_packet, UM6_packet_parse(), and UM6_packet_read_message().
Here is the call graph for this function:| void imu_um6_init | ( | void | ) |
Definition at line 135 of file imu_um6.c.
References buf_out, UM6Packet::chksm_error, data_chk, UM6Packet::hdr_error, IMU_UM6_COMMUNICATION_REG, IMU_UM6_MISC_CONFIG_REG, UM6Packet::msg_available, UM6Packet::msg_idx, UM6Packet::status, UM6_calculate_checksum(), UM6_imu_align(), UM6_packet, UM6_send_packet(), UM6_status, UM6PacketWaiting, and UM6Uninit.
Here is the call graph for this function:| void imu_um6_publish | ( | void | ) |
Definition at line 369 of file imu_um6.c.
References Imu::accel, get_sys_time_usec(), Imu::gyro, imu, IMU_UM6_ID, and Imu::mag.
Referenced by imu_um6_event().
Here is the call graph for this function:
Here is the caller graph for this function:| void UM6_packet_parse | ( | uint8_t | c | ) |
Definition at line 290 of file imu_um6.c.
References UM6Packet::chksm_error, UM6Packet::hdr_error, UM6Packet::msg_available, UM6Packet::msg_buf, UM6Packet::msg_idx, PacketAddr, PacketLength, PacketType, UM6Packet::status, UM6_packet, UM6_verify_chk(), UM6PacketReadingAddr, UM6PacketReadingData, UM6PacketReadingN, UM6PacketReadingPT, UM6PacketReadingS, and UM6PacketWaiting.
Referenced by imu_um6_event().
Here is the call graph for this function:
Here is the caller graph for this function:| void UM6_packet_read_message | ( | void | ) |
Definition at line 211 of file imu_um6.c.
References Imu::accel, ACCELS_BFP_OF_REAL, EULERS_BFP_OF_REAL, EULERS_SMUL, Imu::gyro, imu, IMU_UM6_ACCEL_PROC, IMU_UM6_DATA_OFFSET, IMU_UM6_EULER, IMU_UM6_GYRO_PROC, IMU_UM6_MAG_PROC, IMU_UM6_QUAT, Imu::mag, MAGS_BFP_OF_REAL, UM6Packet::msg_buf, FloatRates::p, PacketAddr, PacketLength, FloatEulers::phi, FloatEulers::psi, FloatRates::q, FloatQuat::qi, QUAT_BFP_OF_REAL, FloatQuat::qx, FloatQuat::qy, FloatQuat::qz, FloatRates::r, RATES_BFP_OF_REAL, RATES_SMUL, FloatEulers::theta, UM6_accel, UM6_eulers, UM6_mag, UM6_packet, UM6_quat, UM6_rate, UM6_status, UM6Running, VECT3_SMUL, FloatVect3::x, FloatVect3::y, and FloatVect3::z.
Referenced by imu_um6_event().
Here is the caller graph for this function:| uint16_t chk_calc |
Definition at line 47 of file imu_um6.c.
Referenced by gx3_verify_chk(), and UM6_verify_chk().
| uint16_t chk_rec |
Definition at line 48 of file imu_um6.c.
Referenced by UM6_verify_chk().
| uint8_t PacketAddr |
Definition at line 44 of file imu_um6.c.
Referenced by UM6_packet_parse(), and UM6_packet_read_message().
| uint8_t PacketLength |
Definition at line 42 of file imu_um6.c.
Referenced by UM6_packet_parse(), and UM6_packet_read_message().
| uint8_t PacketType |
Definition at line 43 of file imu_um6.c.
Referenced by UM6_packet_parse().
| struct FloatEulers UM6_eulers |
Definition at line 53 of file imu_um6.c.
Referenced by UM6_packet_read_message().
| volatile uint8_t UM6_imu_available |
| struct UM6Packet UM6_packet |
Definition at line 38 of file imu_um6.c.
Referenced by imu_um6_event(), imu_um6_init(), UM6_packet_parse(), and UM6_packet_read_message().
| struct FloatQuat UM6_quat |
Definition at line 54 of file imu_um6.c.
Referenced by UM6_packet_read_message().
| enum UM6Status UM6_status |
Definition at line 45 of file imu_um6.c.
Referenced by imu_um6_init(), UM6_imu_align(), and UM6_packet_read_message().