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

 
 
> программирование AD9954 через SPI посредством ADSP21364
WreWolf
сообщение Aug 25 2009, 16:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-11-07
Пользователь №: 32 211



В каком формате данные должны посылаться в ДДС,
и что необходимо для начала генерации.

ставлю I/O Synk в 1
Посылаю в MSBF
данные по 3-Wire в CFR1
I/O Update
данные PLL в CFR2
I/O Update
Записываю FTW0
снова I/O Update

где ошибка?
пробовал предварительно записать во все регистры 0x00
не помогло.

Смотрел времянку по которой с ДДС общаеться родной софт от АД. ничего нового не вижу.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 14)
Genadi Zawidowsk...
сообщение Aug 26 2009, 05:46
Сообщение #2


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

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



Не забыть снять в 0 IOSYNC сразу после установки перед дальнейшей работой.
Донышко микросхеме припаяли к земле?

Проект из сообщения в форуме http://forum.cqham.ru/viewtopic.php?p=274192#274192
скачайте - там есть обслуга AD9951 работающая - должен пойти, мне кажется. Потом доработаете.
Цитата
где ошибка?

Может быть что-то с выходным умножителем - не включйте ASF. Иначе придётся и его программировать.
0 засылать не надо - состояние после ресета вполне соответствует паспортным данным.

Сообщение отредактировал Genadi Zawidowski - Aug 26 2009, 05:54
Go to the top of the page
 
+Quote Post
Adlex
сообщение Aug 26 2009, 19:55
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 500
Регистрация: 8-08-05
Пользователь №: 7 451



На всякий случай проверьте, не загоняете ли ДДС в запрещенные режимы (программно), и попробуйте прочитать из чипа, что Вы в него записали.
Безусловно провериьь еще раз схему включения, наличия питания на всех ногах (1,8 и 3,3), земли на всех ногах.

Так ответить что-то конкретное трудно, не ясно даже это вина софта или железа...
Если укажите тип процессора управления, может кто-то вышлет Вам готовую рабочую прошивку
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 26 2009, 20:07
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Формат описан абсолютно однозначно.

Как минимум, надо быть уверенным, что поступают клоки нужной амплитуды.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 26 2009, 20:45
Сообщение #5


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

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



Цитата(Adlex @ Aug 26 2009, 23:55) *
На всякий случай проверьте, не загоняете ли ДДС в запрещенные режимы (программно), и попробуйте прочитать из чипа, что Вы в него записали.
Безусловно провериьь еще раз схему включения, наличия питания на всех ногах (1,8 и 3,3), земли на всех ногах.

Так ответить что-то конкретное трудно, не ясно даже это вина софта или железа...
Если укажите тип процессора управления, может кто-то вышлет Вам готовую рабочую прошивку


Автор написал - ADSP21364.
Я бы предложил сперва методом ножкодрыгательства spi создать и писать в чип. Когда появится уверенность в том, что все коды правильные - осваивать SPI контроллер.
Ну, и для начала - снять единицу с вывода iosync перед программированием, вплоть до того, что заземлить провод.
Готовую программу для ножкодрыгательства на Cи я уж послал (ссылочку)... там всё проверенно.

Цитата
Формат описан абсолютно однозначно.

Присоединяюсь.

Сообщение отредактировал Genadi Zawidowski - Aug 26 2009, 20:46
Go to the top of the page
 
+Quote Post
WreWolf
сообщение Aug 29 2009, 07:23
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-11-07
Пользователь №: 32 211



Ну скажем используються 2 платы EZ-LITE и Эвалюшен с ДДС
так что все припаяно правильно.
Использую штатный SPI на EZ-LITE
считать ничего не получаеться. Т.е. бит отвечаюший за передачу по 3 проводам не пишеться.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 29 2009, 08:17
Сообщение #7


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

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



Цитата(WreWolf @ Aug 29 2009, 11:23) *
Ну скажем используються 2 платы EZ-LITE и Эвалюшен с ДДС
так что все припаяно правильно.
Использую штатный SPI на EZ-LITE
считать ничего не получаеться. Т.е. бит отвечаюший за передачу по 3 проводам не пишеться.

Как говорится, телепаты в отпуске.

