Что делает проект
Прошивка объединяет измерительный тракт, диагностику, управление выходами и два транспортных интерфейса. Аппаратная роль определяется при старте, поэтому один код работает на нескольких платах комплекса.
Texas Instruments C2000
TMS320F28335, COFF ABI, large memory model и аппаратные модули ADC, eCAN, SCI, SPI, CPU Timer и XINTF.
BALSAM = 167
package.h выбирает направление, RS-калибровку, OWEN и раскладку общих регистров.
128 Modbus-регистров
Измерения, уставки, ошибки, калибровка и команды представлены через массив modbus и макросы доступа.
Три контура
ADC ISR собирает выборки, Timer1 ведёт измерение или пульт, главный цикл выполняет связь и команды.
Как связаны подсистемы
Быстрые обработчики обновляют состояние, а главный цикл публикует его и принимает управляющие команды. Общая модель связывает подсистемы без динамического выделения памяти.
ADC ISR + Timer1 SENS
- ADC ISR накапливает и фильтрует выборки.
cpu_timer1_isr_SENSвыбирает канал и планирует пересчёт.Temper_count,Current_countиPower_countобновляют значения.er_analподтверждает ошибки с выдержкой времени.
Timer1 PULT
Для роли dsk_EPLT Timer1 направляется в cpu_timer1_isr_PULT. Обработчик ведёт внешнюю индикацию и дискретный интерфейс, не запуская обычный измерительный контур.
Главный цикл и прерывания используют общие переменные
При изменениях учитывайте атомарность доступа C28x, порядок обновления modbus, флаги CanGO/READY и время выполнения ISR. В прерываниях нельзя добавлять блокирующий обмен с EEPROM или UART.
Внутренние модули
Таблица показывает назначение каждого слоя и его основные точки входа.
| Модуль | Назначение | Основные API |
|---|---|---|
| main.c | Старт платформы и кооперативный главный цикл | main, timer_Init |
| ADC.c | Секвенсор ADC, накопление и ISR | setup_adc, adc_isr |
| measure.c | Температура, ток, напряжение, мощность и диагностика | Init_sensors, Current_count, Temper_count, Power_count |
| filter_bat2.c | IIR-фильтр Баттерворта второго порядка | filterbat |
| RS485.c | Два SCI-канала, RX/TX автоматы и тайм-ауты | setup_uart, RS_Send, RS_BSend |
| bios.c | Сервисный/загрузочный протокол контроллера | get_command, peek, poke, load, run |
| message.c | Modbus, параметры и обмен с OWEN | ReceiveCommandModbus3, Save_params, Load_params |
| ecan.c | eCAN-A mailboxes и телеметрия | InitCan, CAN_send, CANa_handler |
| spise2p.c | SPI-драйвер последовательной EEPROM | InitSeeprom, Seeprom_read, Seeprom_write |
| peripher.c | Распознавание платы, GPIO и мультиплексоры | get_Mode, get_Buttons, select_tpl_canal |
| DAC.c | Аналоговый выход платы нагрузки | Init_DAC, Anal_output, Load_runner |
| pulto.c / kanal.c | Пульт и последовательная индикация | cpu_timer1_isr_PULT, kanal_Send |
| crc16.c / tools.c | CRC, XINTF zone 7 и задержки | get_crc_16, init_zone7, pause_us |
Данные и конфигурация
Система построена вокруг статических массивов и битовых слов. Это подходит для C28x, но требует строго сохранять индексы и размеры.
Карта регистров
0x00— слова ошибок каналов.0x18— текущие измерения.0x30— верхние уставки.0x48— нижние уставки.0x60+— периоды, яркость и служебные параметры.0x7F— команды.
Слово диагностики
Биты описывают обрыв, неправильный сигнал, выход за диапазон, перегрев, стоп, готовность, дискретные входы, игнорирование и bypass. Поле all позволяет передавать слово целиком.
Заводские таблицы
Калибровки зависят от значения BALSAM. Файл содержит определения данных и должен включаться только там, где формируются значения по умолчанию.
Роли платы
Направления и начальные уровни GPIO заданы отдельными наборами для COMM, BKSD, BKST, EPLT, SHKF и LOAD.
Кодировка legacy-кода
Старые комментарии исходников записаны в Windows-1251. Doxygen настроен декодировать *.c и *.h как CP1251; новые документы — UTF-8.
Анализ кода
Markdown-отчёты из каталога Doc включаются в Doxygen при каждой сборке. Выберите документ — его HTML откроется справа без ухода с этой вкладки.
Как собрать документацию
Скрипт повторяет схему эталонных HTML-документов: формирует автономную точку входа и дополнительно запускает Doxygen, если он установлен.
Запуск из корня репозитория
Doc\build.bat
Готовый обзор: Doc\build\index.html
API: Doc\build\api\html\index.html
Предупреждения: Doc\build\doxygen-warnings.log
Doxygen в PATH
Без Doxygen обзор всё равно собирается, а скрипт печатает предупреждение. После установки повторный запуск добавит API-справочник.
Перед публикацией
- Открывается
build/index.html. - Ссылка «Открыть Doxygen API» ведёт на созданный индекс.
- В журнале нет неизвестных команд и неверных ссылок.
- Новые публичные функции описаны в заголовке или
api.dox. - Разметка
modbusсогласована с внешним описанием данных.