Jump to content
gc986

Одновременная Работа С Несколькими Каналами Adc

Recommended Posts

Есть чип NXP LPC1788. Есть пример программы где в начале происходит инициализация второго канала, далее в цикле происходит обращение к функции считывания (ADC) данных с порта, но при считывании номер канала не указывается(по умолчанию информация забирается из инициализированного канала), отсюда вопрос - можно ли одновременно работать с несколькими каналами или каждый раз придётся перенастраивать систему на новый канал?

(хочется одновременно работать со всеми)

Share this post


Link to post
Share on other sites

Читайте документацию, сколько в контроллере АЦП и на сколько каналов они мультиплексируются. Каждый АЦП может одновременно работать только с одним входом, остальные каналы "оторваны" от него.

Share this post


Link to post
Share on other sites

при считывании номер канала не указывается(по умолчанию информация забирается из инициализированного канала), отсюда вопрос

Какие могут быть вопросы, после своего же ответа?

Share this post


Link to post
Share on other sites

Руководство для разработчика приложений на базе STM32WB55

Представив двухъядерные беспроводные микроконтроллеры STM32WB для IoT-приложений, компания STMicroelectronics предлагает разработчикам экосистему, включающую в себя отладочные платы, примеры кода для микроконтроллера, готовое ПО всех уровней и большой массив документации.

Читать статью

при считывании номер канала не указывается(по умолчанию информация забирается из инициализированного канала), отсюда вопрос

Какие могут быть вопросы, после своего же ответа?

