STM32, прошивка через RS-232

Не пинайте, на STM32 это мой первый девайс. Надумал заложить в него возможность перепрошивки через RS-232. Юмор в том, что для указания режима загрузки используется один BOOT0, это отдельный пин, и один назначенный на PORTB, PB2.
Следуя даташиту, в этом режиме должно быть BOOT0=1 и BOOT1=0. Хочется убить 2 зайца, и пины в будущем задействовать и иметь возможность грузить прошивку через ком-порт.
В процессе нарисовал вот такой смешной селектор для прошивки через ком-компорт


Вроде так. Если где не прав, с удовольствием выслушаю пожелания и предложения. На схеме транзисторы скопипащены с другого участка схемы, так что номинал транзистора не важен.
Суть схемы в том, что переключателем выбирается режим загрузки, и там же при включении сразу через C11(+R на схеме) формируется сброс.
Собственно, у сообщества и хочу поинтересоваться, как вы поступаете…
Или достаточно лишь BOOT0 подтянуть к питанию и не мучатся с PB2?
  • 0
  • 10 марта 2012, 20:38
  • uschema
  • 1
Файлы в топике: stm32_boot.jpg

Комментарии (15)

RSS свернуть / развернуть
«заасайненый» — первый раз такое слово вижу/слышу. даже не придумалось, с чего это калька… %)
0
Да, вы правы, IT-привычка.
заасайненый=назначенный, сейчас исправлю.
0
Не догнал, зачем так сложно? Если не требуется загрузки из SRAM, то мне кажется, достаточно сделать перекидной джампер для пина PB2. Либо на периферию, либо на 0. BOOT0 аналогично на 0 и 1. Нужно прошить — отключаем BOOT1/PB2 от периферии и коннектим на 0, а BOOT0 переводим на 0. Прошились — вертаем назад.
0
  • avatar
  • ACE
  • 11 марта 2012, 00:15
В схеме по сути все тоже самое, только не с перекидным 3х пиным джампером, а с 2х-пиновым, на схеме с переключателем. ;)
Вопрос то в том и состоит, как бы эдак сделать даже не попроще, а похитрее и практичнее, при том, что прибор будет в это время в куках у «юзеров», а не эмбеддеров ;)
да, кстати конденсатор поидее можно вообще прокинуть мимо переключателя, напрямую на NRST.
… следовательно остается один 2х пиновый джампер/переключатель.

но смущает что при этом слишком много деталей, 3 транзистора, 3 резистора, диод, конденсатор… многовато будет. ;);)
0
Юзер будет прошивать по RS-232? Я бы тогда поставил движковый переключатель на две группы. Работа/перепрошивка. А то мало ли что юзер с дип-переключателями накосячит :)
И да, по мне тоже деталей многовато, на производстве оно может и пофиг, а мне лень ради призрачного удобства паять лишнее.
0
Во, мне кажется идеальный вариант.
0
Так вот и я о том же, хочу уменьшить, но то ли сложно замыслил, себя запутал, то ли заблудился.
У юзера то будет USB, а вот со стороны STM32 это RS-232 ;)
По сути этот 2 пиновый/переключатель джампер и есть как вы сказали режимы «Работа/перепрошивка».
0
Ага, я понял. Ну тогда моё мнение — в данном случае нет смысла городить электронную схему согласования, проще сделать тупо механическую.
0
Может лучше попробовать bootloader как-то прикрутить? Если это конечно допустимо.
0
bootloader планируется тоже, но нужно иметь и возможность используя RS232. Согласитесь, ведь всегда необходимо иметь запасной вариант пршивки.
0
Ну это смотря какое изделие. Вы написали чуть выше, что прибор будет «в руках у юзеров». Если это массовое производство, то обычо экономят на всем что не влияет на основной функционал. И тогда для аварийного восстановления прошивки достаточно просто оставить воозможность переключать BOOT0 и BOOT1, хоть тестпоинтами. Если же планируете небольшое количество, то можно и заморочиться. Но все равно при использовании нормального, рабочего загрузчика Вам это все скорее всего не пригодится.
0
На счет себестоимости, вы полностью правы, надобно вокращать. Та и изделие еще в разработке, и не известно, будет продаваться 100 или 1000шт. Но планируется много… :) Собственно по этому, пока оно в разработке, то задался этим вопросом.
Это будет модуль, в конструкции (многомодульной), и юзер радовой там заблудится, по этому и думаю как бы сделать по умнее и по гибче. что бы он мог обновить прошивку без особых напрягов.
0
>> что бы он мог обновить прошивку без особых напрягов.
бутлоадер в этом случае идеальный вариант — пользователю только нужно запустить программу обновления и сбросить девайс
0
это что, будет STM32MOD? ;)
0
что-то в этом роде :)
щас это заказной модуль, в планах сделать чтото что вроде STM32MOD
но я ещё не уверен, имеет ли смысл…
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.