Разбираясь, какие сейчас существуют отладочные платы на базе ICE40, я обратил особое внимание на BlackIce II. Дело в том, что мне стало надоедать постоянно возиться с проводами при подключении сторонних модулей к iCEstick. Для решения этой проблемы BlackIce II имеет множество Pmod-разъемов, является совместимой с Arduino-шилдами, а также имеет распаянные 4 Мбит SRAM и разъем для подключения SD-карты. Интересно, что на плате есть не только FPGA ICE40HX4K, но и микроконтроллер STM32L433. Так получилось, что микроконтроллеры STM32 меня тоже интересуют. Было бы удобно иметь устройство «два в одном». Наконец, плата является полностью открытым проектом, и самое главное — она черная! В общем, я решил обзавестись такой.

После прочтения книжки «The Hobbyist’s Guide to the RTL-SDR» мне особенно запомнился эксперимент с RTL-SDR и генератором шума. По сути, эксперимент этот описывает, как можно использовать RTL-SDR в качестве очень дешевого анализатора спектра. В этом режиме устройство может решать задачи вроде проверки фильтров или определения частоты, на которую рассчитана антенна. Соответствующая глава книги доступна онлайн в блоге rtl-sdr.com. Здесь я коротко перескажу идею и поделюсь своими личными впечатлениями от использования RTL-SDR таким образом. Также в посте вы найдете кое-какие ссылки на дополнительные материалы. Описанные действия с тем же успехом можно повторить для HackRF, LimeSDR и других Software Defined Radio.

Bus Pirate — это широко известная в узких кругах плата от Dangerous Prototypes, предназначенная для решения большого спектра задач. Например, плату можно использовать в качестве сниффера I2C, SPI, UART и других шин. Также Bus Pirate может быть использован для получения дампа flash-памяти. А еще им можно программировать микроконтроллеры AVR через avrdude. И это не полный список. Далее будут рассмотрены примеры использования Bus Pirate, а также некоторые неочевидные тонкости работы с ним.

Некоторое время назад я прочитал в блоге hackaday.com заметку о проекте VGA1306. Некто господин Dan O’Shea (@uXeBoy) решил сделать адаптер, преобразующий сигнал к OLED-экранчикам на базе SSD1306 в VGA-сигнал, и использовал для этого FPGA серии ICE40. Просто берем любой существующий код, работающий с крохотными дисплеем 0.96", и выводим его на монитор с диагональю, скажем, 24". В силу пропорций изображения 128x64, без внесения искажений мы сможем использовать только 17.3″ монитора, но все равно очень круто. В общем, идея мне так понравилась, что я решил попробовать повторить проект. К счастью, автор любезно согласился поделиться исходниками.

Ранее в заметке Микроконтроллеры STM32: работа с экранчиком 1602 по I2C мы научились выводить текст на HD44780-совместимый ЖК-индикатор с I2C-адаптером на базе чипа PCF8574. Эти индикаторы хороши тем, что они не дороги, имеют подсветку и позволяют выводить крупный текст. Но при этом они не могут похвастаться большой скоростью перерисовки, широким углом обзора, или возможностью выводить графическую информацию. Плюс к этому, они довольно громоздки, что в определенных задачах может быть неудобно. Поэтому сегодня мы поговорим о популярных OLED-дисплеях на базе чипа SSD1306, лишенных названных недостатков.

Текстовые ЖК-дисплеи с I2C-адапетором являются крайне популярными устройствами среди любителей электроники. Да и в массово производимой технике, от кофе-машин до 3D-принтеров, такие дисплеи встречаются нередко. На AliExpress устройство можно купить за 100 рублей (1.75$) — дешевле вы найдете разве что этот же экранчик без I2C или семисегментные индикаторы. Давайте же разберемся, как подружить такой дисплей с микроконтроллером STM32.

Логический анализатор — это устройство, похожее на осциллограф. В отличие от осциллографа, логический анализатор предназначен для работы только с цифровыми сигналами, но никак не аналоговыми. При прочих равных логический анализатор скорее всего будет дешевле осциллографа и предлагать больше каналов. В рамках этой заметки мы познакомимся с довольно нетипичным логическим анализатором SUMP2 от Black Mesa Labs. Нетипичен он тем, что представляет собой конфигурацию для iCEstick и запускаемую на компьютере клиентскую часть, написанную на Python 3.

Благодаря заметке Микроконтроллеры STM32: работа с внешним EEPROM мы научились работать с внешней EEPROM-памятью с I2C-интерфейсом. Сегодня же мы научимся использовать флеш-память с SPI-интерфейсом на примере популярных чипов AT45DBxx. Существуют разные модификации этих чипов, отличающиеся в основном объемом памяти. При написании этой заметки я использовал AT45DB161E объемом 16 Мбит (2 Мб). Но, по идее, все описанное ниже справедливо и для других чипов этой серии.

Одно из традиционных развлечений с FPGA заключается в генерации видео-сигнала для VGA-мониторов. В этой заметке будет рассмотрено решение этой задачи на примере платы iCEstick и открытого стека разработки под нее в лице проекта IceStorm. Если у вас нет iCEstick, но есть другая плата на базе FPGA серии ICE40 от Lattice, например, TinyFPGA B2 или Nandland Go Board, они тоже подойдут и потребуют внесения минимальных изменений в коде проекта. Также сгодятся платы на базе других FPGA, однако они потребуют внесения более существенных изменений в код, особенно в части, касающейся PLL. Кроме того, потребуется установка соответствующего проприетарного ПО, например, Quartus для FPGA от Intel / Altera или Vivado для устройств производства Xilinx.

Одна из проблем с микроконтроллерами STM32 заключается в том, что большинство из них не имеют встроенного EEPROM. Исключением являются только микроконтроллеры серий STM32L0 и STM32L1 с ультра низким энергопотреблением. Это довольно странно после работы с AVR, где EEPROM есть у всех микроконтроллеров. Существует несколько решений, но в рамках этой заметки мы рассмотрим самое очевидное — использование внешнего EEPROM на примере чипа с I2C-интерфейсом 24LC64.