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

Народ, кто-нибудь работал с этими АЦП? Вроде все банально, обычный SPI, но по какой-то причине не запускается.. Вроде все в соответствии с описанием делаю, прямо печаль какая-то.. Если есть проверенный алгоритм работы, напишите пожалуйста. Завтра осциллограммы выложу, может поможете разобраться.
спасибо!
А собственно что не получается?
Не отвечает? Или непонятно что отвечает?
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)
MrYuran
Jun 25 2008, 08:42
Может, не надо CS дёргать?
С тактированием АЦП всё в порядке?
Здравствуйте.
Может "вырезка" в приложении Вам пригодится.
Нажмите для просмотра прикрепленного файла
Изменил режим работы SPI(инвертированный клок, активный по falling edge), вроде что-то стало появляться на выходе. Но: код подозрительно стабильный, даже младшие биты не дергаются.. Как мне проверить правильность измерений? CODE*Vref/2^24 ? или один бит идет на знак и надо брать 2^23? АЦП подключен так: VDD=5V, +Vref=2.5V, -Vref-=GND
что значит строчка в ДШ?
Differential Input Voltage Ranges = ±REFIN
REFIN = REFIN(+) − REFIN(−)
т.е при подключении +Vref=2.5V, -Vref=GND диапазон входных измерениу +/-2,5В и MSB является знаковым битом, так?
Из приведенного Вами участке программы следует, что регистр режима установлен по умолчанию. Следовательно, преобразование осуществляется в биполярном режиме, т.е.
"... 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-.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.