stepolton77 0 5 мая, 2013 Опубликовано 5 мая, 2013 · Жалоба AD9953 подключена к SPI stm32. Интерфейс работает корректно. Попытка записи в регистры ни к чему не приводит. При чтении так же всегда читаю 0. Подключена по 3х проводной схеме.... Где грабли? Буду признателен за совет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 5 мая, 2013 Опубликовано 5 мая, 2013 · Жалоба AD9953 подключена к SPI stm32. Интерфейс работает корректно. Попытка записи в регистры ни к чему не приводит. При чтении так же всегда читаю 0. Подключена по 3х проводной схеме.... Где грабли? Буду признателен за совет. Схема? ad9953 reset? Пробовали на других SPI девайсах? spi mode3? miso, MOSI, SCLK, CS - четыре сигнала для получения данных с AD9953 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stepolton77 0 6 мая, 2013 Опубликовано 6 мая, 2013 (изменено) · Жалоба Схема? 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 у меня на земле, те по умолчанию все включено...... Питание и все прочее по даташиту и схеме кита от аналог девайс, все многократно проверил.... Схема? ad9953 reset? Пробовали на других SPI девайсах? spi mode3? miso, MOSI, SCLK, CS - четыре сигнала для получения данных с AD9953 Схема включения DDS.pdf Изменено 6 мая, 2013 пользователем beeper Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 35 6 мая, 2013 Опубликовано 6 мая, 2013 · Жалоба С AD9953 дела не имела, но у большнства прочих АЦП чипселект служит еще и для синхронизации. Например, если я скармливаю ему команду, состоящую из нескольких байт (например, команды установки режимов), а потом вдруг "забыла" сколько байт успела передать, то дернув чипселектом туда-сюда, могу начать передачу сызнова, т.к. после этого АЦП забывает незавершенные процедуры. Это же механизм обычно используется при чтении посылок из АЦП, содержаних более одного байта. Ведь если хотя бы один байт пропустишь, старшие байты числа перепутаются с младшими. Что бы такого не случилось, полезно делать встряску чипселектом с начала приема каждого значения. Обычно это реализуется так - CS всегда держат выключенным, а включает только на время чтения посылки. Когда автоматически получается, что АЦП выдаст посылку сначала, и байты от прошлых посылок в нем не застрянут. В отношении "программирования" АЦП работает тот же механизм. А потому никак нельзя дёргать чипселектом в процесе одного и того же акта приема-передачи. Например, если это не перидический режим выдачи, а режим получения одного значения по запросу, то между подачей запроса и чтением ответа чипселект отключаться не должен! А то получим одни нули :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Radiocomp 0 6 мая, 2013 Опубликовано 6 мая, 2013 · Жалоба Попробуйте сделать I/O Update после записи в регистр. Для этого надо сформировать положительный перепад на 1 ноге AD9953. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stepolton77 0 6 мая, 2013 Опубликовано 6 мая, 2013 · Жалоба С AD9953 дела не имела, но у большнства прочих АЦП чипселект служит еще и для синхронизации. Например, если я скармливаю ему команду, состоящую из нескольких байт (например, команды установки режимов), а потом вдруг "забыла" сколько байт успела передать, то дернув чипселектом туда-сюда, могу начать передачу сызнова, т.к. после этого АЦП забывает незавершенные процедуры. Это же механизм обычно используется при чтении посылок из АЦП, содержаних более одного байта. Ведь если хотя бы один байт пропустишь, старшие байты числа перепутаются с младшими. Что бы такого не случилось, полезно делать встряску чипселектом с начала приема каждого значения. Обычно это реализуется так - CS всегда держат выключенным, а включает только на время чтения посылки. Когда автоматически получается, что АЦП выдаст посылку сначала, и байты от прошлых посылок в нем не застрянут. В отношении "программирования" АЦП работает тот же механизм. А потому никак нельзя дёргать чипселектом в процесе одного и того же акта приема-передачи. Например, если это не перидический режим выдачи, а режим получения одного значения по запросу, то между подачей запроса и чтением ответа чипселект отключаться не должен! А то получим одни нули :). Да я не дергаю CS. Я его опускаю перед передачей и поднимаю после окончания передачи.... передача состоит из байта инструкции и трех или четырех байт значений регистра.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stepolton77 0 6 мая, 2013 Опубликовано 6 мая, 2013 · Жалоба Попробуйте сделать I/O Update после записи в регистр. Для этого надо сформировать положительный перепад на 1 ноге AD9953. Делаю, не помогает. Вообще на сколько я разобрался, сигнал I/O Update нужен для синхронизации... Те, для того чтобы регистры приняли его значение, совсем не обязательно формировать фронт на нем..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Radiocomp 0 6 мая, 2013 Опубликовано 6 мая, 2013 · Жалоба Вообще на сколько я разобрался, сигнал 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stepolton77 0 6 мая, 2013 Опубликовано 6 мая, 2013 · Жалоба Там два уровня регистров, в регистры первого уровня информация записывается и передается в регистры второго уровня по 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 не принимает к исполнению, так же правы.... Вообще нашел проблему... плата четерехслойная на Радаре сделанная)))) питание интерфейса то было то не было..... Спасибо всем кто откликнулся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться