Посты

  • STM32 → CRC (подсчёт контрольной суммы)

    Во всех микроконтроллерах STM32 есть модуль CRC, с помощью которого можно вычислить контрольную сумму любого набора данных.

    Внутри модуля реализован аппаратный калькулятор контрольной суммы по алгоритму CRC-32, который применяется в том числе в Ethernet, MPEG-2, PNG и POSIX.

    Любой CRC-калькулятор устроен как сдвиговый регистр из N штук триггеров, охваченный несколькими цепями обратной связи, и его можно описать как двоичное число длиной N, в котором каждый единичный бит говорит, что перед этим регистром стоит XOR с обратной связью. Точно так же можно составить и полином со степенями X.

    Конкретно в STM32 значение N = 32, и применяется полином вида X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 + X^8 + X^7 + X^5 + X^4 + X^2 + X + 1, который можно записать в виде 0x4C11DB7.

    Использование модуля CRC

    Модуль CRC в STM32 для программиста — это главным образом один регистр DR, в который вы кладёте входные данные (словами по 32 бита), и в конце забираете вычисленное значение контрольной суммы. В любой момент, читая этот регистр — вы читаете текущее значение CRC, вычисленное для уже поступивших данных.

    Регистр данных по умолчанию (после включения) инициализирован значением 0xFFFFFFFF. Модуль можно полностью сбросить записью 1 в регистр CRC->CR, эта единица сбросится сама, а во внутреннее состояние конвеера вновь запишется 0xFFFFFFFF — можно вычислять контрольную сумму новой порции данных.

  • Анбоксинг и обзор STM32F746G-Discovery — новой отладочной платы от ST

    Итак, у меня есть самая топовая плата STM32F746G-Discovery с процессором новой серии F7, и это — первый в России обзор этой платы. Её пока нет ни у кого больше.

    packed

    Плата приехала в обычном пластмассовом кейсе, как и все другие платы Дискавери. Сбоку есть краткий перечень её фич:

    • Процессор STM32F746NGH6 — TFBGA-216, 216 мегагерц и 462 DMIPS.
    • Самый новый программатор/отладчик ST-Link/V2.1, которого раньше не было ни в одной Дискавери.
    • WQVGA TFT ЖК-дисплей диагональю 4.3 дюйма и ёмкостным тач-скрином
    • 128 Мбит SDRAM (из них доступно только 64) и 128 Мбит Flash, подключенная по Quad-SPI
    • Поддержка S/PDIF, стоит крутой аудиокодек и два MEMS-микрофона
    • 3 USB-порта (порт программатора, USB-FS и USB-HS)
    • Гнездо microSD карты
    • Аудио вход и выход
    • Колодка пинов, совместимая с Ардуино
    • MIPI-порт камеры
    • RJ-45 Ethernet
  • Блог наладил контакты с ST Microelectronics

    SONY DSC

    28 июля я побывал в московском офисе ST Microelectronics.

     

    В первую очередь, конечно, меня интересовали микроконтроллеры STM32, но ещё мы затронули тему MEMS, силовых транзисторов и радиомодулей.

  • Консольный программатор ST-Link_Utility-CLI

    В комплекте поставки программатора ST-Link есть не только графическая утилита ST-Link Utility, но и консольная программа ST-LINK_CLI.exe. Она даёт возможность автоматизировать процесс прошивки МК, что крайне полезно если плат много (десятки или сотни).

    Я написал простейший скрипт. Он принимает путь к файлу прошивки (в параметрах командной строки) и прошивает его в микроконтроллер STM32. После этого он ждёт нажатия любой клавиши чтобы запустить процесс заново — нажимаете любую клавишу чтобы прошить следующий девайс, либо закрываете консоль чтобы закончить.

    :start
    "C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe" -P %1 0x08000000
    pause
    goto start

    Только проверьте правильность пути до вашего ST-Link Utility.

    1. Подключаете первую плату с STM32 к программатору ST-Link.
    2. Копируете текст в любой текстовый редактор (лучше в Блокнот), сохраняете его как файл с расширением .bat (например programmer.bat), перетаскиваете на этот файл свой файл прошивки (.bin), и всё — он записывается внутрь микроконтроллера.
    3. После завершения записи подключаете следующую плату, нажимаете любую клавишу — она тоже прошивается, и так далее.

    programmer

    Это простейший вариант, но его можно расширить, например, до полностью автоматического программатора с обратной связью — с «железной» кнопкой начала программирования и светодиодами статуса.

    При желании можно добавить команду подключения к STM32 с определёнными параметрами:

    "C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe" -c SWD SWCLK=0 UR LPM -p %1 0x08000000

    В этом примере я увеличил скорость SWD до 4МГц, но эффективность этого способа мала — очень много времени (несколько секунд) уходит на подключение. Первый вариант был быстрее — около 1-2 секунд на плату.

  • RFID-ридер с экранчиком на STM32

    Мы уже умеем использовать знакосинтезирующий ЖК-экран WH1602 и RFID-ридер SL-030. Настало время соединить их вместе, и сделать простую и полезную штуку — ридер RFID-карт с экранчиком.

    У ридера есть специальный выход OUT, на котором появляется ноль всякий раз, когда он обнаруживает карту. Сразу после этого можно послать ему запрос на чтение номера — сделаем это в EXTI прерывании.

    wh1602-rfid

    В остальном код очень прост и по сути является суммой тех двух примеров.

subscribe via RSS