Но это же не круто! Я реализовал приложение в котором циклично перебирается два канала, каждый раз происходит перенастройка на новый канал, в результате производительность падает. Это нормальная практика или я что-то не правильно делаю?

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By artos5
      Приветствую всех на этом форуме!
      Есть необходимость измерять сигнал при помощи данного АЦП. С помощью этого АЦП можно измерять 4 аналоговых не дифференциальных сигнала . Схема следующая:
      Schematic_Temp_opto_sens_V2_20190817124112.pdf
      Картинками с более низким разрешением:
      библиотеку за основу взял эту:
      https://github.com/nsaspook/nidaq700/blob/master/supermoon/example/ADS1220.c
      Путем незначительного допиливания, получилась такая библиотека:
       
      Поправил только эти функции:
      void ADS1220SendByte(unsigned char Byte) { unsigned char Result = 0x01, i=0, flg=0; MOSI_LO; Delay_us(1); for(i=0;i<8;i++) { SCK_LO; //ADC_CLK=0 Delay_us(4); if (flg) MOSI_LO; Delay_us(1); SCK_HI; //ADC_CLK=1 Delay_us(1); if (Byte&Result){ MOSI_HI; flg=1; } else MOSI_LO; Delay_us(4); Result<<=1; } SCK_LO; //ADC_CLK=0 } unsigned char ADS1220ReceiveByte(void) { unsigned char Result = 0, i=0; for(i=0;i<8;i++) { Result<<=1; SCK_LO; //ADC_CLK=0 Delay_us(5); //Delay_us(5); SCK_HI; //ADC_CLK=1 Delay_us(3); if (MISO) Result++; Delay_us(2); } SCK_LO; //ADC_CLK=0 return Result; } И добавил эту функцию:
      void ADS1220Config_MUX_GAIN(uint8_t mux, uint8_t gain) { unsigned Temp; ADS1220ReadRegister(ADS1220_0_REGISTER, 0x01, &Temp); // clear prev value; Temp &= 0x0f; Temp |= gain; Temp |= mux; // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_0_REGISTER, 0x01, &Temp); ADS1220ReadRegister(ADS1220_1_REGISTER, 0x01, &Temp); // clear prev DataRate code; Temp &= 0x1f; Temp |= (ADS1220_DR_600 + ADS1220_CC); // Set default start mode to 600sps and continuous conversions // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_1_REGISTER, 0x01, &Temp); } ADS1220.h :
      в результате получаю такую осциллограмму :

      То есть , постоянно считывается 0.
      А вот регистры конфигурации:
      Задаю номер входа MUX и усиление :
       

       
      Читаю данные так:
      ADS1220Config_MUX_GAIN(ADS1220_MUX_0_G, ADS1220_GAIN_1); HAL_Delay(10); temp_[0] = ADS1220ReadData(); Это для 0 канала. 
      Пробовал и так:
      ADS1220SetChannel(ADS1220_MUX_0_G); ADS1220SetGain(ADS1220_GAIN_1); temp_[0] = ADS1220ReadData(); Результат аналогичный. Кто что подскажет? Может кто заметит какой косяк в коде? Уже голова дымит ..
    • By maxssau
      Продам адаптеры USB-I2S. 

       
      Возможности:
       
      стерео ввод/вывод PCM 16-32 бита, 44.1-384 кГц. Ввода DSD нет, как и драйверов для ввода DSD.
      вывод DSD в режиме DoP 64-128, в режиме Native 64-256. Native доступен в Linux без "хитрых" драйверов.
      Тактирование от платы ЦАП/АЦП, частоты 512 fs (22.5792/24.576 МГц). Теоретически возможно и 1024fs(скорости 768кГц и DSD512 Native), но это не опробовано.
      Гальваническая изоляция на Si8662/Si8640.
      Питание возможно как Self так и Bus Powered. В режиме Bus Powered необходимо самостоятельно позаботиться о мастерклоке, т.к. возможны сильные глюки при выключенном генераторе мастерклока.
       
      Тема: 
      срок изготовления 3-5 недель (сильно зависит от поставок процессоров).
      На данный момент полностью реализован интерфейс Legacy. Для отладки Native режима пока нет платы ЦАП, в процессе разработки, будет не раньше осени.
      Цена 6000 + пересылка (в среднем 250 р.).
    • By pryanic
      Доброго времени суток. Понадобилось разобраться с АЦП.  Основной материал использовал Евстифеева (микроконтроллеры семейства мега) и учебный курс Di-Halt.
      На первый раз задача простая - обработать напряжение с переменного резистора и послать по UART в терминал. С терминалом уже кое-что делал, так что тут вряд ли косяк есть.
      Кратко опишу программу: каждую секунду в обработчике прерывания таймера (не совсем точно, прерывание по переполнению Т0) запускаю преобразование АЦП установкой в 1 бита ADSC. 
      В обработчике прерывания АЦП читаю байт ADCH (выравнивание по левому краю ADLAR=1) и шлю по уарт. Но в терминал приходят одни FF независимо от положения движка потенциометра (подключен к PC1 средним контактом, крайними на землю и AVCC)
       
       
      ADC_test.zip
    • By Kirill Lubinets
      Дано: отладочная плата STM32F303VC, индукционный датчик.

      Доброго времени суток, суть моего проекта в  детектировании вибраций(ударов) при помощи аналогового датчика.
      Код отслеживания удара написан, но я не пойму то ли я ошибся с алгоритмом его работы то ли не правильно сконфигурировал отладочную плату.

      Информация по датчику.
      Индукционный датчик удара, шок сенсор, Arduino может использоваться в проектах на микроконтроллерах (в т.ч. Arduino), в которых нужно следить за уровнем вибрации или подобных механических возмущений. Принцип действия датчика основан на электромагнитной индукции. Движущийся стальной, ферритовый или магнитный сердечник относительно катушки создает в катушке ЭДС, подходящую по амплитуде ударного воздействия на систему. Чувствительный элемент датчика установлен в прозрачный пластиковый параллелепипед для защиты от действий внешней среды.
      Для использования датчика нужно подключить его к Arduino контроллеру или другому микропроцессорному управляющему устройству, подать питание, создать программу для работы с датчиком или использовать готовое решение. На корпусе датчика есть два отверстия, с помощью которых можно жестко закрепить датчик на плоской поверхности. В состоянии покоя напряжение на выходе из датчика около 5 В, при возмущении напряжение на датчике падает пропорционально силе возмущения.
      Индукционный датчик удара, шок сенсор, Arduino имеет один 3-контактный разъем для подключения к контроллеру и питания:
      контакт обозначенный «–» – общий контакт;
      средний контакт – напряжение питания;
      контакт S – аналоговый выходной сигнал датчика.
      Датчик может питаться как от Arduino контроллера (другого микропроцессорного управляющего устройства), так и от внешнего источника питания. Напряжение питания 3,3 – 5 вольт постоянного тока.
      Характеристики:
      принцип действия: индукционный;
      выходной сигнал: аналоговый;
      напряжение питания: 3,3 – 5 вольт постоянного тока;
      размеры: 30 х 18 х 11;
      вес: 2 г.
      Shock.7z
    • By Vladimir1960
      Помогите передать данные ADC по SMS.
      UART.zip
  • Сообщения

    • Explay Hit 3g(универсальный) 71х98мм   ----  толщина какая?   Эти батареи для минусовых температур годятся (до -10) ?
    • ес я правильно понял - вы завели питание с моста - посрединке- между кондеров  она вообще не правильно разведена - у вас и будут такие горки по питанию
    • только ПСИХИАТРУ про ЭТО не говори ... сразу рученьки за спинкой свяжут ... "Голоса и звуки" - это уже не шутка ... 
    • чуть задерживается эт дело, собрал светильник - позже скину в корпусах и правильный расчет обмотки с кондером тоже - извиняюсь за не достоверную инфу) , вынес мне немного мозг- по своей не опытности в основном , расчет выше на 12 вольт - по факту выскочило 30 - не обратил на это внимание сразу - пожог пару МС и транзисторов - почему такое расхождение с расчетом - подскажите ? .на фото ослик с нагрузкой 3 А - напряжение холостого на стоке 460 вольт , можно еще чуть увеличить сопротивление затвора и убавить - не стал и проводить опыты тоже  - нет времени, греется кстати намного меньше с расчетной обмоткой,  пока занят - к концу недели - по времени - соберем зарядку )
    • а с кошельком? хватит ли на мастера ... Если "хочу сам" - потом выйдет дороже ... ремонт после ремонта ... Твоя дружба с паяльником - годится тазики лудить, а тут - только сделаешь хуже ... Хорошая акустика - не жмись на специалиста ... тогда она еще поживет ... ремонт не так и дорог.
    • так и расскажешь на приемке АСЦ ....
    • Заказал и получил еще партию. Из наличия + остатки :     Аккумулятор 8000mAh, 14.8Wh Explay sQuad 3G 116х159х3,5мм. 235₽ шт.     наличие  8шт. Explay Cinema TV 105х138мм 6000мА/ч. 170₽ шт.   наличие  4 шт. 84х103,5мм 4000мА/ч 10шт./ 120₽     наличие  10 шт Explay Hit 3g(универсальный) 71х98мм 2800мА/ч  60₽ шт.  наличие  около 150 шт. 63*39*5мм1000mA/Ч 3,6V /75₽    наличие 5шт BT60-21 7.4V 2800мА/ч. . Размеры с корпусом-69х198х29мм. Внутри два акк. 2800мА/ч_3,7V, размерами по 160х29х6мм. Плата BMS + PCM  150₽ шт.   наличие  9шт
×
×
  • Create New...