реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> AD7738 как ее правильно сконфигурировать
Pat
сообщение Nov 23 2006, 20:29
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Уважаемые, что то совсем впал в уныние с AD7738.
Подключил ее к SSC интерфейсу AT91SAM7S256.
Конфигурирую ее.
Устанавливаю частоту выборки 8500 Гц
Устанавливаю режим преобразования “Continuous Conversion Mode”
Включаю первый канал
Устанавливаю режим непрерывного чтения. Continuous Read mode
Даю команду чтения первого канала.

После этого на выходе готовности данных RDY появляются импульсы.
Так и должно быть, ну а дальше совсем все плохо.
По отрицательному импульсу RDY читаю данные.
По описанию (да и по опыту с AD7705) во время чтения данных на входе RDY должен установится высокий уровень. НО этого не происходит, высокий уровень устанавливается только при очередном внутреннем преобразовании.
На последовательном выходе данных постоянно висит 0.

Все сигналы уже проверил сотню раз вроде все нормально.
Уж и не знаю, на что грешить, может у кого есть пример инициализации данной микросхемы.
Буду очень благодарен.
Go to the top of the page
 
+Quote Post
DS
сообщение Nov 23 2006, 20:37
Сообщение #2


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



DI должен быть в 0 во время операции чтения. В DUMP еще добавляется впереди байт состояния канала. Если читаете по байтно и CS дергается во время чтоения - смотрите внимательно га временные диаграммы. Если CLK в момент переключения CS не соответствует диаграмме, команда сбрасывается.

И еще - RDY в DUMP mode сбрасывается после чтения регистра статуса, а не сразу.

Подробнее напишите, что Вы пишите в АЦП.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Nov 23 2006, 21:11
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(DS @ Nov 23 2006, 19:37) *
DI должен быть в 0 во время операции чтения. В DUMP еще добавляется впереди байт состояния канала.

DI во время чтения постоянно равен 0
Режим DUMP не включен (да и включал его результат тот же)

Цитата(DS @ Nov 23 2006, 19:37) *
Если читаете по байтно и CS дергается во время чтения - смотрите внимательно га временные диаграммы. Если CLK в момент переключения CS не соответствует диаграмме, команда сбрасывается.


Вначале дергал CS при доступе. Сейчас для чистоты эксперимента он всегда равен 0

Цитата(DS @ Nov 23 2006, 19:37) *
Подробнее напишите, что Вы пишите в АЦП.


// Сбрасываем АЦП
reset_AD7738();

// Устанавливаем на входе CS = 0 (AD7738 )
pa_pin_clear(TF);

// Задержка
Sleep(50);

// Устанавливаем входное напряжение от 0 до 2.5 В
// Включаем первый канал
write_reg((COMM_REG | (CH_SETUP_REG | CH0)),(P_25V | ENABLE_CH));

// Задержка
Sleep(50);

// Устанавливаем частоту преобразования с Chop Enable Bit.
write_reg((COMM_REG | (CH_TIME_REG | CH0)),0x84);

// Задержка
Sleep(50);

// Устанавливаем MODE регистр
// Continuous Conversion Mode
// Continuous Read mode
write_reg(0x38,0x24);

// Производим первоначальное чтение канала 1
write_reg(0x48,0x00);

От всех этих манипуляций впечатление такое что на запись все работатет
По крайней мере на выходе RDY появляются импулься.
Причем если записать другое значение в TIME регистр то частота этих импульсов меняется
и она равна расчетной частоте.
Вот чтение никак не хочет работать
Go to the top of the page
 
+Quote Post
DS
сообщение Nov 23 2006, 21:23
Сообщение #4


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



А что подразумевается под write_reg(0x48,0x00) - Ведь надо записать 0х48, потом выдать еще 16/24 clkов при 0 на DI.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Nov 23 2006, 21:55
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(DS @ Nov 23 2006, 20:23) *
А что подразумевается под write_reg(0x48,0x00) - Ведь надо записать 0х48, потом выдать еще 16/24 clkов при 0 на DI.


Может в этом и причина.
Дело в том что я записываю вначале 0х48 потом 0х00.
После чего жду следующего RDY и считываю 16 бит данных
Спасибо за наводку.
Завтра проверю на работе
Go to the top of the page
 
+Quote Post
Roma_te
сообщение Dec 8 2006, 21:47
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 13-12-05
Из: Украина, Тернополь
Пользователь №: 12 161



Цитата(Pat @ Nov 23 2006, 22:55) *
Может в этом и причина.

Как успехи (У меня очень похожая проблема)? Напишите удалось запустить и в чем причина...
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 9 2006, 09:36
Сообщение #7


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Конкретно в чем проблема ?


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Dec 10 2006, 14:22
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(DS @ Dec 9 2006, 08:36) *
Конкретно в чем проблема ?


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

Пришол к выводу что по какой то причине не работатет мультиплексор.


Пока прекратил дальнейшие исследования (чего то не могу купить второй AD7738 чтобы проверить).

По ходу вопрос не было ли у вас такой беды как не работающий мультиплексор?
Может конечно сам что не так делаю, но очень много беспокойства с этоим АЦП у меня вышло?
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 10 2006, 18:08
Сообщение #9


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Не наблюдал никаих глюков с коммутатором. Вряд ли один коммутатор сгорел, так что все остальное работает. Скорее все запрограммировано так, что имеется - переполнение.
Что у Вас запрограммировано - дифференциальные входы или нет. Если нет, то что с режимом AINCOM ?
Опишите напряжения на входах и режимы АЦП и коммутутора(регистры I/O и channel setup), что в channel status (бит переполнения случайно не 1 ?) , так не угадать, что не правильно.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Pat
сообщение Dec 17 2006, 13:37
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Извиняюсь, уезжал на неделю.

Цитата(DS @ Dec 10 2006, 17:08) *
Не наблюдал никаих глюков с коммутатором. Вряд ли один коммутатор сгорел, так что все остальное работает. Скорее все запрограммировано так, что имеется - переполнение.
Что у Вас запрограммировано - дифференциальные входы или нет. Если нет, то что с режимом AINCOM ?
Опишите напряжения на входах и режимы АЦП и коммутутора(регистры I/O и channel setup), что в channel status (бит переполнения случайно не 1 ?) , так не угадать, что не правильно.


Попробую описать настройку АЦП по порядку
1) Подаю на вход RESET лог. 0 где то 200 мС задержки и снова 1
2) В в регистре Channel SETUP для канала 0 устанавливаю
биты RNG0 – RNG2 для входного напряжения от 0 до 2.5В
бит ENABLE = 1 (вроде для однократного преобразования его устанавливать не надо, но в любом случае пробовал и без него результат был тот же)
биты COM1 COM2 равны 0 то есть вход канала 0 относительно AINCOM
В цифрах получается, что в регистр по адресу 0х28 заносим 0х0D

Все остальные регистры по умолчанию после сброса.

Далее произвожу однократное измерение канала 0 в MODE регистр (0x38) записываю 0x40.
Жду низкого уровня на RDY после чего читаю регистр данных канала 0 (последовательность 0x48 0x00 0x00)

Теперь о входах
Вход AINCOM сидит на земле на вход канала 0 ( да на другие каналы тоже) подавал напряжения от 0 до +2В. В регистре данных был 0.

Регистр Channel Status читал не всегда но когда читал бит OVR был равен 0

Просьба если можно выложить, как вы производите настройку этого АЦП.

Что то я с ним совсем замучился.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 18 2006, 09:50
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Может, дело в том, что нужно установить бит 5 в регистре I/O (Adress 01h), чтобы вывод AINCOM сконфигурировать, как аналоговый вход?

Цитата
РЕГИСТР ПОРТА ВВОДА-ВЫВОДА (I/O Port Register)
8 бит, чтение/запись, Адрес 01h, начальное значение 30h + входное значение х 40h
Биты этого регистра используются для определения и конфигурирования вывода I/O.
[attachment=8782:attachment]
Go to the top of the page
 
+Quote Post
Pat
сообщение Dec 18 2006, 18:46
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Цитата(Herz @ Dec 18 2006, 08:50) *
Может, дело в том, что нужно установить бит 5 в регистре I/O (Adress 01h), чтобы вывод AINCOM сконфигурировать, как аналоговый вход?


Так это понятно, но он же по сбросу дожен быть установлен в 1.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 18 2006, 19:01
Сообщение #13


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Pat @ Dec 18 2006, 17:46) *
Цитата(Herz @ Dec 18 2006, 08:50) *

Может, дело в том, что нужно установить бит 5 в регистре I/O (Adress 01h), чтобы вывод AINCOM сконфигурировать, как аналоговый вход?


Так это понятно, но он же по сбросу дожен быть установлен в 1.


Да, действительно, не на тот посмотрел.

Сообщение отредактировал Herz - Dec 18 2006, 19:03
Go to the top of the page
 
+Quote Post
DS
сообщение Dec 18 2006, 21:20
Сообщение #14


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



0 нельзя подавать, минимальное напряжение 0.2 вольта. Я пользую от 0.5 для верности, может в этом дело. На входы можно подавать от 0.2 до 4.7 вольта.
По логике Вы все верно делаете, если только с CS не производится неправильных манипуляций.
Если после записи режима RDY идет вверх, потом через положенное время обратно, то управление правильное.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 18 2006, 22:04
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(DS @ Dec 18 2006, 20:20) *
0 нельзя подавать, минимальное напряжение 0.2 вольта. Я пользую от 0.5 для верности, может в этом дело. На входы можно подавать от 0.2 до 4.7 вольта.

Почему нельзя? Где об этом сказано? Очень странно...
Спецификация приведена только для:
Цитата
(–40C to +105C, AVDD = 5 V  5%, DVDD = 2.7 V to 3.6 V or 5 V  5%,
REFIN(+) = 2.5 V, REFIN(–) = 0 V, AINCOM = 2.5 V, MUXOUT(+) = ADCIN(+), MUXOUT(–) = ADCIN(–), Internal Buffer ON, AIN Range = 1.25 V,
fMCLK = 6.144 MHz; unless otherwise noted.)


Сообщение отредактировал Herz - Dec 18 2006, 22:07
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01505 секунд с 7
ELECTRONIX ©2004-2016