-
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 pryanic
Доброго времени суток. Понадобилось разобраться с АЦП. Основной материал использовал Евстифеева (микроконтроллеры семейства мега) и учебный курс Di-Halt.
На первый раз задача простая - обработать напряжение с переменного резистора и послать по UART в терминал. С терминалом уже кое-что делал, так что тут вряд ли косяк есть.
Кратко опишу программу: каждую секунду в обработчике прерывания таймера (не совсем точно, прерывание по переполнению Т0) запускаю преобразование АЦП установкой в 1 бита ADSC.
В обработчике прерывания АЦП читаю байт ADCH (выравнивание по левому краю ADLAR=1) и шлю по уарт. Но в терминал приходят одни FF независимо от положения движка потенциометра (подключен к PC1 средним контактом, крайними на землю и AVCC)
ADC_test.zip
-
By dav1977
Кто-нибудь запускал скоростные АЦП AD7606(последовательного приближения)
в последовательном режиме считывания данных ?,
из 4 шт одна заработала, остальные на выводе последовательного вывода DOUT ничего не выдают постоянно 0.
пробовал переключаться с внутренним опорным источником(выдает 2.49), и с внешним без разницы.
Может у них есть какая то очередность включения?
-
By dommax
Распродаю остатки радиодеталей.
Для удобного поиска написал WEB страничку http://detali.syremo.com.ua/
Количество может не совпадать. Пишите - отвечу. Договоримся...
Отправляю только по Украине. Перед отправкой смогу сделать фото.
-
By maxssau
День добрый!
Сегодня хотелось бы раcсказать о своей разработке - АЦП AD-01 на преобразователе от Cirrus Logic CS5381.
Целью данной разработки было получение близких к даташитным параметрам характеристики АЦП, при этом плату имеющeю не высокую стоимость и универсальность.
На данный момент это уже третья версия платы. Первая версия была сделана ЛУТом, для отработки схемотехники АЦП. Далее последовала вторая версия на заводских платах:
Схемотехника была взята полностью из даташитов. Стандартное включение CS5381, стабилизаторы питания в цифровой части AMS1117-3.3, в аналоговой из серии TPS7A.
Схемотехника входного буфера взята из даташита на OPA1632.
После опробования данной платы, были выявлены некоторые недочеты и разработана третья версия версия:
Входной буфер сделан для 2х вариантов: с конденсатором и без, для чего на ПП предусмотрены соответствующие площадки.
Топология такого буфера позволяет без переделок проводить замеры/запись как балансного сигнала так и не балансного, достаточно вывод 3 посадить на землю (2). Это достаточно удобно, для различных типов сигнала достаточно иметь 2 пары кабелей с различной распайкой.
Питание аналоговой части сделано на малошумящих стабилизатора TPS7A4901 и TPS7A3001.
Питание цифровой части на 2х AMS1117-3.3В, схему нет смысла приводить, она из даташита на стабилизаторы.
На плате всего 1 генератор на 512fs (24.576 Мгц). Такая частота выбрана не случайно, для работы SPDIF передатчика необходимо иметь частоту мастерклока не ниже 256fs для работы на частоте 96к, я использую передатчик на WM8805 (о этой плате чуть ниже). В качестве интерфейса на компьютере я использую ЗК E-MU 0404 PCIe.
Полная схема преобразователя:
На плате присутствует место под DIP переключатель, для настройки режимов работы АЦП. Выход АЦП - I2S, уровни 3.3В.
Для соединения с компьютером была разработана плата SPDIF интерфейса SI-01.
Схему приводить особого смысла нет, она повторяет даташитную для WM8805 включенным в HW режиме. В этом режиме есть определенные ограничения, связанные с работой PLL, поэтому максимальная частота приёма/передачи ограничена в 96к. WM8805 позволяет работать как в Master режиме, так и в Slave, что очень удобно. Выбор режима осуществляется установкой джампера. Так же на плате присутствуют джамперы выбора питания, от ЦАП или АЦП. В качестве выходного буфера для передатчика используется 1G125.
Шумовая полка:
В качестве источника питания пара трансформаторов с стабилизаторами 317/337, даже имея ёмкости в 10000 мкФ полностью подавть 50Гц и гармоники пока не удалось, возможно проблема в корпусе и компоновке.
Замер моего ЦАПа на 4490, к сожалению не обошлось без земляных петель, поэтому присутствует шум на уровне -125дБ и ниже.
Есть определенные особенности применения ИМС CS5381, скупо описанные в App Notes, позволяющие реализовать данную ИМС в двойном моно и теоретическим уровнем THD+N в -123дБ, что позволит производить оценку и замеры искажений у большинства современных ИМС ЦАП без режекторов.
В проекте плата с 2мя генераторам на сетки частот 44.1 кГц и 48 кГц, АЦП включенным в моно режимах и DSP процессором ADAU1452.
Подробную инструкцию с описание на текущую схемы и платы прикладываю.
инструкция.pdf
-