https://github.com/andrejchoo/stk500v1_on_any_mcu
Программатор STK500v1 совместимый практически на любом микроконтроллере
https://github.com/andrejchoo/stk500v1_on_any_mcu
avr mcs51 pic16f programmer risc-v stk500 stm32
Last synced: 28 days ago
JSON representation
Программатор STK500v1 совместимый практически на любом микроконтроллере
- Host: GitHub
- URL: https://github.com/andrejchoo/stk500v1_on_any_mcu
- Owner: AndrejChoo
- License: gpl-3.0
- Created: 2024-02-05T16:20:40.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-13T08:50:42.000Z (about 1 year ago)
- Last Synced: 2025-02-05T08:31:26.216Z (3 months ago)
- Topics: avr, mcs51, pic16f, programmer, risc-v, stk500, stm32
- Language: C
- Homepage:
- Size: 9.19 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# STK500v1_on_any_MCU
Данный прооект является переписанным с ардуино на Си проектом https://github.com/clfregis/arduino_nano_ISP (да простит меня автор). Что позволяет адаптировать его для большинства микроконтроллеров с различной архитектурой с минимальным набором периферии (UART, SPI) и ОЗУ от 512 байт. Также из плюсов - это возможность использовать более высокую скорость UART (на той же atmega328 57600 против 19200 на arduino) либо вообще использовать хардверный модуль USB в качестве usb-cdc устройства.
Для адаптации проекта под микроконтроллер другой архитектуры достаточно переписать функции инициализации UART, SPI модулей, переписать обработчик прерывания по приёму UART, инициализацию и макросы работы с GPIO.
Переработанный код был проверен на atmega328 (что не имеет особого смысла, так как это и есть arduino nano), на stm32f103c8t6 (синяя таблетка) с использованием встроенного usb, pic16f1936 (софтварный SPI, так как я никак не смог побороть его модуль MSSP), stm32f030k6t6 (используется usb-uart переходник).
Выкладываю все проекты как есть. Проект для атмеги написан в Eclipse с плагином для avr (легко переписывается под AtmelStudio), проект для stm32f103 написан в Stm32CubeIDE, для 32f030 - sw4stm32 на CMSIS без использования SPL и HAL, для PIC - MplabX IDE (XC8). Так как github не позволяет загрузить файлы с точкой в начале имени, дополнительно упаковал проекты в архив.
В проекте для atmega используется хардварный SPI: mosi - PB3, miso - PB4, sck - PB5, reset - PC1 (настраивается произвольно, как и ножки светодиодов в файле "progger.h"). UART - настроен на максимально возможную для этого проекта скорость - 57600 бод.
В проекте для STM32F103 используется хардварный SPI1: mosi - PA7, miso - PA6, sck - PA5 (можно переписать на SPI2), reset - PB0 (можно настроить произвольно, как и ножки светодиодов, но требует кроме правки файла "progger.h" еще некоторые изменения в файле "progger.c"). STM подключается по встроенному USB, скорость UART при настройке AVRDUDE можно не настраивать, так как она в любом случае будет максимальной. Данная реализация пока работает нестабильно (вероятно, из-за не совсем корректеой реализации обмена по USB, нормально читаются только fuse-биты и id), выкладываю просто для ознакомления.
В проекте для STM32F103 используется хардварный SPI1: mosi - PA7, miso - PA6, sck - PA5, reset - PB0. USART1 на PA2,PA3, скорость 115200.
В проекте на PIC16: miso - RC4, mosi - RC5, miso - RC3, reset - RC1 (можно настроить все сигналы на любые ноги, так как SPI - софтовый ногодрыг).
В качестве софта используется AVRDUDE в консольной версии или с любой оболочкой, поддерживающей STK500v1, например, SinaProg, avrdudess и т.д.