Перейти к содержанию
    

OnLis

Новичок*
  • Постов

    2
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о OnLis

  • День рождения 21.04.1983

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. При заполнении регистра CSR I/O Update не нужен: CSR <7:4> bits are active immediately after being written. They do not require an I/O update to take effect. (стр 36) После заполнения последнего бита данные становятся активны. Пошаговая инструкция программирования тоже описана в даташите: (стр 18) SINGLE-TONE MODE The following steps present a basic protocol to program a different frequency tuning word and/or phase offset word for each channel using the channel enable bits. 1. Power up DUT and .... После проведения всех операций передачи данных, лишь 5-ой графой идет посылка I/O Update. Странно на первый взгляд, но тем не менее всё работает для двух каналов.
  2. Приветствую Сергей. Сам не так давно возился с AD9958, постараюсь ответить на твои вопросы. В своем макете LPT не использовал, для управления применил C8051F320. Передачу данных осуществлял в однобитном режиме, так вроде проще. Итак, относительно вопросов: 1. LC ФНЧ. Насчет Сх в данном виде точно сказать не могу. Можно построить цепь в MicroCap и оценить его влияние. Чаще всего в конструкциях с DDS встречал использование НЧ эллиптического фильтра 3-го порядка. Поиски информации навели на сайт coilcraft.com, где и удалось заказать пару образцов готовых модулей. 2. С фильтр. на питании. Чем больше тем лучше, ставь везде, где можно. Лит. обзор DDS конструкций показывает: от 10 до 50 штук 0,1 uF :) 3. На мой взгляд использование RC задерживающей цепочки - это немного лишнее. С одной стороны задержку можно сформировать программно, с другой - 12 ns (Figure 41 datasheet) не такое уж и большое значение. 4. Управление пятивольтовой ТТЛ можно, при этом предусмотри последовательные резисторы 50 - 100 Ом. Программирование: 1. Инициализация Reset = 1; Reset = 0; // DDS_Set(0x01); // Адрес регистра DDS_Set(0xA3); // Установка множителя DDS_Set(0x00); DDS_Set(0x20); // IO_Update = 1; IO_Update = 0; 2. Установка частоты / амплитуды / фазы DDS_Set(0x00); // Адрес DDS_Set(0x70); // Выбор 1 канала // *** IO_Update не нужно DDS_Set(0x04); // Установка частоты DDS1 -------------------- i = 4; while (i != 0) { FDAT = FREQ1/0x00FFFFFF; DDS_Set(FDAT&0xFF); FREQ1 = FREQ1*256; i--; } DDS_Set(0x05); // Установка фазы DDS1 ----------------------- DDS_Set(0x10); // Фаза 90 DDS_Set(0x00); DDS_Set(0x06); // Установка амплитуды DDS1 ------------------ DDS_Set(0x00); DDS_Set(GAIN1); DDS_Set(GAIN2); // ----------------------------------------------------------------------- DDS_Set(0x00); // Выбор 2 канала ---------------------------- DDS_Set(0xB0); // DDS_Set(0x04); // Установка частоты DDS2 -------------------- i = 4; while (i != 0) { FDAT = FREQ2/0x00FFFFFF; DDS_Set(FDAT&0xFF); FREQ2 = FREQ2*256; i--; } DDS_Set(0x05); // Установка фазы DDS2 ----------------------- DDS_Set(0x00); // Фаза 0 DDS_Set(0x00); DDS_Set(0x06); // Установка амплитуды DDS2 ------------------ DDS_Set(0x00); DDS_Set(GAIN1); DDS_Set(GAIN2); // // ----------------------------------------------------------------------- DDSUpdate = 1; // Применить ********************************* DDSUpdate = 0; Насчет расчета цифр, в даташите всё написано (см. стр 17). Пример: фаза 90 градусов POW = ( фаза * 2^14 ) / 360 = (90 * 16384) / 360 = 4096 = 0x1000 (HEX)
×
×
  • Создать...