[an error occurred while processing this directive]
Все тривиально
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено =AVR= 31 августа 2006 г. 17:04
В ответ на: Расскажите. пожалуйста по подробнее о схеме подачи питания и как реализовали сброс? отправлено silqver 31 августа 2006 г. 14:56

Питание - обычное, от системного 5В через ферритовую бусину на DVDD и керамика 1 мкф на AGND. Дальше резистор 4.7 Ом на AVDD и такой же кондер на AGND. Reset заведен на ногу МК, которую дергаю перед инициализацией или по таймауту DRDY, но это не обязательно.

Запись, чтение, и инициализация такие (не знаю, для какого МК и на каком языке ты пишешь, поэтому опишу С-подобными словами):

Процедур записи две - одна 16-битная, другая 24-битная. Назовем их write_AD_16 и write_AD_24. Первая передает 16-, вторая - 24-битное слово. При аппаратном SPI это 2 или 3 байта соответственно. Принятые по SPI данные игнорируются. Обмен идет старшим битом вперед.

Процедура чтения read_AD(command,data) состоит из передачи одного байта (0х11 - команда чтения регистра данных) и приема трех байт. В первом из трех принятых байт нужно инвертировать старший бит, т.к. в этих ADшных АЦП знак перевернут. Других особенностей не имеет.

Инициализация у меня сделана так:

//Передаю подряд 32 единицы - это сброс интерфейса
write_AD_16(0xFF);
write_AD_16(0xFF);

//Настраиваю фильтр - максимальная скорость, без chop/skip/fast
//Первый байт (0x03) - команда записи в FILTREG
//Второй и третий байты (filtmax*16) - сдвинутое влево на 4 требуемое значение FILTREG (filtmax=176)
write_AD_24(0x03,filtmax*16);

//Запускаю калибровку шкалы первой пары каналов
//Первый байт (0x02) - команда записи в MODEREG
//Второй и третий байты (0xA170) - инструкция "начать калибровку шкалы"
write_AD_24(0x02,0xA170);

//Жду 30 миллисекунд (по паспорту - 28)
delayMS(30);

//Запускаю калибровку нуля первой пары каналов
//Первый байт (0x02) - команда записи в MODEREG
//Второй и третий байты (0x8170) - инструкция "начать калибровку нуля"
write_AD_24(0x02,0x8170);

//Жду 30 миллисекунд (по паспорту - 28)
delayMS(30);

//Запускаю калибровку шкалы второй пары каналов
//Первый байт (0x02) - команда записи в MODEREG
//Второй и третий байты (0xA171) - инструкция "начать калибровку шкалы"
write_AD_24(0x02,0xA171);

//Жду 30 миллисекунд (по паспорту - 28)
delayMS(30);

//Запускаю калибровку нуля второй пары каналов
//Первый байт (0x02) - команда записи в MODEREG
//Второй и третий байты (0x8171) - инструкция "начать калибровку нуля"
write_AD_24(0x02,0x8171);

//Жду 30 миллисекунд (по паспорту - 28)
delayMS(30);

//Запускаю калибровку шкалы третьй пары каналов
//Первый байт (0x02) - команда записи в MODEREG
//Второй и третий байты (0xA172) - инструкция "начать калибровку шкалы"
write_AD_24(0x02,0xA172);

//Жду 30 миллисекунд (по паспорту - 28)
delayMS(30);

//Запускаю калибровку нуля третьей пары каналов
//Первый байт (0x02) - команда записи в MODEREG
//Второй и третий байты (0x8172) - инструкция "начать калибровку нуля"
write_AD_24(0x02,0x8172);

//Жду 30 миллисекунд (по паспорту - 28)
delayMS(30);

//Перенастраиваю фильтр на нужную скорость и варианты chop/skip/fast
//Первый байт (0x03) - команда записи в FILTREG
//Второй и третий байты (filt*16+chop*4+skip*2+fast) - требуемое значение фильтра, chop/skip/fast соответственно
write_AD_24(0x03,filt*16+chop*4+skip*2+fast);

//Запускаю первое преобразование нулевого канала
//Первый байт (0x02) - команда записи в MODEREG
//Второй и третий байты (0x4170) - инструкция "начать преобразование нулевого канала"
write_AD_24(0x02,0x4170);

Вот, собственно, и вся инициализация. Чтение результатов преобразования произвожу по прерыванию от вывода DRDY следующим образом:

//Запускаю преобразование следующего канала
//Первый байт (0x02) - команда записи в MODEREG
//Второй и третий байты (0x4170+N) - инструкция "начать преобразование N-го канала", 0 <= N <= 5
write_AD_24(0x02,0x4170+N);
//Читаю регистр данных АЦП в свой буфер ADCbuf
//Передаваемый байт (0x02) - команда чтения из DATAREG
read_AD(0x11,ADCbuf);

Работает безупречно

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание