Подключение встроенного модуля токового драйвера FPGA серии iCE5 (iCE40 Ultra)

В микросхеме iCE5LP2K есть встроенные токовые драйвера для светодиодов. Три канала слаботочных, с ограничением тока от 4 до 24 мА с шагом в 4 мА (настраивается статически) и один канал посильнее, от 50 до 500 мА с шагом в 50 мА.

На его примере и расскажу, как здесь, а может, и не только здесь, подключаются встроенные в микросхему блоки.


Читать дальше

"Идеальный" триггер

Хочу поделиться с решением, которое я назвал «идеальный триггер». Всем известен RS-триггер. И его запрещенное состояние, когда на оба входа одновременно подается активный уровень. На выходе в этом случае также будут активные уровни. Если со входов также одновременно снять активный уровень, то на выходах будет неопределенный результат. Это запрещенное состояние инженеры того времени так и не смогли решить. И обошли эту проблему созданием новых видов триггеров. D-триггер и JK-триггер.


Читать дальше

Настройка PLL FPGA серии iCE5 (iCE40 Ultra) в среде iCEcube2

Как и в любом уважающем себя FPGA, рассчитанном на достаточно высокое быстродействие, в iCE5LP2K есть один модуль PLL, и, скорее всего, он понадобится. Продолжим же с него. На самом деле, микросхема эта не настолько уж и шустрая, не дотягивает даже до уровня первого циклона (Altera Cyclone I).

Я провёл мини-тест, запускал моргалку светодиода на разных частотах.
  • 96 МГц: предупреждений нет, моргает нормально;
  • 120 МГц: есть предупреждения о превышениях временных порогов на каких-то путях, но ещё работает, сбоев в моргании нет;
  • 130 МГц: есть предупреждения, моргает со сбоями и зависаниями, всё плохо.
  • 150 МГц: есть предупреждения, не работает ничего, светодиод просто не включается.
Синтезатор не требует файла с временными ограничениями на сигналы и позволяет собрать даже нерабочий вариант. Файл ограничений, кстати, добавить можно.
То есть даже собранный правильный код не означает, что он будет работать. Думаю, более простая схема, без такого километрового счётчика, работала бы и на более высокой частоте, чем эта моргалка.

Читать дальше

Создание проекта для iCE5 (iCE40 Ultra) в среде iCEcube2

Есть такая фирма Lattice, которая производит микросхемы FPGA (некоторые из них тут продаются, некоторые — фиг). Самое интересное их отличительное качество — размер. Например, серия iCE5 (iCE40 Ultra), имеет вариант корпуса QFN48 7х7мм:
STM32F303 + ice5 Development Board
Вторая микросхема — это stm32f303. Сама плата: STM32F303 + ice5 Development Board. iCE5LP4K не удалось найти, потому поставили iCE5LP2K, да и слот под sd-карты решили не паять.


Читать дальше

SpriteMods.com топик-ссылка

Тут коллега Sprite выкладывает свои наработки. Некоторые весьма интересны и даже полезны. Ну и видео в конце каждой статейки.

Ковыряясь в старой литературе.

Недавно перебирал старый хлам и наткнулся на одну полезную книжку. Раньше, это еще в прошлом столетии, она была довольно популярна в среде радиолюбителей. Но на сегодня уже существует масса различных компьютерных программ для различных расчетов. Интернет, так же изобилует различными онлайн калькуляторами. Но тем не менее бумажный формат имеет свои достоинства.

Книга называется. Номограммы для радиолюбителей.

Конечно многое уже ненужно, так как устарело. Но все же, может кому пригодится. Кому надо, ниже ZIP архив.

Оболочка для прошивки серийных устройств

По итогам двух лет работы с предыдущей версией программы сделал я новую версию ПО, переписанную, практически, с нуля (внутренние механизмы заметно изменились).



Читать дальше

RTT с помощью OpenOCD (без J-Link и без софта от Segger)

Фирменный софт от Segger, разработчика программаторов J-Link, имеет одну очень удобную функцию, а именно терминал реального времени — Real Time Terminal (RTT) (есть информация на русском и пример использования). Вещь удобная, позволяет получить терминал до МК прямо во время отладки по SWD. По скорости и функционалу превосходит Semihosting и вывод информации через пин SWO. И хотя идея не оригинальна (например, до недавнего времени что-то подобное было в в составе набора утилит stlink utils от Texane), реализация оказалась удачной и удобной для использования. Поддерживаются все МК ARM Cortex-M. Жирный минус — привязка к недешёвым программаторам J-Link и к их фирменному софту. И если первая проблема уже давно решается покупкой клона или превращением ST-Link в J-Link OB, то вторая до недавнего времени не имела решений — или используй фирменный софт и бойся, что он залочит клон, или забудь об RTT. Но решение появилось: проект открытого отладчика для чипов OpenOCD (Open On-Chip Debugger) уже несколько лет поддерживает программаторы J-Link (без проблем работает прошивка и отладка), а в марте в репозитории проекта OpenOCD появился патч от Marc Schink, добавляющий поддержку RTT. Более того — вещь получилась универсальная, работает даже с другими SWD программаторами (я тестировал с ST-Link). И хотя патч ещё не включён основную ветку OpenOCD, ничто не мешает нам его попробовать.

Тестирование будем проводить на Linux (но можно повторить и на других ОС), программаторы J-Link-OB-072 и ST-Link-v1.

Читать дальше

CMSIS-DAP на STM32F4Discovery

Тут уже лет 5 назад упоминали о таком, но мало ли. CMSIS-DAP какой-то канонный опенсорсный интерфейс отладки от ARM для кортексов на базе протокола USB HID. Т.е. не привязанный к конкретному производителю контроллеров и не требующий драйвера.
Более мощная версия этой штуки (со всякими балалайками, типа популярной нынче прошивки через MSD, или USB-UART) развивается mbedом и называется DAPLink.





Читать дальше

Кухонный таймер



Вступление

(можно не читать).
Достаточно часто на кухне надо следить за длительностью какой-нибудь операции или процесса. Например, чайничек поставили наливаться или макарошки вариться, или мясо в духовку ваша ненаглядная поставила. И вроде бы все хорошо, но стоит зазеваться(или засидеться в интернете), как чайник перельется, макароны переварятся или что еще хуже – мясо в духовке подгорит!
Для решения данного вопроса был приобретен механический таймер в виде яйца. И, в общем, он был неплох — места не занимает, звенит громко. Но спустя полгода таймер начал куда-то спешить. Да прилично так. Заводишь его на час, а он уже минут через 40 звенит. В общем не порядок! Немного подумав и посмотрев на готовые варианты, все-таки решил сделать свой кухонный таймер.

Требования

Требования были к нему достаточно простые:
  • Электронное управление
  • ЖК-индикация
  • Звуковая сигнализация
  • Компактность
  • Низкое энергопотребление
  • Измерение температуры (ну, как же без нее :-))



Читать дальше