I2S (Inter-IC Sound) — это цифровой протокол передачи звука, который довольно часто используется в современной электронике. I2S не имеет ничего общего с I2C кроме похожего названия, поэтому важно эти протоколы не путать. В рамках поста мы постараемся разобраться, на что вообще похож I2S, и как с ним работать.
Вы могли обратить внимание, что до сих пор при изучении микроконтроллеров STM32 мы как-то обходились исключительно синхронным кодом. Это может неплохо работать для игрушечных примеров, но при попытке написать что-то действительно полезное без прерываний и таймеров далеко не уедешь. Так что, пришла пора научиться с ними работать. Должен предупредить, что статья вышла довольно длинной, поскольку тема непростая.
Я много слышал про библиотеку NumPy, что дескать в ней есть много полезных математических функций, или что-то в этом роде. Однако какой-то практической задачи, где был бы нужен NumPy, мне как-то не подворачивалось, и потому большого интереса изучать данную библиотеку у меня не было. Потом я заинтересовался Software Defined Radio, и, как следствие, цифровой обработкой сигналов. И вот тут иногда возникает желание по-быстрому поиграться в REPL, скажем, с быстрым преобразованием Фурье (Fast Fourier Transform, FFT) или чем-то таким. Оказалось, что это задача как раз для NumPy. Поэтому было решено разобраться в возможностях этой библиотеки как следует, выяснив заодно, что в ней еще есть помимо FFT.
В одном из видео на канале OpenTechLab рассказывалось о плате под названием Alinx AN108. Плата предназначена для использования совместно с FPGA. Она объединяет в себе АЦП на базе чипа AD9280 (8 bit, 32 Msps, даташит [PDF]), а также ЦАП на базе AD9708 (8 bit, 100 Msps, даташит [PDF]). Цена устройства составляет около 20$, на eBay его можно найти по запросу «fpga ad da». Плата показалась мне довольно интересной. Поэтому я решил обзавестись такой же и повторить эксперименты из видео.
Микроскоп может быть весьма полезен в хозяйстве, например, при пайке мелких электронных компонентов. На том же eBay доступно немало самых разных моделей, как цифровых, так и полностью аналоговых, в ценовом диапазоне от 19$ до 145 000$. Мне микроскоп не то, чтобы был сильно нужен, но попробовать поработать с каким-нибудь микроскопом хотелось. Поэтому я заказал самый дешевый USB-микроскоп, какой смог найти. На самом деле, это устройство больше напоминает веб-камеру со встроенной лупой, чем микроскоп.
HydraBus — это открытый проект, представляющий собой небольшую отладочную плату на базе микроконтроллера STM32F415RGT6. HydraBus отдаленно напоминает Bus Pirate, только последний использует вместо STM32 микроконтроллер PIC24. Давайте же попробуем выяснить, что умеет HydraBus, и вообще, нужен ли он нам с вами.
Ранее в посте Микроконтроллеры AVR: пример работы с часами реального времени DS1302 отмечалось, что DS1302 было бы довольно глупо использовать с микроконтроллерами STM32, так как у них есть встроенные часы реального времени. Давайте же попробуем разобраться, как происходит работа с этими встроенными RTC, и что они умеют.
Народная мудрость гласит, что правильно сделать шифрование в своем приложении крайне непросто. Свой велосипед почти наверняка будет содержать крайне неочевидные простому смертному дефекты, которые последние 20 лет исправлялись в существующих криптографических пакетах. Поэтому в любой непонятной ситуации нужно использовать готовые наработки, такие, как OpenSSL, LibreSSL, GPG или OTR. Но что делать, если для вашей конкретной задачи нет готового решения? Например, вы реализуете шифрование на уровне страниц для вашей СУБД, или вам нужно шифровать короткие сообщения, передаваемые с помощью NRF24L01 в самопальном IoT-проекте. В данном случае у вас действительно может не быть большого выбора. Но, по крайней мере, вы можете уменьшить шанс появления существенных дефектов в вашем приложении, используя проверенные временем алгоритмы и режимы шифрования.
Если вы читали пост Знакомимся с Sigrok и логическим анализатором DSLogic, то помните, что для Sigrok можно писать декодеры протоколов (protocol decoders, в документации к Sigrok часто используется сокращение PD) на Python. Однако в посте ничего не говорится о том, как их, собственно, писать. Пришло время заполнить этот пробел.
Некоторое время назад мы познакомились с цветными TFT-дисплеями на базе контроллера ST7735. Дисплеи эти весьма неплохи, но не лишены недостатков. В частности, максимальная диагональ таких дисплеев составляет 1.8 дюйма, а разрешение ограничено 128x160 пикселями, что может подходить не для всех проектов. Поэтому сегодня речь пойдет о TFT-дисплеях на базе ILI9341, имеющих среди прочих преимуществ больший размер и большее разрешение.