Внешний АЦП AD7091R

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Бубоник
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс авг 16, 2015 13:08:53

Re: Внешний АЦП AD7091R

Сообщение Бубоник »

Нет. Я имею ввиду числа 0x800 и 0xС01.
Реклама
Aviator_93
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср мар 26, 2014 17:33:08

Re: Внешний АЦП AD7091R

Сообщение Aviator_93 »

Бубоник писал(а):Нет. Я имею ввиду числа 0x800 и 0xС01.
Я что-то не пойму, что здесь нужно включать...

0x800 это, просто команда чтения регистра Channel, без каких либо включений.
Согласно даташиту:

Изображение

Первые 10 бит не используются
11 бит отвечает за запись или за чтение (в нашем случае это чтение и он равен 0)
с 12 по 16 бит это адрес читаемого регистра

Вот и получается: адрес регистра Channel 0х1
00001 0 0000000000 -> 0x800

А команда 0хC01 это команда записи в регистр, так же без всяких там включений

Изображение

Первые 10 бит это данные для записи
11 бит отвечает за запись или за чтение (в нашем случае это запись и он равен 1)
с 12 по 16 бит это адрес читаемого регистра

Так же и получается: адрес регистра Channel 0х1
00001 1 0000000001 -> 0xC01

Сначала запрашиваем данные с 0 канала, командой 0xC01, а потом с 1 канала, командой 0xC02.

И насколько я понимаю, если бы я ошибся с чтением данных, то они бы и не приходили...

А у меня проблема, то что, АЦП выдает нулевые значения на каналах, в то время, когда там есть напряжение...
Реклама
Бубоник
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс авг 16, 2015 13:08:53

Re: Внешний АЦП AD7091R

Сообщение Бубоник »

А ну да запутался я немного с этим ацп, все правильно, только есть одно но, сначала надо отправить команду записи, а потом сделать команду чтения. Своего рода должно получится так

Код: Выделить всё

   adc[0] = AD7091_WtiteData(CONVERT_ON, 0xC01);
   result = AD7091_ReadData(0x800);
   adc[1] = AD7091_WtiteData(CONVERT_ON, 0xC02);
   result = AD7091_ReadData(0x1000);

Aviator_93
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср мар 26, 2014 17:33:08

Re: Внешний АЦП AD7091R

Сообщение Aviator_93 »

Никак мне не подружиться с этой железкой :kill:
Вот документация, согласно, которой я все делаю (вторая схема, 56 рисунок)

Изображение

Если я все так понимаю: у меня два канала и с них нужно получить данные
Как представлено выше, для получения данных, нужно отправить 4 команды:
1 - записать в регистр Channel, о том что измерение идет на 0 канале
2 - записать в регистр Channel, о том что измерение идет на 1 канале
3 - при отправке данных, в ответ должно прийти значение ацп на 0 канале
4 - при отправке данных, в ответ должно прийти значение ацп на 1 канале

Вот, происходит отправка данных:

Изображение

Он мне данные присылает, вот:

Изображение

Но присылает, нулевое значение ацп, т. е. почему то он ничего не измерил, зато данные разбил по каналам, как это и нужно:
в adc[2] данные о 0 канале
в adc[3] данные о 1 канале

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

Изображение
Реклама
Эиком - электронные компоненты и радиодетали
Бубоник
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс авг 16, 2015 13:08:53

Re: Внешний АЦП AD7091R

Сообщение Бубоник »

А почему у вас на осцилограмме SCLK все время задран на единице? когда данные не передаются, у него же в документации вроде нарисованно SCLK в нормальном состоянии 0 там стоять должен. И да чтобы исключить косяк со SPI, при работе на одном канале, при максимальном напряжении на входе ацп какое значение он присылает?
Реклама
Aviator_93
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср мар 26, 2014 17:33:08

Re: Внешний АЦП AD7091R

Сообщение Aviator_93 »

Дык, на одном канале он работает, с этими настройками. Вот он присылает значение 2465
Получается: 5/4096*2465=3,009
Да, все правильно, все как выше на фотках.
А весь геммор начинается, когда перебираешь несколько каналов. Врезультате, ни на том канале нету данных, ни на этом
Реклама
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Внешний АЦП AD7091R

Сообщение Albert_V »

Бубоник правильно сказал про SCLK.
AD7091 защёлкивает данные по фронту, а по спаду - сдвигает регистр.
Сделайте как сказано в документации.
Aviator_93
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср мар 26, 2014 17:33:08

Re: Внешний АЦП AD7091R

Сообщение Aviator_93 »

Albert_V писал(а):AD7091 защёлкивает данные по фронту, а по спаду - сдвигает регистр.
Если верить даташиту на железку, то ему все равно когда сдвигать регистр, там лишь разница по какому фронту данные отправлять и принимать....

Изображение

Не суть важно, можно и так сделать

Изображение

Проблема все та же, но заметил одну штуку:
Запускаю отладку, за первый проход получаю вот такие значения

Изображение

Дальше, перезапускаю отладку, на второй раз опять те же самые данные как и в первый раз.

Перезапускаю отладку в третий раз и тут данные немножко другие:

Изображение

И все, сколько не перезапускай отладку, он шлет данные, как и в последний раз...

Ради интереса, решил проверить первый способ опроса каналов (55 рисунок):

Изображение

И тоже ничего хорошего, записал регистр в регистр Channel значение 0xF0
А он мне в очередной раз, не то что нужно шлет...

Изображение

Где-то есть косяк, но никак не могу разобраться где...
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Внешний АЦП AD7091R

Сообщение Albert_V »

Возможно я у вас не увидел, но делаете ли вы при старте программы POWER-ON DEVICE INITIALIZATION AD7091R?
Изображение

Так же, обратите внимание на:
Изображение
Aviator_93
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср мар 26, 2014 17:33:08

Re: Внешний АЦП AD7091R

Сообщение Aviator_93 »

Всем большое спасибо за помощь. Вот он косяк-то, линия CONVERT подключена через оптопару к АЦПшке, а я про оптопару и забыл, и на прямую подавал сигнал. При данном подключение, сигнал проходя через оптопару инвертируется и получается не то что нужно...
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Внешний АЦП AD7091R

Сообщение Albert_V »

[uquote="Aviator_93",url="/forum/viewtopic.php?p=3271736#p3271736"]...а я про оптопару и забыл...[/uquote]Юморист вы :))
Поздравляю что разобрались.
:beer:
Ответить

Вернуться в «Периферия»