U

АЦП STM32 + мультиплексор

6 сообщений в этой теме

Приветствую! Товарищи, требуется консультация по АЦП. Собственно процессор STM32F103RET6. Требуется проводить измерения ряда датчиков. датчики делятся на "быстрые"  - основные датчики двигателя мотора - MAP, MAF и им подобные сенсоры ,  а также медленные  - типа датчики температур (резистивные) и прочие датчики, которые медленно меняют свои значения. Собственно так как одних датчиков температур до 12 штук, то повесить всё напрямую на АЦП не выйдет, то для "медленных" каналов хочу использовать мультиплексор типа 74HC4051. Вопрос в том - как сделать вариант чтения каналов мультиплексора. В стм немного не такой АЦП как в АВР.

В AVR я делал просто  - конструкция switch, и дёргаем один канал АЦП, переключая мультиплексор,  а потом меряем остальные каналы. Для этого вызываю функцию типа adc_read в которой все эти измерения написаны. А вот в STM32, как данное реализовать что то не пойму никак. То есть измерения должны производится так

1)измеряем 12 быстрых каналов через регулярные каналы (используя DMA)

2)измеряем 13й канал к которому подключен мультиплексор ( производим 8 измерений данного канала) каждое измерение соответствует новому каналу мультиплексора) измерение производим через DMA

3)измеряем 14й канал к которому подключен мультиплексор ( производим 8 измерений данного канала) каждое измерение соответствует новому каналу мультиплексора) измерение производим через DMA

Подскажите пожалуйста, как реализовать данный функционал?

 

 

Изменено пользователем ukr823f
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну можно использовать механизм регулярных и инжектированных канлов. Регулярная группа может непрерывно опрашиваться DMA и обрабатываться как независимая группа. А инжектированный канал подключаете к мультиплексору и спокойно читаете его по необходимости, не мешая основной группе. У инжектированных каналов даже свои отдельные регистры данных (до 4-х по моему на один АЦП)

Получится ровно то, что вы задумали. Я кстати использовал мультиплексоры из серии 74HC40хх и весьма успешно. Нормально работают. Только на выходе мультиплексора поставьте повторитель на ОУ. У АЦП STM_ки УВХ емкостное и просит источника с низким выходным импедансом для более точной работы.

почитайте, будет полезно http://leoniv.livejournal.com/194681.html

и не задирайте частоту опроса без необходимости. 71,5 цикла обычно более чем достаточно

Изменено пользователем mail_robot
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, mail_robot сказал:

ну можно использовать механизм регулярных и инжектированных канлов

То есть я например два мультиплексора вешаю на два инжектированных канала и читаю их грубо говоря раз в секунду, а остальные каналы использую как регулярные через ДМА (то есть в автоматическом режиме)?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

совершенно так. Именно для этого и предусмотрены эти каналы. ЕМНИП до 4-х на один АЦП

В принципе можно вашу задачу решить и на регулярных каналах, но не так красиво. Опрос может быть как по запросам DMA, так и по софтовым запросам. Правда это не так быстро и нужен поллинг результатов. Так что это грубый и не очень хороший вариант, хотя и возможный.

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы не сказали как запускаете ацп, фри-ран или таймер. 

Я бы сделал на таймере, потому что 12-14 каналов это не более 140-150 кГц всего. (2 ацп по 860 кГц). Раскидайте 6 + МУХ на один ацп и столько же на другой. Потом к примеру ставим таймер на 100кГц, в прерывании меняем позицию МУХ-ов по обоим 13 и 14 и стартуем ацп (оба) на регулярные группы по 7. ДМА пихает в память по 7+7 (спаренный старт) штук, буффер раскидать по каналам-массивам можно в том же прерывании. Т.е. буффер для дма 7 32-битных уинт32_т.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

F
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был востановлен.   Очистить редактор

Загрузка...

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

  • Сообщения

    • Что все на коп пошли? ))  r3 поставил переменник тх регулирует от 8мА до 22 мА ...чуйка на монету 15 см хотя баланс сводил по разному (3ч просидел) сводил от 30мВ и више толку 0 ... Также  RX подключал по разному но всегда 8228Hz 0 mv хотя мд работает.... Также надеюсь ктонибуть ответит ..
    • Токовое зеркало меньше влияет на характеристики унч чем повторитель в кун, собирал 2 варианта и отслушивал разница не в пользу тз. Если ми говорим от чего больше профита.
    • А при чём здесь тема, которая где-то у вас? Здесь, на Паяльнике, эта тема о конкретном усилителе - о "торчибасе" - с 1-го поста надо было читать, а не с куска, выдернутого откуда-то из середины.  Вообще-то я не для того выкладывал эту схему(хотя это всего -лишь картинка из симулятора), чтобы кто-то её уродовал в силу своего недопонимания её нюансов. Если не понимаешь того, что даёт токовое зеркало, и нет под рукой "букваря", карандаша и клочка бумаги, чтобы посчитать - спроси  
    • кренки просадку под нагрузкой будут давать, и унч в голодании будет, кно нибуть видел чтоби в оконечник стаб ставили, всегда идет прямо с диодов вся мощ питания ни виходние транзюки или микри
    • Хотел бы получить квалифицированный совет по поводу процесса и результатов моих измерений формы цифрового сигнала. Имееются значительные базовые знания цифровой электроники но практически нулевой опыт. Есть некое цифровое(?) устройство, для которого мне хотелось бы задокументировать форму сигнала. Есть дешевый китайский тестер.
      Вначале все довольно ясно, 


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

      , а потом, что эти "пачки" чередуются полярностью. 

      потом бОльшими пачками:



      И напоследок пачки как бы чередуются с одиночными сигналами не совсем прямоугольной формы (последние 4 фото имеют один и тот же масштаб времени)




      Да и начальные импульсы строго говоря не совсем прямоугольные - верхняя часть имеет спад -- вначале было подозрение что это просто проблема с осциллографом, но потом вспомнил, что у него есть калибровочный сигнал, который не имел такой проблемы. Так как я никогда не использовал осциллограф, то полагаю, что может, что не учитываю. По идее, этот прибор должен выдавать "модифицированный прямоугольный сигнал 100Гц и длительностью сигнала 2мсек". Но мне видятся некие несоответствия для разных масштабов времени:
      почему для <= 10мсек все сигналы двуполярные а дла 20мсек чередуются полярностью?
      почему для 20мсек пачки просто чередуются, а для 50мсек группируются в бОльшие пачки одной полярности?
      почему ширина пачек для 0.2сек и для 0.5сек практически одинаковая?
      похоже ли что для некоторых 0.5сек фото пачки действительно чередуются с одиночными импульсами более растянутыми? Фактически на основании того что я вижу это не совсем цифровой сигнал, кроме того, видны множественные огрехи на разных фото. Либо
      проблема с очень простым осциллографом, либо с процессом измерения, либо (ощущение, что) сам прибор очень простой и не обеспечивает 
      качественного сигнала. А может, дело просто в том, что сигналы, организованные в пачки разной полярности, нельзя увидеть при большем разрешении времени из-за синхронизации осциллографа, установленной по уровню, но этот уровень одной полярности, так что осциллограф просто "пропускает" отрицательные пачки?