Рубрика «adc»

Доброго времени суток. В этом посте я расскажу, как мне удалось заставить STM32F407VET6 измерять аналоговые сигналы в указанные моменты времени с помощью DMA.

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

Для упрощения и ограничения задачи условимся, что

  • мы знаем точные моменты времени, когда необходимо измерять сигнал;

  • из предыдущего пункта также ясно, сколько измерений должно быть произведено;

  • разница по времени между двумя последовательными измерениями может быть любой;

  • Читать полностью »

Некоторое время назад автор этих строк взялся разрабатывать компактный регистратор одно-полярного аналогового сигнала в пределах 3 вольт с максимально возможной скоростью считывания и минимально возможными затратами и размерами. В список минимально возможных затрат я вписал также и свою головную боль и выбрал хорошо знакомый мне STM32F303. Это, напомню, Cortex-M4 на 72 мегагерца от известной компании, со встроенными 12 разрядными, довольно шустрыми, аналого-цифровыми преобразователями (АЦП или ADC, кому как нравится) и с CAN интерфейсом на борту.

Таких небольших регистраторов требовалось несколько десятков. А наличие у микроконтроллера корпуса о 48-ми ногах вселяло надежду на то, что получится назвать этот считыватель компактным. Интерфейс CAN, с которым у меня уже тогда были хорошие отношения, давал мне возможность объединить весь этот джаз в достаточно удобной манере.

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

Однако, некоторый осадок остался. Осталась мысль, что, в отношении быстродействия, выжато было не все.

И вот, совсем недавно появляется серия STM32G4 с тактовой частотой до 170 мегагерц с вариантом в маленьком корпусе, и с почти такими же шустрыми АЦП на борту в количестве пяти штук. Надо было что-то делать.

Читать полностью »

У меня как-то исторически не сложилось с семейством STM32F030, лет 5 назад попробовал поработать с ними и долго удивлялся корявости работы большей части периферии, а потом забил на них. И вот на днях мне все таки пришлось вернуться к данной серии, нужно было измерять за минимальные деньги постоянное напряжение на свинцовом АКБ (или сборке до 4 штук последовательно) от 8 до 60В с точностью не хуже ±0.1В с небольшой частотой опроса.

Решение задачи «в лоб» позволило достаточно точно измерять напряжение только когда на входе АЦП значение больше 1,5...1,6В, то есть только во второй половине диапазона, что для меня означало 30...60В вместо требуемых 8...60В. Основная проблема была в интервале 0...1.6В, выглядело это все как будто у меня делитель напряжения «плавал» или опорное напряжение для АЦП (Vref) было крайне нестабильным.

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

Управляем генератором или борьба с АЦП в STM32F030 - 1
Читать полностью »

Когда в 2013 году Analog Devices выпустила SDR трансивер AD9361 — случилась настоящая революция в цифровой радиосвязи. SDR были и раньше, но теперь в одном чипе можно было получить все: 2 канала на прием и 2 на передачу (с набортными 12-бит ЦАП и АЦП) с шириной канала до 56МГц, локальные генераторы и радиотракт — для работы в диапазоне от 70 (на передачу от 47) до 6000Мгц. На AD9361 «из коробки» можно реализовать почти любой цифровой приемопередатчик, за исключением наверное только UWB и начинающего набирать популярность диапазона 60ГГц (но там без аппаратной многоэлементной ФАР все равно делать почти нечего). Остается лишь добавить источник/приемник данных (пока это обычно FPGA), внешние фильтры и LNA/PA, если задача того требует.

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

Внутренности SDR чипа AD9361 — когда микроэлектроника выгоднее наркоторговли - 1Читать полностью »

Продолжаем цикл про основы работы STM32MXCube и программированию микроконтроллеров STM32.
Часть 1.
Часть 2.
Начинаем работать в STM32CubeMX. Часть 3 - 1
В прошлых частях мы освоили базовые настройки микроконтроллера, работу с GPIO, таймером, DMA и DAC. В этой части мы познакомимся с ADC и USB.

