|
|
  |
Кто работал с AD9953 не могу записать в регистры данные |
|
|
|
May 5 2013, 18:18
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 21-02-11
Пользователь №: 63 148

|
AD9953 подключена к SPI stm32. Интерфейс работает корректно. Попытка записи в регистры ни к чему не приводит. При чтении так же всегда читаю 0. Подключена по 3х проводной схеме.... Где грабли? Буду признателен за совет.
|
|
|
|
|
May 5 2013, 19:00
|

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

|
Цитата(beeper @ May 5 2013, 22:18)  AD9953 подключена к SPI stm32. Интерфейс работает корректно. Попытка записи в регистры ни к чему не приводит. При чтении так же всегда читаю 0. Подключена по 3х проводной схеме.... Где грабли? Буду признателен за совет. Схема? ad9953 reset? Пробовали на других SPI девайсах? spi mode3? miso, MOSI, SCLK, CS - четыре сигнала для получения данных с AD9953
|
|
|
|
|
May 6 2013, 10:22
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 21-02-11
Пользователь №: 63 148

|
Цитата(Genadi Zawidowski @ May 5 2013, 22:00)  Схема? ad9953 reset? Пробовали на других SPI девайсах? spi mode3?
miso, MOSI, SCLK, CS - четыре сигнала для получения данных с AD9953 ДА, все четыре сигнала и использую. На этой же плате стоят ацп подключенные к этому же spi они отзываются корректно. Что я делаю. Формирую высокий уровень на входе сброса, затем опускаю сброс, опускаю чип селект, вывожу 0х00 ( инструкция записи в регистр 0), вывожу 0х00, 0х02 ( включаю трех проводный режим SPI поднимая бит SDIO input only), 0х00, 0Х00, поднимаю чип селект. После этого опускаю чип селект, вывожу 0х01 ( инструкция записи в первый регистр), вывожу 0х00, 0х02 ( включаю crystal out), 0x00,0x00, поднимаю чип селект. Что я ожидаю... Во первых микросхема должна перейти в трех проводной режим обмена, те одна линия на ввод данных одна на вывод и клок. Во вторых на выходе crystal out я должен увидеть сигнал тактового генератора, я его не вижу, хотя на самих лапах кварца ( я использую кварц 24Мгц) я вижу осциляцию.. Попытка прочитать два упомянутых выше регистра дает нули.... Вывод PWRDWNCTL у меня на земле, те по умолчанию все включено...... Питание и все прочее по даташиту и схеме кита от аналог девайс, все многократно проверил.... Цитата(Genadi Zawidowski @ May 5 2013, 22:00)  Схема? ad9953 reset? Пробовали на других SPI девайсах? spi mode3?
miso, MOSI, SCLK, CS - четыре сигнала для получения данных с AD9953 Схема включения
Сообщение отредактировал beeper - May 6 2013, 10:23
Прикрепленные файлы
DDS.pdf ( 101.41 килобайт )
Кол-во скачиваний: 28
|
|
|
|
|
May 6 2013, 11:16
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
С AD9953 дела не имела, но у большнства прочих АЦП чипселект служит еще и для синхронизации. Например, если я скармливаю ему команду, состоящую из нескольких байт (например, команды установки режимов), а потом вдруг "забыла" сколько байт успела передать, то дернув чипселектом туда-сюда, могу начать передачу сызнова, т.к. после этого АЦП забывает незавершенные процедуры. Это же механизм обычно используется при чтении посылок из АЦП, содержаних более одного байта. Ведь если хотя бы один байт пропустишь, старшие байты числа перепутаются с младшими. Что бы такого не случилось, полезно делать встряску чипселектом с начала приема каждого значения. Обычно это реализуется так - CS всегда держат выключенным, а включает только на время чтения посылки. Когда автоматически получается, что АЦП выдаст посылку сначала, и байты от прошлых посылок в нем не застрянут. В отношении "программирования" АЦП работает тот же механизм. А потому никак нельзя дёргать чипселектом в процесе одного и того же акта приема-передачи. Например, если это не перидический режим выдачи, а режим получения одного значения по запросу, то между подачей запроса и чтением ответа чипселект отключаться не должен! А то получим одни нули  .
|
|
|
|
|
May 6 2013, 12:28
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 5-03-12
Пользователь №: 70 614

