Archive

Archive for the ‘stm32’ Category

How to use sprintf function in stm32f4xx firmware

02.12.2013 1 comment

Sometimes you need to implement pretty output to USART. This task can be solved in two ways:

  • Write your own converters from int or double to char*
  • Use sprintf and printf

Second way is better. I will use sprintf(str, ...) and write simple loop that will send str byte-by-byte to USART.

I use mac os x + eclipse + arm-none-eabi + openocd + stm32f4discovery.
Let’s start implementing this.
Read more…

arm-none-eabi-gdb – Segmentation fault: 11 – b 2

07.11.2013 Leave a comment

UPD 14.10.13: This is a bug of GDB. It is already known and fixed.

Terry Guo: The gdb 7.4.1.20130913 in this release has some problem to decode DWARF debug information generated by -g3 option. For the time being, please recompile your project with -g or -g2 to work around this issue.

——-

I am trying to program stm32f303vct6 core on stm32f3discovery board via Eclipse+arm-none-eabi-gdb+openOCD. Source for this stm32 can be built with no errors. I use GNU Tools for ARM Embedded Processors. Also it can be uploaded to MCU. But there are some troubles with debugging: gdb can’t read symbols from the firmware. This means that there will be no breakpoints in code. It is awful.

No symbol file

No symbol file

Read more…

STM32F103ZET6 Dev board – Программирование контроллера

03.10.2011 2 comments

Сегодня будет самое интересное. А именно, заливка прошивки в эту девайсину. Китайские ребята из openmcu.com постарались и сделали на плате возможность программирования через UART. Эта прекрасная новость означает, что покупать JTAG-программатор ULINK за 50 баксов нет необходимости. Хотя это вещь полезная и в хозяйстве пригодится.

Давайте теперь зальем  контроллер измененную прошивку, которая выводит на экран адрес этого сайта (argrento.org). Последовательность действий такова:

Read more…

STM32F103ZET6 Dev board – Содержимое диска

03.10.2011 8 comments

Открываю я почтовый ящик, а там заветный желтоватый листок бумажки – моя посылка прилетела.

Честно говоря, я думал, что эта платка летела ко мне из США. Однако, нет: из Гонконга. Ну да ладно, страна-производитель мне не важна, лишь бы устройство работало. И устройство работает, качество пайки хорошее, всё держится крепко.

Read more…

4. Регистры для резервного копирования (BKP)

11.09.2011 3 comments

4.1 Введение в BKP

Резервные регистры – это 10 16-битных регистров в устройствах с низкой и средней емкостью или 42 регистра в устройствах с высокой емкостью. Соответственно, резервные регистры могут хранить в себе 20 или 84 байта данных соответственно.

Эти регистры расположены в резервном домене (backup domain), который запитывается от выхода VBAT, в случае отключения питания на VDD. Эти регистры не сбрасываются ни после выхода контроллера из режима ожидания, ни после сброса.

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

После сброса доступ к регистрам заблокирован и резервный домен закрыт от возможной паразитной записи. Для разблокировки доступа к регистрам необходимо произвести следующие действия:

  1. Включить тактирование интерфейсов питания и резервного копирования за счет устанвки битов PWREN и BKPEN в регистре RCC_APB1ENR.
  2. Установить бит DBP в регистре управления питанием PWR_CR для разблокировки доступа к резервным регистрам и часам реального времени.

Read more…

Глава 3. Управление питанием

04.07.2011 2 comments

3.1 Источники питания

Для нормальной работы контроллеру необходимо от 2.0 до 3.6 вольт (VDD). Встроенный регулятор обеспечивает 1.8 V для питания ядра.

Часы реального времени (RTC) и регистры для резервного сохранения информации могут быть отдельно запитаны от VBAT, когда питание на  VDDотключено.

Рис. 1 Схема питания

Рис. 1 Схема питания

Read more…

2. Модуль подсчета CRC

01.07.2011 2 comments

2.1 Введение в CRC

CRC (Cyclic redundancy code – циклический избыточный код) используется для получения контрольной суммы 32-битного слова с помощью двоичного многочлена 0x04C11DB7.

Подсчет CRC обычно используется для проверки корректности передачи-приема данных. В соответствие со стандартом EN/IEC 60335-1 CRC может использоваться для проверки целостности содержимого флеш-памяти. Контрольная сумма программы в контроллере считается во время его работы, а потом сравнивается с контрольной суммой, которая была подсчитана во время линковки. Read more…