Сервопривод манипулятора бесщёточный адаптированный для автоматического производства
Find a file
2025-04-14 21:33:36 +03:00
.vscode Work with register 2025-04-14 16:29:41 +03:00
include Add test id 2025-04-14 21:33:36 +03:00
knowledges Work with register 2025-04-14 16:29:41 +03:00
lib Work with register 2025-04-14 16:29:41 +03:00
src Add test id 2025-04-14 21:33:36 +03:00
test Add test id 2025-04-14 21:33:36 +03:00
.clang-tidy Work with register 2025-04-14 16:29:41 +03:00
.clangd Work with register 2025-04-14 16:29:41 +03:00
.gitignore Work with register 2025-04-14 16:29:41 +03:00
check_gcc_version.py Work with register 2025-04-14 16:29:41 +03:00
compile_bootloader.py Work with register 2025-04-14 16:29:41 +03:00
cubemx_config.ioc Work with register 2025-04-14 16:29:41 +03:00
gen_compile_commands.py Work with register 2025-04-14 16:29:41 +03:00
mylink.ld Work with register 2025-04-14 16:29:41 +03:00
platformio.ini Work with register 2025-04-14 16:29:41 +03:00
README.md addition fix README guide 2025-04-14 17:05:22 +03:00

Встроенное ПО для сервипривода на STM32F446RE

Для разработки

  • Установить platformio
pip install -U platformio
  • Скомпилировать проект
platformio run --environment robotroller_reborn
  • Загрузить прошивку
platformio run --target upload --environment robotroller_reborn 
  • Открыть монитор UART
platformio device monitor

Загрузчик (Bootloader)

В директории bootloader расположен код загрузчика, который позволяет загрузить/обновить управляющую программу контроллера.

Инструкция по загрузке ПО в контроллер по CAN-шине

  1. Сместить в линкере прошивки её адрес. В файле с расширением .ld замените область FLASH на 0x08008000 и занимаемую память на 480K пример (FLASH.ld и RAM.ld):

    MEMORY
    {
    RAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = 128K
    FLASH    (rx)    : ORIGIN = 0x8008000,   LENGTH = 480K
    }
    
  2. омпилировать в hex формате

  3. Запустить в терминале

    python3 boot_test.py <адрес на hex файл> <адрес устройства>
    

    Пример:

    python3 boot_test.py my_hex 0
    
  4. После завершения процесса прошивки микроконтроллер автоматически перезагрузится и запустится загруженная программа, минуя загрузчик.

Бтулоадер запустится только в том случае, если по адресу 0x08060000 находится ключ DEADBEEF. При первой прошивке стартовый адрес = 0

Запись CAN ID в контроллер

Запись происходит в основной прошщивке, вызывается регистр записи, после чего REG_ID c указанным адресом. Пример:

msg_id + reg: <адрес устройства>

Пример: 0x698, где 0x69 - адрес, а 0x08 - регистр для записи
reg = 0x07 или 0x08 0x07 - для чтение с регистров, 0x08 - для записи в регистр

Can.buff[0] : REG_ID
Can.buff[1 - 5] : <новый адрес устройства, либо какие-либо данные для записи>
Can.buff[6-7] : CRC