Читать полностью »

Революция в радиотехнике? RF-ARM-FPGA SoC - 1
Компания Xilinx тихо и без лишней помпы анонсировала продукт, который может полностью изменить облик и процесс разработки современных радиоприемников и передатчиков. Это маленькая микросхема, которая объединяет 90% вопросов обработки и формирования радиосигналов:

  • программируемая логика (FPGA),
  • процессоры для обработки сигналов и пользовательских приложений (два ARM’а),
  • до восьми 12-разрядных АЦП с верхней частотой до 4 ГГц (!),
  • до восьми 14-разрядных ЦАП с верхней частотой до 6.4 ГГц (!).

Кажется мы входим в эпоху, когда архитектура трансивера становится такой же универсальной, как архитектура современного ПК. Make SW, not HW!
Читать полностью »

Подключение АЦП к ПЛИС. Особенности, сложности, реализация - 1

Всем привет! В данной статье речь пойдет о подключении микросхем АЦП к кристаллам ПЛИС. Будут рассмотрены основные особенности соединения узлов схем, представлены современные АЦП и их характеристики. В статье будут даны практические советы по быстрому и правильному подключению АЦП к ПЛИС с минимальными временными затратами. Кроме того, речь пойдет о принципах подключения тех или иных АЦП, будет рассмотрен входной буфер ПЛИС и его базовые компоненты – триггеры, узлы задержки IODELAY, сериализаторы ISERDES и т.д. Более детально с примерами программного кода на языке VHDL будет проведен обзор основных элементов, требуемых для качественного приёма данных от АЦП. Это входной буфер, узел упаковки данных для одноканальных и многоканальных систем, модуль синхронизации и передачи данных на базе FIFO, узел программирования АЦП по интерфейсу SPI, узел синтеза частоты данных – MMCM/PLL. Также в статье будет представлен обзор законченных устройств (в стандарте FMC) от ведущих зарубежных и отечественных производителей аналоговых и цифровых схем. В конце статьи вы найдете ссылку на исходные коды универсального узла приёмника данных от многоканальных схем АЦП. Код простой и гибкий в конфигурировании, он представлен на языке VHDL и заточен на микросхемы ПЛИС Xilinx 7 серии и выше, но может быть применен и в других кристаллах ПЛИС.
Читать полностью »

Джиттер это дрожание фронта тактового сигнала. Чем меньше джиттер тем лучше. Большой джиттер ухудшает параметры АЦП, ухудшает трассировку ПЛИС. Однако есть ситуации когда джиттер полезен. Например его можно использовать при автоматической подстройке тактовой частоты.
Читать полностью »

Azure Service Fabric: вторые шаги - 1

Снова Чарли Чаплин на фабрике в фильме «Новые времена»

Продолжаем разговор про Azure Service Fabric. В предыдущей статье я упомянул о планах написать сначала про stateful сервисы, а затем уже перейти к модели акторов в ASF. Концепция изменилась — подумалось мне, что неплохо бы для примеров использовать если уж не production-решение, то что-то близкое, чтобы была теоретическая польза и практический смысл. Можно объединить все компоненты ASF в одном флаконе — чтобы и корованы набигали, и лунапарк, и Винни-Пух и все-все-все. Вот с такими мыслями я и пошел на кладбище домашних проектов в поисках кандидата на оживление.

Читать полностью »

Эта статья описывает библиотеку MRAA, которая может существенно упростить работу с различными типами устройств, использующими:

  • аналоговый ввод;
  • цифровой ввод и вывод;
  • широтно-импульсную модуляцию (ШИМ);
  • двухпроводную шину I2C;
  • Universal Asynchronous Receiver-Transmitter (UART);
  • прерывания при изменении уровня входного сигнала.

Библиотека MRAA для работы с платами Intel Edison и Intel Galileo - 1
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js