В писме не просматирваются знаачения управляющих слов, используемых для программирования dds, тактовая частота dds, проверьте положение перемычек (или сообщите тип платы и положение перемычек).
С ez-lite кто-нибудь да работал, им тоже поможет информация о том, как прогрммируется spi. Что мешает попробовать двумя ножками с GPIO выдать SPI?

Мои рекомендации по управлению учли? Я про iosync. Помогло?

Сообщение отредактировал Genadi Zawidowski - Aug 29 2009, 08:17
Go to the top of the page
 
+Quote Post
WreWolf
сообщение Aug 29 2009, 08:34
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-11-07
Пользователь №: 32 211



про iosync попробую в понедельник.
а spi работает на осцилографе все как надо.
CLOCK
Данные и I/O Update после записи каждого регистра данных.
тактовая частота ддс 48Мег, но это не так важно. выдавать он должен. по крайней мере при программировании с PC все работает.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Sep 2 2009, 06:30
Сообщение #9


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

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



Понедельник прошёл... Как дела с синтезатором?
Go to the top of the page
 
+Quote Post
WreWolf
сообщение Sep 4 2009, 11:06
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-11-07
Пользователь №: 32 211



ну тип процессора ADSP-21364
стоит на плате EZ-Lite
читать тоже нормально не получаеться. либо я что то неправильно делаю.

ustat3=rx_buf; dm(IISPI)=ustat3;
ustat3=@rx_buf; dm(CSPI)=ustat3;
ustat3=WL8?SPIMS?SPIEN?TIMOD2?MSBF; dm(SPICTL)=ustat3;
ustat3=SPIRCV?SPICHEN; dm(SPIDMAC)=ustat3;

по идее этот код должен принять столько байт, какой длинны массив rx_buf
если неправ поправьте.

Установка I/O Sync в 0 во время программирования ничего не дала.

подключение такое
клок к клоку
MISO к SDO
MOSI к SDIO
FLAG1 к FUD(I/O Update)
SPIDS к CS
на I/O Sync перемычка на землю.
Go to the top of the page
 
+Quote Post
WreWolf
сообщение Sep 8 2009, 09:04
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-11-07
Пользователь №: 32 211



я уже ничего не понимаю.
посмотрел все сигналы идушии с компа(при программировании ДДС)
повторил их на АДСП
и 0.

И еще странность в даташите на ддс указано что Chip Selekt инверсный вход. на времянке показано что он должен быть низким. соответственно его на 1 вешаем тогда от будет 0.
а комп наоборот его в 0 роняет.

так же никакой активности на выводах I/O Sync, P0, P1, OSK, CLKMODESEL,
но все работает.

П.С.
если можно еще пару слов про конфигурирвание DAI да вывод
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Sep 8 2009, 20:14
Сообщение #12


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

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



Цитата(WreWolf @ Sep 8 2009, 13:04) *
я уже ничего не понимаю.
посмотрел все сигналы идушии с компа(при программировании ДДС)
повторил их на АДСП
и 0.

И еще странность в даташите на ддс указано что Chip Selekt инверсный вход. на времянке показано что он должен быть низким. соответственно его на 1 вешаем тогда от будет 0.
а комп наоборот его в 0 роняет.


И вам так же (в ноль вольт переходить) надо делать... Вы хоть из интереса в предложенные мною исходники залезли бы - там на русском языке специально комментарии стоят...
P0, P1, OSK, CLKMODESEL шевелиться не должны. Без I/O update - вывод 1 - (без импульса единичного на нём) не будет обновления состояния dds запрограммированными данными.

Сообщение отредактировал Genadi Zawidowski - Sep 8 2009, 20:22
Go to the top of the page
 
+Quote Post
WreWolf
сообщение Sep 15 2009, 08:47
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-11-07
Пользователь №: 32 211



Ну в исходники, то я сразу залез. Но много непонятного.
Просто из чтения даташита на ДДС.
Если установить бит автоматической очистки фазового акумулятора, то при перезаписи FTW0 автоматически должна поменяться частота генерации.
Итак. Программируем ДДС с компа(через родной софт) 1Мгц( 0x00AAAAAB),при частоте клока 48Мгц и коэф. х8 и влюченным VCO и Auto Clear Phase Accum.
отключаем плату DDS от LPT порта. Ставим ставим джампер на ресет(в землю) и переводим плату на ручное программирование(собственно мы отключаем буферные регистры(они дополнительно распаяны для программирования через ЛПТ)).
и шлем на SPI
0x04 // т.е. адресс FTW
и затем еще 32бита
0x01555555 т.е. частота 2МГц
затем дергаем I/O Update( он же FUD ) к единице на 20мкс и опускаем в 0
по даташиту Должна начаться генерация на новой частоте(2Мгц), но этого не происходит, частота как стояла на 1Мгц так и стоит...

