22 января 2016 г.

Прошивка платы с МК STM32F103C8T6

Есть у меня кроме отладочной платы STM32F100-Discovery (процессор STM32F100R8T6) другая попроще и поменьше. Процессор на ней стоит STM32F103C8T6. (плату брал тут, отдельно процессор можно купить тут за $1.43). Вот понадобилось ее прошить для использования в проекте. Нагуглил, что для прошивки так же нужно использовать программатор ST-Link (который кстати встроен в Discovery). К сожалению встроенный на плате порт USB для этого не предназначен. Его можно использовать только для связи прошитой платы с компьютером - для передачи данных и т.п.
Конечно для прошивки можно использовать отдельный программатор ST-Link, который маленький, удобный и недорогой (всего $2.65). А вот тут  или тут можно почитать как сделать такой программатор самому. Но зачем, если он уже у меня есть. Поэтому встала задача как соединить программатор на Discovery с платой на STM32F103C8T6. Далее я опишу подробно что надо сделать.

Плата Discovery и разъем SWD выглядят так:
Выходы программатора на STM32F100-Discovery
Подробное описание блоков платы

Документация на эту плату тут. Схема платы тут.

Собственно весь алгоритм заключается в следующем:
  1. Ставим две перемычки на плате STM32103C8T6 в положение ближе к разъему microUSB (как на фото ниже).
  2. Подключаем ST-Link (с STM32Discovery board или другого) к плате четырьмя проводами - т.е. одноименные выводы SWD интерфейса соединяем на двух платах вместе. Самое главное - правильно подключить питание, иначе может сгореть. Внимательнее: последовательность выводов на платах не совпадает!
  3. Для прошивки снимаем две перемычки на STM32Discovery (1 и 2 на рисунке выше), тем самым отключая встроенный программатор от МК на Discovery (чтоб перемычки не потерялись, лучше оставлять их на разъеме, подключив только к одной ноге)
  4. Подаем на плату STM32103C8T6 питание через Mini-USB шнурок или через пины на плате +5В/+3.3В
  5. Подключаем STM32Discovery к компьютеру.
  6. Прошиваем. Я использую для прошивки CooCox IDE.
Для работы залитой прошивки надо переключить обе перемычки на плате в положение ближе к USB разъему (как на фото ниже).

Кстати вот подробная распиновка выводов платы: