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

 
 
> проблемы с микроосхемой AD9833
Denaruga
сообщение Oct 9 2007, 12:08
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 9-10-07
Пользователь №: 31 193



Есть проблемы с микросхемой AD9833.
Микросхему подключил к контроллеру, связь наладил (слова загружаются), в качестве основного генератора использовал генератор на 25МГц (сигнал в принципе хороший, на осцилографе смотрел).
Хочу получить меандр на выходе. Для этого загружаю слова:
2128 6E14 451E 8000 8000 C000 E000 2028 чтобы получить 2МГц или
2128 570A 428F 8000 8000 C000 E000 2028 чтобы получить 1МГц, так же пробовал и другие частоты.
Коды брал с сайта http://www.analog.com/Analog_Root/static/t...334/ad9833.html.
В итоге на осциллографе вижу что получается меандр, но у этого меандра не стабильное время высокого уровня сигнала, т.е. оно постоянно, то увеличивается, то уменьшается. На частоте 1МГц изменение длительности высокого уровня сигнала составляло порядка 40нс, через каждую секунду, но период при этом оставался одним и тем же. С увеличением частоты выходного сигнала, все становиться еще хуже - фронты уже становиться не фронтами, а ступеньками. На частоте 10МГц меандр уже разглядеть сложно. Собирал несколько различных схем, менял микросхемы, менял генераторы ничего не помогло - результат такой же.
Подскажите, кто работал с этой микросхемой, как сделать правильный меандр?
Может я код неверный подаю или эта такая особененость микросхемы?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
yura-w
сообщение Oct 9 2007, 19:09
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 305
Регистрация: 22-06-07
Из: Санкт-Петербург
Пользователь №: 28 617



Цитата(Denaruga @ Oct 9 2007, 16:08) *
Есть проблемы с микросхемой AD9833.
Микросхему подключил к контроллеру, связь наладил (слова загружаются), в качестве основного генератора использовал генератор на 25МГц ...изменение длительности высокого уровня сигнала составляло порядка 40нс

по-моему задача в данном случае не решаема:
25Мгц=>скорость выборки dds из пзу,т.е 40нс - которые вы видите, и от этой погрешности никуда не уйти!
(поставите генератор по-больше -"погрешность" просто уменьшится, но никуда не уйдет. надо другой dds)

http://www.analog.com.ru/pub_wireless.htm
Go to the top of the page
 
+Quote Post
Denaruga
сообщение Oct 10 2007, 03:04
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 9-10-07
Пользователь №: 31 193



Спасибо за ответ,
тогда может быть кто-нибудь подскажет dds с хорошими фазавыми характеристиками, т.е. для меня важно чтобы импульсы формируемого меандра были стабильными, максимальная частота 2МГц.
Go to the top of the page
 
+Quote Post
yura-w
сообщение Oct 10 2007, 04:19
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 305
Регистрация: 22-06-07
Из: Санкт-Петербург
Пользователь №: 28 617



Цитата(Denaruga @ Oct 10 2007, 07:04) *
важно чтобы импульсы формируемого меандра были стабильными, максимальная частота 2МГц.

посмотрите если:
поставите генератор например на 20МГц(я у себя ставил и на 40, но это превышение datasheet),
то скорее всего получите красивые меандры, но только с частотами f=20MГц/(2*n). где n= 1,2,3...,
в том чисте получите 2МГц
Go to the top of the page
 
+Quote Post
khach
сообщение Oct 10 2007, 06:57
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



А причем тут сигнал на выходе микросхемы? Там будет рваный ступенчатый сигнал. После DDS надо ставить аналоговый ФНЧ с частотой среза чуть меньше половины тактовой. На выходе ФНЧ получим синус с нужной частотой. Потом ставим аналоговый компаратор и уже на его выходе получаем требуемый меандр. Смотрите аппноты на старшие DDS AD59хх- там это подробно разжевано и компаратор быстрый в сруктуру микросхемы DDS встроен.
А в режиме MSB на выходе оно и будет дергаться плюс-минус период клока, в даташите же написано - "This is useful as a coarse clock source." Это переносимо на килогерцах, а на мегагерцах-ну незнаю.. такой огромный джиттер....
Go to the top of the page
 
+Quote Post
Denaruga
сообщение Oct 11 2007, 03:27
Сообщение #6





Группа: Новичок
Сообщений: 5
Регистрация: 9-10-07
Пользователь №: 31 193



Спасибо за ответы
Go to the top of the page
 
+Quote Post
dim99
сообщение Dec 2 2010, 09:18
Сообщение #7


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Работаю с ad9833.
Подключил к atmega 8535, по SPI отправляю настроечные слова.
К ad9833 подключен генератор 16 Mhz. Данные, тики и уровни идут правильно - согласно datasheet.

Генерирует sin и меандр.
Треугольник так и не получилось настроить - в теории все работает при задании control_bit[1] = 1

Откопал чудо application note - взял из него пример, поигрался с частотами, но работает все через раз и максимально возможной частоты не показывает, все в пределе 1-10 кГц.

Кто сталкивался с данной микросхемой, какие могут быть идеи насчет правильной настройки?

привожу настроечное слово и код отправки по SPI
Код
// // app note
Write16SPI(0x2100);
Write16SPI(0x50C7);
Write16SPI(0x40F0);
Write16SPI(0xC000);
Write16SPI(0x2000);


Код
// синус
Write16SPI(0x2128);
Write16SPI(0x6E14);
Write16SPI(0x451E);
Write16SPI(0x8000);
Write16SPI(0x8000);
Write16SPI(0xC000);
Write16SPI(0xE000);
Write16SPI(0x0002);


Код
#define CLOCK           PORTB.1
// защелка
#define FSYNC           PORTB.2
// данные
#define DATA_OUT        PORTB.0


Код
//------------------функция записи по SPI-------------------
void Write16SPI(unsigned int data){
// счетчик цикла
int K=16;        
int J=0;
//
unsigned char low_part;
unsigned char hi_part;  

bit pin_data;

                                        
// сохраняем младшую часть
low_part = (unsigned char)(data & 0x00FF);  
// сохраняем старшую часть
hi_part = (unsigned char)(data >> 8);  
    
        // начало передачи данных
        FSYNC = 0;

        // выставляем данные    
        Write8Bit(hi_part);
        // если старшие 8 бит -
      
        Write8Bit(low_part);

        // окончание передачи данных  
        FSYNC = 1;
}

Код
//------------------функция записи по SPI-------------------
void Write8Bit(unsigned char data){
// счетчик цикла
int K=8;        
int J=0;

bit pin_data;

        K = 8;  
        J = 0;
        // передаем 16 бит по одному
        while (K){
                pin_data = (data & 128);
                DATA_OUT = pin_data;
                data <<= 1;
                
//                 sprintf(buf, "%x", pin_data);
//                 lcd_gotoxy(J,1);
//                 lcd_puts(buf);
//                 delay_ms(100);
//                
                // активный уровень clock
                CLOCK = 1;    
                delay_us(10);  
                //delay_ms(1);
                // декремент счетчика
                K--;        
                J++;
                CLOCK = 0;      
                delay_us(10);                
        }      
}
Go to the top of the page
 
+Quote Post
shf_05
сообщение Dec 14 2010, 07:55
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 22-04-08
Из: г. Екатеринбург
Пользователь №: 36 992



странно не имел с ней проблем, использовал синус.

вот код, асм, но понять можно, далее из массива, куда адресуется dm(i0+=1)= ar; 16 разр. слова уходят в SPI.

//2//write reg-s
//Fout= fMCLK /2^28 * FREQREG= 16.384MHz/2^28*FREQREG
//d15= 0 d14=1 - freq0
//d15= 1 d14=0 - freq1
//d12= 1 - MSB

//2----Writing to a Frequency Registers
ar= dm(AD9833Cntrl);
ar= setbit 13 of ar;//set LSB,MSB byte,
dm(i0+=1)= ar;

//3 --------FREQ0 REG Write
ar= dm(FreqRegDDS+1);// LSB first if LSB+MSB
ar= setbit 14 of ar; //select freq0 register
dm(i0+=1)= ar;


// For LSB //CONTROL REGISTER "WRITE"
//


//4-----------------FREQ0 REG Write
ar= dm(FreqRegDDS+0); //MSB second if send LSB+MSB
ar= setbit 14 of ar; //freq0
dm(i0+=1)= ar;


//-----Writing to a Phase Register
//d15 d14 d13 d12 ......................
//1 1 0 X MSB 12 PHASE0 Bits LSB
//1 1 1 X MSB 12 PHASE1 Bits LSB

//------
//5---------------- enable AD9833
ar= dm(AD9833Cntrl);
ar= 0;//clrbit 8 of ar; // clear reset;
dm(AD9833Cntrl)= ar;
dm(i0+=1)= ar;
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:53
Рейтинг@Mail.ru


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