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

 
 
> AD778x
ysb
сообщение Jun 24 2008, 18:09
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-11-05
Пользователь №: 10 436



Народ, кто-нибудь работал с этими АЦП? Вроде все банально, обычный SPI, но по какой-то причине не запускается.. Вроде все в соответствии с описанием делаю, прямо печаль какая-то.. Если есть проверенный алгоритм работы, напишите пожалуйста. Завтра осциллограммы выложу, может поможете разобраться.

спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Уриман
сообщение Jun 24 2008, 20:59
Сообщение #2





Группа: Участник
Сообщений: 13
Регистрация: 27-05-08
Из: Россия, Краснодарский край, г. Геленджик
Пользователь №: 37 848



Цитата(ysb @ Jun 24 2008, 22:09) *
Народ, кто-нибудь работал с этими АЦП? Вроде все банально, обычный SPI, но по какой-то причине не запускается.. Вроде все в соответствии с описанием делаю, прямо печаль какая-то.. Если есть проверенный алгоритм работы, напишите пожалуйста. Завтра осциллограммы выложу, может поможете разобраться.

спасибо!


А собственно что не получается?
Не отвечает? Или непонятно что отвечает?


--------------------
Per Aspera Ad Astra!!!
Go to the top of the page
 
+Quote Post
ysb
сообщение Jun 25 2008, 07:27
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-11-05
Пользователь №: 10 436



void Read_ADC(void) //AD7789
{
unsigned a,b,c;
ADC_sel = 0; //CS ADC
while (ADC_BUSY); //RDY=0
spi(0xFF);
spi(0xFF);
spi(0xFF); //Reset ADC
spi(0xFF);
while (ADC_BUSY);
spi(0x38); //Continuous converstion mode
a=spi(0x00);
b=spi(0x00);
c=spi(0x00);
ADC_sel = 1;
}

вот диаграмма из ДШ
Прикрепленное изображение


Делаем ему reset. Непонятно, что значит повышение напряжения на 0,5В на линии MISO и почему на этой линии устанавливается 1 после 30 тактов(ресет происходит по 1 на линии MOSI в течение 32 тактов)
Прикрепленное изображение


Записываем 0x38 в communication register и читаем 3 байта данных. Все единицы. Если после записи в регистр поставить while (ADC_BUSY), то он там и остается, т.е. 0 там не устанавливается вообще.
Прикрепленное изображение


сигналы: clock(yellow), MOSI(blue), MISO(purple), CS(green)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 25 2008, 08:42
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Может, не надо CS дёргать?
С тактированием АЦП всё в порядке?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
akl
сообщение Jun 25 2008, 09:15
Сообщение #5


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

Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773



Здравствуйте.
Может "вырезка" в приложении Вам пригодится.
Прикрепленный файл  AD7788.zip ( 13.5 килобайт ) Кол-во скачиваний: 118
Go to the top of the page
 
+Quote Post
ysb
сообщение Jun 25 2008, 09:55
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-11-05
Пользователь №: 10 436



Изменил режим работы SPI(инвертированный клок, активный по falling edge), вроде что-то стало появляться на выходе. Но: код подозрительно стабильный, даже младшие биты не дергаются.. Как мне проверить правильность измерений? CODE*Vref/2^24 ? или один бит идет на знак и надо брать 2^23? АЦП подключен так: VDD=5V, +Vref=2.5V, -Vref-=GND
Go to the top of the page
 
+Quote Post
ysb
сообщение Jun 25 2008, 12:25
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-11-05
Пользователь №: 10 436



что значит строчка в ДШ?
Differential Input Voltage Ranges = ±REFIN
REFIN = REFIN(+) − REFIN(−)

т.е при подключении +Vref=2.5V, -Vref=GND диапазон входных измерениу +/-2,5В и MSB является знаковым битом, так?
Go to the top of the page
 
+Quote Post
akl
сообщение Jun 25 2008, 15:08
Сообщение #8


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

Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773



Из приведенного Вами участке программы следует, что регистр режима установлен по умолчанию. Следовательно, преобразование осуществляется в биполярном режиме, т.е.

"... the output code is offset binary with a negative full-scale voltage resulting in a code of 000...000, a zero differential input voltage resulting in a code of 100...000, and a positive full-scale input voltage resulting in a code of 111...111. The output code for any analog input voltage can be represented as
Code = 2N – 1 × [(AIN/VREF) + 1]
where: AIN is the analog input voltage. N = 16 for the AD7788, 24 for the AD7789."

Для проверки попробуйте осуществить преобразование в режимах короткого замыкания и монитора питания, т.к. неясно что подается на входы AIN+ и AIN-.
Go to the top of the page
 
+Quote Post
ysb
сообщение Jun 26 2008, 08:05
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-11-05
Пользователь №: 10 436



akl, спасибо за помощь!!
Go to the top of the page
 
+Quote Post

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

 


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


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