куда копать уже не знаю.

Вот кусок даташита.
Пример программирования на генерацию
Цитата
SINGLE-TONE MODE
In this example, the part is programmed to output a 122 MHz
single-tone carrier, the device is clocked with a 20 MHz crystal
oscillator, and the clock multiplier is used to push the internal
system clock up to 400 MHz. Phase offsets are then added to
the carrier.
The programming steps include the following:
1. Write to Control Register 1 instructing the part to autoclear
the phase accumulator whenever the phase offset word
changes and issues an I/O update. Set Bit 13 in the CFR1
register. The address for CFR1 is 0; therefore, an instruction
byte of 0x00 is sent and 0x00 00 00 20 for data. Note that
users must write to all four bytes of the register.
2. Write to Control Register 2 setting the clock multiplier value
to 20, and the VCO range bit to its upper value. In CFR2,
Bit 7 to Bit 3 control the multiply value. To get a multiplied
value of 20 from 5 bits, the binary value is 10100. As
previously mentioned, also send Bit 2 to put the VCO into its
upper range (to get 400 MHz). Therefore, the instruction byte
is 0x01 and 0x00 00 A4 for data.
3. Calculate the tuning word to generate a 122 MHz output
from a 400 MSPS clock, load it into FTW0, and latch the
data written to the I/O buffers into their respective registers.
The frequency tuning word equation becomes (122 MHz/
400 MHz) × 232
, which yields 0x4E 14 7A E1. Send the
Instruction Byte 0x04 and four data bytes of 0x4E 14 7A E1.
Issue an I/O update, which transfers the data into the part.

Whenever a phase change is desired, calculate and write the
phase offset word to the part and issue an I/O update. For
example, if the first value is 45°, the phase offset word is
(45/360) × 214
, or in decimal, 2048. Therefore, write an
instruction byte of 0x05 and Data Byte 0x0800. When an
I/O update is issued, the phase accumulator clears, which
starts it from a known phase of 0°. It again accumulates at a
122 MHz rate, except now phase shifting each and every
sample by 45°.
Go to the top of the page
 
+Quote Post
WreWolf
сообщение Sep 15 2009, 11:52
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-11-07
Пользователь №: 32 211



И еще вопрос, зачем делается повторное программирование CFR2 и CFR1 причем в таком порядке.
С какой частотой пихать данные по SPI. В даташите указано макс 25МГц Клока.
Я же пихаю по клоку 100кГц или 10кГц(на этой работает комп), но толку никакого.
Уже пробовал и в MSB и LSB отправлять.

П.С.
но даже кспириментально осцилографом видно что комп в MSB отправляет.
в чем же может быть проблема

Сообщение отредактировал WreWolf - Sep 15 2009, 12:13
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Sep 15 2009, 19:12
Сообщение #15


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

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



О, Вы на правильном пути! Когда у меня поначалу не работало, чужая писюковая программа помогала...

Auto Clear Phase Accum - если Вам нужен переход с частоты на частоту с разрывом фазы, тогда применяйте.

Скорее всего, у Вас что-то не так с чипселектом.
Делаем так - начальное состояние /CS (нога 39) и SCLK (нога 40) - логическая 1.

Переводим /CS (ногу 39) в 0. Устанавливаем данные побитно, каждый бит стробируем переходом в 0, а затем в 1 ноги 40.
После последнего битв переводим ногу 39 в 1. Чтобы изменения вошли в силу, дёрнуть ногу 1 в единицу а затем в 0.
После переключений могло что-то считаться микросхемой - сбросить ногой iosync (37).
Аббревиатуры FUD в даташите не нашёл.
Двойное программирование - это от AD9852 осталось, тут действительно нет необходимости.
Если не переводите в режим LSB first, то и прбовать не надо. Там MSB first после reset.

Сообщение отредактировал Genadi Zawidowski - Sep 15 2009, 19:26
Go to the top of the page
 
+Quote Post

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

 


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


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