|
Попробуйте сделать I/O Update после записи в регистр. Для этого надо сформировать положительный перепад на 1 ноге AD9953.
|
|
|
|
|
May 6 2013, 17:09
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 21-02-11
Пользователь №: 63 148

|
Цитата(Xenia @ May 6 2013, 14:16)  С AD9953 дела не имела, но у большнства прочих АЦП чипселект служит еще и для синхронизации. Например, если я скармливаю ему команду, состоящую из нескольких байт (например, команды установки режимов), а потом вдруг "забыла" сколько байт успела передать, то дернув чипселектом туда-сюда, могу начать передачу сызнова, т.к. после этого АЦП забывает незавершенные процедуры. Это же механизм обычно используется при чтении посылок из АЦП, содержаних более одного байта. Ведь если хотя бы один байт пропустишь, старшие байты числа перепутаются с младшими. Что бы такого не случилось, полезно делать встряску чипселектом с начала приема каждого значения. Обычно это реализуется так - CS всегда держат выключенным, а включает только на время чтения посылки. Когда автоматически получается, что АЦП выдаст посылку сначала, и байты от прошлых посылок в нем не застрянут. В отношении "программирования" АЦП работает тот же механизм. А потому никак нельзя дёргать чипселектом в процесе одного и того же акта приема-передачи. Например, если это не перидический режим выдачи, а режим получения одного значения по запросу, то между подачей запроса и чтением ответа чипселект отключаться не должен! А то получим одни нули  . Да я не дергаю CS. Я его опускаю перед передачей и поднимаю после окончания передачи.... передача состоит из байта инструкции и трех или четырех байт значений регистра....
|
|
|
|
|
May 6 2013, 18:31
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 21-02-11
Пользователь №: 63 148

|
Цитата(Radiocomp @ May 6 2013, 15:28)  Попробуйте сделать I/O Update после записи в регистр. Для этого надо сформировать положительный перепад на 1 ноге AD9953. Делаю, не помогает. Вообще на сколько я разобрался, сигнал I/O Update нужен для синхронизации... Те, для того чтобы регистры приняли его значение, совсем не обязательно формировать фронт на нем.....
|
|
|
|
|
May 6 2013, 19:44
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 5-03-12
Пользователь №: 70 614

|
Цитата Вообще на сколько я разобрался, сигнал I/O Update нужен для синхронизации... Те, для того чтобы регистры приняли его значение, совсем не обязательно формировать фронт на нем..... Там два уровня регистров, в регистры первого уровня информация записывается и передается в регистры второго уровня по I/O Update для исполнения. Какой уровень регистров считывается, я не помню. Цитата Формирую высокий уровень на входе сброса, затем опускаю сброс, опускаю чип селект, вывожу 0х00 ( инструкция записи в регистр 0), вывожу 0х00, 0х02 ( включаю трех проводный режим SPI поднимая бит SDIO input only), 0х00, 0Х00, поднимаю чип селект. После этого опускаю чип селект, вывожу 0х01 ( инструкция записи в первый регистр), вывожу 0х00, 0х02 ( включаю crystal out), 0x00,0x00, поднимаю чип селект. Здесь есть как минимиум две ошибки: 1. Запись по умолчанию - MSB (см. стр. 27 datasheet), т.е. чтобы включить SDIO input only надо записывать 0x00,0x00,0x00,0x02,0x00. 2. Регистр 0x01 24-битный, в него можно записать только 3 байта. В Вашем случае последовательность должна быть 0x01,0x00,0x02,0x00
|
|
|
|
|
May 6 2013, 20:00
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 21-02-11
Пользователь №: 63 148

|
Цитата(Radiocomp @ May 6 2013, 22:44)  Там два уровня регистров, в регистры первого уровня информация записывается и передается в регистры второго уровня по I/O Update для исполнения. Какой уровень регистров считывается, я не помню.
Здесь есть как минимиум две ошибки: 1. Запись по умолчанию - MSB (см. стр. 27 datasheet), т.е. чтобы включить SDIO input only надо записывать 0x00,0x00,0x00,0x02,0x00. 2. Регистр 0x01 24-битный, в него можно записать только 3 байта. В Вашем случае последовательность должна быть 0x01,0x00,0x02,0x00 Вы правы, последовательность как вы указали( я просто из кода переписал не так). Без I\O update не принимает к исполнению, так же правы.... Вообще нашел проблему... плата четерехслойная на Радаре сделанная)))) питание интерфейса то было то не было..... Спасибо всем кто откликнулся.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|