5 Commits
4 changed files with 33 additions and 116 deletions
+1
View File
@@ -0,0 +1 @@
91c737c0c70c14d7169446f0b5312905d2b83138
+29
View File
@@ -0,0 +1,29 @@
# 🤖 Технический контекст проекта (Сгенерировано ИИ)
# 📚 STM32 Drivers & Libraries Documentation
## Назначение репозитория
Единый каталог документации по аппаратным драйверам, библиотекам и утилитам для микроконтроллеров **STM32**. Репозиторий содержит структурированную документацию по всем компонентам периферии STM32.
## Стек
Библиотека драйверов периферийных устройств STM32 (HAL/LL) с сопроводительной документацией.
## Архитектура
| Путь | Назначение |
|------|------------|
| `docs/` | Документация по драйверам, библиотекам и утилитам. Ссылки на файлы этой папки ведут к соответствующим документам. |
| Корневая директория | Содержит навигационные ссылки — правая колонка ведёт к репозиториям в `https://git.domstudent.ru/Library`. |
## Навигация
- **Документация** → папка `docs/`
- **Репозитории проекта** → правая навигационная колонка (`https://git.domstudent.ru/Library`)
<!-- USER_CUSTOM_CONTEXT_START -->
# ✍️ Заметки разработчика
Единый каталог документации по аппаратным драйверам, библиотекам и утилитам для STM32.
Навигация: Ссылки на документацию ведут на файлы в папке docs/, а ссылки в крайней правой колонке — на репозитории https://git.domstudent.ru/Library.
+3 -25
View File
@@ -10,29 +10,13 @@
```bash ```bash
# Пример добавления датчика температуры TMP112 # Пример добавления датчика температуры TMP112
git submodule add https://git.domstudent.ru/Library/DS_TMP112 git submodule add https://git.domstudent.ru/Library/DS_TMP112 Library/DS_TMP112
# Пример добавления дисплея ST7789V # Пример добавления дисплея ST7789V
git submodule add https://git.domstudent.ru/Library/DS_ST7789V git submodule add https://domstudent.ru Library/DS_ST7789V
``` ```
# Полное удаление подключенного субмодуля После добавления подмодуля запустите скрипт из папки `DS_UpdateCMakeList`, чтобы он автоматически прописал новые папки `Inc` и файлы `Src` в ваш рабочий `CMakeLists.txt`.
Для корректного удаления субмодуля из репозитория Git (чтобы не осталось «битых» ссылок в конфигурации), выполните следующие шаги:
```bash
# 1. Деинициализируйте субмодуль (удаляет настройки из .git/config и локальные файлы)
git submodule deinit -f Library/DS_TMP112
# 2. Удалите директорию субмодуля из индекса Git и рабочего дерева
git rm -f Library/DS_TMP112
# 3. Очистите внутренний кэш самого Git (важно для возможности повторного добавления)
rm -rf .git/modules/Library/DS_TMP112
# 4. Закоммитьте изменения в основном репозитории
git commit -m "Удален субмодуль DS_TMP112"
```
--- ---
@@ -75,12 +59,6 @@ git commit -m "Удален субмодуль DS_TMP112"
--- ---
## 🚗 Автомобильные интерфейсы
| Компонент | Документация | Исходный код |
| :--- | :--- | :--- |
| **DS_Accord_8_F-CAN** | [Инструкция](./docs/DS_Accord_8_F-CAN.md) | [Репозиторий](https://git.domstudent.ru/Library/DS_Accord_8_F-CAN) |
## 🛠 Утилиты ## 🛠 Утилиты
| Компонент | Документация | Исходный код | | Компонент | Документация | Исходный код |
-91
View File
@@ -1,91 +0,0 @@
# Библиотека симуляции шины F-CAN (Honda Accord 8) для STM32
Техническая документация программного модуля циклической симуляции пакетов высокоскоростной автомобильной шины F-CAN (500 кбит/с) автомобиля **Honda Accord 8-го поколения** с аппаратной поддержкой стека **HAL CAN**.
---
## 📌 Общие сведения
Библиотека предоставляет планировщик задач (Scheduler) для имитации присутствия электронных блоков управления (ECU, ABS/VSA, MICU) в бортовой сети. Особенностью шины F-CAN Honda является валидация каждого пакета принимающими узлами по динамическому счетчику сообщений (`Alive Counter`) и контрольной сумме (`Checksum`). При некорректных значениях принимающий блок (например, приборная панель) игнорирует данные.
## 📂 Структура данных
Основным элементом планировщика является структура `CanTaskTypeDef`, описывающая конфигурацию каждого CAN-кадра [source: 1]:
```c
typedef struct {
uint16_t id; // 11-битный стандартный CAN ID пакета
uint8_t dlc; // Длина кадра данных (Data Length Code, обычно 8)
uint32_t period; // Период циклической отправки в миллисекундах (мс)
uint32_t last_time; // Системный таймер последнего запуска (GetTick)
uint8_t alive_cnt; // Текущий шаг Alive Counter (принимает значения 0..3)
uint32_t start_phase; // Изначальный сдвиг фазы запуска (для десинхронизации)
uint8_t data[8]; // Полезная нагрузка (Payload) пакета
} CanTaskTypeDef;
```
---
## ⚡ Описание API функции
### 1. `void run_honda_simulation(void)`
**Назначение**: Главный диспетчер (планировщик) симуляции. Вызывается строго внутри основного бесконечного цикла `while(1)` в `main.c`.
* **Принцип работы**:
* Проверяет текущее системное время с помощью `HAL_GetTick()`.
* Контролирует фазовый сдвиг `start_phase` при инициализации.
* Проверяет наличие свободных почтовых ящиков (`Mailbox`) в TX-буфере CAN-контроллера.
* Инкрементирует циклический счетчик `alive_cnt` от 0 до 3.
* Автоматически рассчитывает контрольную сумму и упаковывает её вместе со счетчиком в последний байт кадра (`data[dlc - 1]`).
### 2. `uint8_t calc_honda_halfbyte_checksum(...)`
**Назначение**: Математический расчет контрольной суммы Honda по алгоритму «Сумма полубайт + DLC».
```c
uint8_t calc_honda_halfbyte_checksum(uint16_t id, uint8_t *data, uint8_t dlc, uint8_t alive_val);
```
* **Алгоритм расчета**:
1. Суммируются все 3 полубайта (nibbles) из 11-битного `CAN ID`.
2. Последовательно суммируются старшие и младшие полубайты всех байт данных, кроме последнего.
3. К сумме прибавляется значение `DLC` и текущий шаг счетчика `alive_val`.
4. Применяется правило дополнения до нуля: результат берется как остаток от деления накопленной суммы на 16, который затем вычитается из 16.
---
## 🎛️ Конфигурация пакетов по умолчанию
В модуле по умолчанию настроена трансляция следующих критически важных ID для Honda Accord 8:
| CAN ID | Период | Имитируемый узел | Описание / Исходный Payload |
| :--- | :---: | :--- | :--- |
| **`0x158`** | 10 мс | **ECU** (Двигатель) | Скорость автомобиля, обороты двигателя |
| **`0x17C`** | 10 мс | **ECU Status** | Системный статус силового агрегата |
| **`0x1A4`** | 20 мс | **ABS/VSA** (Тормоза) | Статус тормозной системы, датчики вращения колес |
| **`0x324`** | 200 мс | **MICU** (Боди-контроллер)| Электроника кузова, двери, свет, зажигание |
*Примечание: В коде закомментирован массив диагностических пакетов диапазона `0x490` - `0x49F`, предназначенных для расширенной эмуляции блоков.*
---
## 🛠️ Интеграция в проект на STM32
1. Подключите заголовочный файл в `main.c`:
```c
#include "DS_Accord_8_F-CAN.h"
```
2. Убедитесь, что ваш дескриптор CAN в `main.c` называется `hcan`:
```c
CAN_HandleTypeDef hcan;
```
3. Разместите вызов диспетчера в главном цикле:
```c
int main(void)
```c
while (1)
{
// ... ваш код ...
run_honda_simulation(); // Диспетчер CAN-пакетов
}
```
## ⚠️ Важные требования к аппаратному слою
* Контроллер CAN должен быть предварительно инициализирован (тактовая частота, тайминги для 500 кбит/с) и переведен в рабочий режим с помощью `HAL_CAN_Start()`.
* Для корректной работы диспетчера не блокируйте выполнение `while(1)` долгими задержками `HAL_Delay()`.
```