Формат кадра
Формат вывода данных через UART
В частном протоколе используется фиксированный формат кадра, который включает пять частей: заголовок кадра, номер кадра, длину данных, область данных, контрольную сумму.
Таблица Формат кадра
| Идентификатор | Длина | Описание |
|---|---|---|
| Заголовок кадра | 2 байта | Заголовок кадра, 0х59, 0х53 |
| Номер кадра | 2 байта | Номер кадра данных (1 ~ 60 000) |
| Длина данных | 1 байт | Длина данных, максимальная 255 |
| Область данных | 0-255 байт | Эффективные данные пакета |
| Контрольная сумма 1 | 1 байт | Контрольная сумма |
| Контрольная сумма 2 | 1 байт |
Формат данных
Формат области данных представлено в следующей таблице:
Таблица Формат области данных
| Пакет 1 | …. | Пакет N | ||||
|---|---|---|---|---|---|---|
| Data ID | LEN | DATA | …. | DATA ID | LEN | DATA |
Таблица Формат области данных
| Данные | DATA ID | LEN | DATA |
|---|---|---|---|
| Температура БЧЭ* | 0x01 | 2 | DATA1 – DATA2 |
| Линейное ускорение | 0x10 | 12 | DATA1 – DATA12 |
| Угловая скорость | 0x20 | 12 | DATA1 – DATA12 |
| Нормализованное значение магнитного поля | 0x30 | 12 | DATA1 – DATA12 |
| Интенсивность магнитного поля | 0x31 | 12 | DATA1 – DATA12 |
| Угол Эйлера | 0x40 | 12 | DATA1 – DATA12 |
| Кватернион | 0x41 | 16 | DATA1 – DATA16 |
| Отметка времени сэмпла | 0x51 | 4 | DATA1 – DATA4 |
| Отметка времени синхронного вывода | 0x52 | 4 | DATA1 – DATA4 |
Таблица Соотношение преобразования данных
| Данные | Номер | Преобразование | Ед. изм. |
|---|---|---|---|
| Температура БЧЭ | DATA1 (DATA[7:0]) | temp_imu = DATA *0.01 | °C |
| DATA2 (DATA[15:8]) | |||
| Линейное ускорение | DATA1 (DATA[7:0]) | ax = DATA *0.000001 | м/с² |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | ay = DATA *0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | az = DATA *0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Угловая скорость | DATA1 (DATA[7:0]) | wx = DATA *0.000001 | °/с |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | wy = DATA *0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | wz = DATA *0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Нормализованное магнитное поле | DATA1 (DATA[7:0]) | mx = DATA *0.000001 | нормализованное значение |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | my = DATA *0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | mz = DATA *0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Интенсивность магнитного поля | DATA1 (DATA[7:0]) | mx = DATA *0.001 | мГс |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | my = DATA *0.001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | mz = DATA *0.001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Угол Эйлера | DATA1 (DATA[7:0]) | pitch = DATA *0.000001 | ° |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | roll = DATA *0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | yaw = DATA *0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Кватернион | DATA1 (DATA[7:0]) | q0 = DATA * 0.000001 | – |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | q1 = DATA * 0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | q2 = DATA * 0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| DATA13 (DATA[7:0]) | q3 = DATA * 0.000001 | ||
| DATA14 (DATA[15:8]) | |||
| DATA15 (DATA[23:16]) | |||
| DATA16 (DATA[31:24]) | |||
| Отметка времени сэмпла | DATA1 (DATA[7:0]) | Sampling_timestamp = DATA | мкс |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| Отметка времени синхронного вывода | DATA1 (DATA[7:0]) | Sync_out_timestmp = DATA | мкс |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) |
Как указано в таблице и на рисунке ниже, вычислительная формула представлена в следующем примере.
| Заголовок | TID | LEN | MESSAGE | СК1 | СК2 |
|---|
Предполагая, что в диапазоне проверки имеется N байт (буфер[N]), формула расчета выглядит следующим образом:

Формат кадра протокола UART для взаимодействия
Формат протокола командного взаимодействия ИМ-15К отличается от формата вывода сообщений по умолчанию. Структура кадра включает: заголовок кадра, класс данных, оператор, длина данных, область данных, контрольная сумма. Представлено в следующей таблице:
Таблица Формат кадра
| Идентификатор | Длина | Описание |
|---|---|---|
| Заголовок кадра | 2 байта | Начальный байт данных, 0х59, 0х53 |
| Класс данных | 1 байт | Категория данных |
| Оператор | 3 бита | Запрос или запись |
| Длина данных | 13 бит | Длина данных, максимальное значение 8191 |
| Данные | 0-8191 байт | Эффективные данные пакета |
| Контрольная сумма 1 | 1 байт | Контрольная сумма |
| Контрольная сумма 2 | 1 байт |
Метод вычисления контрольной суммы
Полная кадр данных должна быть защищена контрольной суммой, которая вычисляется с учетом данных с класса данных до последнего байта данных. Представлено в следующей таблице:
| Заголовок кадра | Класс данных | Оператор | Длина данных | Область данных | CK1 | CK2 |
|---|---|---|---|---|---|---|
| 0x59 0x53 | Диапазон, в пределах которого должна быть вычислена контрольная сумма | – | – | |||
Формат протокола I2C для обмена данными
Шина I2C использует более компактную систему команд, используя адрес регистра выборки IMU, как в обычном методе чтения IMU.
Формат отправки данных по шине I2C представлен в следующей таблице:
| Master/Slave | ST | SAD+W | SAK | SUB | SAK | SR | SAD+R | SAK | DATA | MAK | DATA | NMAK | SP |
|---|
Примечание:
SAD: Slave address
ST: START Condition
SR: Repeated START
SP: STOP Condition
SUB: 8-bit sub-address, always is register address
W: Write operation
R: Read operation
MAK: Master Acknowledge
NMAK: No Master Acknowledge
SAK: Slave Acknowledge
Определение адреса регистра представлено в следующей таблице:
Таблица Определение адреса регистра
| Данные | DATA ID | LEN | DATA |
|---|---|---|---|
| Температура БЧЭ | 0x01 | 2 | DATA1 – DATA2 |
| Линейное ускорение | 0x10 | 12 | DATA1 – DATA12 |
| Угловая скорость | 0x20 | 12 | DATA1 – DATA12 |
| Нормализованное значение магнитного поля | 0x30 | 12 | DATA1 – DATA12 |
| Интенсивность магнитного поля | 0x31 | 12 | DATA1 – DATA12 |
| Угол Эйлера | 0x40 | 12 | DATA1 – DATA12 |
| Кватернион | 0x41 | 16 | DATA1 – DATA16 |
| Отметка времени сэмпла | 0x51 | 4 | DATA1 – DATA4 |
| Отметка времени синхронного вывода | 0x52 | 4 | DATA1 – DATA4 |
Таблица Соотношение преобразования данных
| Данные | Номер | Преобразование | Ед. изм. |
|---|---|---|---|
| Температура БЧЭ | DATA1 (DATA[7:0]) | temp_imu = DATA * 0.01 | °C |
| DATA2 (DATA[15:8]) | |||
| Линейное ускорение | DATA1 (DATA[7:0]) | ax = DATA * 0.000001 | м/с² |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | ay = DATA * 0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | az = DATA * 0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Угловая скорость | DATA1 (DATA[7:0]) | wx = DATA * 0.000001 | °/с |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | wy = DATA * 0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | wz = DATA * 0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Нормализованное значение магнитного поля | DATA1 (DATA[7:0]) | mx = DATA * 0.000001 | нормализованное значение |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | my = DATA * 0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | mz = DATA * 0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Интенсивность магнитного поля | DATA1 (DATA[7:0]) | mx = DATA * 0.001 | мГс |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | my = DATA * 0.001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | mz = DATA * 0.001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Угол Эйлера | DATA1 (DATA[7:0]) | pitch = DATA * 0.000001 | ° |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | roll = DATA * 0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | yaw = DATA * 0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| Кватернион | DATA1 (DATA[7:0]) | q0 = DATA * 0.000001 | – |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| DATA5 (DATA[7:0]) | q1 = DATA * 0.000001 | ||
| DATA6 (DATA[15:8]) | |||
| DATA7 (DATA[23:16]) | |||
| DATA8 (DATA[31:24]) | |||
| DATA9 (DATA[7:0]) | q2 = DATA * 0.000001 | ||
| DATA10 (DATA[15:8]) | |||
| DATA11 (DATA[23:16]) | |||
| DATA12 (DATA[31:24]) | |||
| DATA13 (DATA[7:0]) | q3 = DATA * 0.000001 | ||
| DATA14 (DATA[15:8]) | |||
| DATA15 (DATA[23:16]) | |||
| DATA16 (DATA[31:24]) | |||
| Отметка времени сэмпла | DATA1 (DATA[7:0]) | Sampling_timestamp = DATA | мкс |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) | |||
| Отметка времени синхронного вывода | DATA1 (DATA[7:0]) | Sync_out_timestmp = DATA | мкс |
| DATA2 (DATA[15:8]) | |||
| DATA3 (DATA[23:16]) | |||
| DATA4 (DATA[31:24]) |