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

Кто-нибудь работал с этим ЦАПом? Нет ли там никакой опечатки в даташите? Что-то у меня никак не получается его оживить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь работал с этим ЦАПом? Нет ли там никакой опечатки в даташите? Что-то у меня никак не получается его оживить...

Похоже, никто не имел с ним дела. Вы бы описали траблу подробнее, глядишь, и придумается что-нибудь.

Насчет ошибки в даташит - сомнительно. Уже не первой молодости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже, никто не имел с ним дела. Вы бы описали траблу подробнее, глядишь, и придумается что-нибудь.

Насчет ошибки в даташит - сомнительно. Уже не первой молодости.

Да я и сам понимаю. :rolleyes: Но хочется же найти какое-то объяснение. А трабла проста: пишу в него подряд два 16-битных слова: первое - CONTROL, второе - собственно данные. По примеру из того же даташита. Пробовал и на внутренний ИОН переключаться, и на внешний - никаких реакций. На выходе - ноль, референсное наружу тоже не выводится. Монтаж уже десять раз проверил. Попробую завтра чип поменять, но как-то надежды мало...

С сигналом FS тоже непонятно. Вроде как сказано, что запись в регистр выполняется при его низком уровне, затем положительный фронт защёлкивает данные и инициализирует смену напряжения на выходе. Такой логики и придерживаюсь. Хотя в другом месте документа пишут, что с 16-ым положительным фронтом клока (или фронтом FS) выходное напряжение меняется автоматом. Пока, впрочем, вообще ничего. :crying:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С сигналом FS тоже непонятно. Вроде как сказано, что запись в регистр выполняется при его низком уровне, затем положительный фронт защёлкивает данные и инициализирует смену напряжения на выходе. Такой логики и придерживаюсь.

Обратите внимание на положительный импульс сигнала FS до начала посылки с нормированием минимального времени между положительным фронтом этого импульса и завершением минимального времени установления сигнала nCS. Если бы сигнал FS до начала посылки должен был быть положительным, то этот импульс, возможно и не стали бы рисовать, даже если он нужен был бы лишь при старте.

Хотя в другом месте документа пишут, что с 16-ым положительным фронтом клока (или фронтом FS) выходное напряжение меняется автоматом.

Хочу уточнить, что не "с 16-ым положительным фронтом клока", а с 17-ым...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пишу в него подряд два 16-битных слова: первое - CONTROL, второе - собственно данные

 

Ссылка на ДШ сейчас чего-то не открывается... Позже попробую.

Проверьте формат CONTROL. Помню, в ДШ на радиомодуль RFM12B была ошибка - в примере в упр. регистр не то значение слали.

И, может, какая-то задержка после CONTROL должна быть ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обратите внимание на положительный импульс сигнала FS до начала посылки с нормированием минимального времени между положительным фронтом этого импульса и завершением минимального времени установления сигнала nCS. Если бы сигнал FS до начала посылки должен был быть положительным, то этот импульс, возможно и не стали бы рисовать, даже если он нужен был бы лишь при старте.

Спасибо. Но, думаю, не в этом дело. О положительном фронте FS до начала записи ничего не говорится, акцент лишь на отрицательном:

Notes on SPI and Microwire: Before the controller starts the data transfer, the software has to generate a falling edge on the I/O pin connected to FS.

Да и в таблице нормируется только минимальная длительность импульса

twH(FS) FS pulse duration high

что не мешает ему быть бесконечно продолжительным. Мне кажется, первый фронт FS на диаграмме показан как раз для иллюстрации минимальной паузы между записью предыдущего значения и началом передачи новых данных. Но проверю на всякий случай.

Хочу уточнить, что не "с 16-ым положительным фронтом клока", а с 17-ым...

Почему? Пишут ведь так:

After the write operation(s), the DAC output is updated automatically on the next positive clock edge following the 16th falling clock edge.

То есть, если пассивный уровень SCLK - высокий и передача начинается по заднему фронту (он первый), то 16-ый передний - это уже последний, возврат сигнала на изначальный уровень.

 

Проверьте формат CONTROL. Помню, в ДШ на радиомодуль RFM12B была ошибка - в примере в упр. регистр не то значение слали.

И, может, какая-то задержка после CONTROL должна быть ...

Уже по-всякому пробовал. Да и задержка у меня естественным образом формируется. :biggrin: Хотя ничего о ней вроде не сказано.

Сейчас продолжу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Слова посылаете, начиная со старшего бита?

CS можно на землю навечно посадить.

Обновляется после 16 срезов SCLK следующим фронтом, или по фронту FS. Осциллографом посмотрите, может, все же, не хватает одного импульса? Ну, и данные DIN во время срезов SCLK уже установлены (tsu, th)?

REF не закорочена?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я в таких случаях SPI обычно отключаю от ПЛИС или микроконтроллера и цепляю через ADuM к LPT-порту компьютера, затем программкой XPlpt начинаю отрабатывать все варианты, чтобы не заниматься большим количеством перешивок. Иногда решение приходит довольно неожиданно, когда уже близок к выводу, что чип сдох.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Слова посылаете, начиная со старшего бита?

CS можно на землю навечно посадить.

Обновляется после 16 срезов SCLK следующим фронтом, или по фронту FS. Осциллографом посмотрите, может, все же, не хватает одного импульса? Ну, и данные DIN во время срезов SCLK уже установлены (tsu, th)?

REF не закорочена?

Да всё именно так.

В общем, после многочисленных манипуляций какие-то сдвиги произошли. Чип действительно оказался жив.

Выяснилось, что:

- если пассивный уровень SCLK - высокий, то "обновление выхода" происходит по 16-му его фронту. То есть, в момент возврата к начальному уровню. У сигнала FS значение имеет только спад - он инициализирует новую запись в регистр. Просто если FS не дёргать, новой записи не произойдёт.

- если пассивный уровень SCLK - низкий, то "обновление выхода" происходит именно по фронту FS, но ... только после повторной записи (!) в регистр тех же данных (и импульсом FS, конечно, между ними, иначе запись не проходит).

Пытаюсь осмыслить обнаруженное, но пока извилины расползаются... :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У сигнала FS значение имеет только спад - он инициализирует новую запись в регистр.

... если пассивный уровень SCLK - низкий, то "обновление выхода" происходит именно по фронту FS, но ... только после повторной записи (!) в регистр тех же данных (и импульсом FS, конечно, между ними, иначе запись не проходит).

Наверное, если вы будете молотить SCLK и после 16 тактов еще один-два-сто (неважно, сколько), то ЦАП защелкнет, то, что надо, и без фронта FS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверное, если вы будете молотить SCLK и после 16 тактов еще один-два-сто (неважно, сколько), то ЦАП защелкнет, то, что надо, и без фронта FS.

Нет, не получается. Судя по даташиту, фронт FS может придти раньше 16-го фронта клока и тогда регистр защёлкнет то, что есть, но не наоборот. Можно бесконечно писать в регистр, но он будет продолжать ждать - проверено. Как это связано с пассивным уровнем клока - пока не разобрался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Судя по даташиту, фронт FS может придти раньше 16-го фронта клока и тогда регистр защёлкнет то, что есть, но не наоборот. Можно бесконечно писать в регистр, но он будет продолжать ждать - проверено.

По даташиту, вроде, должно защелкнуться по SCLK, если FS держится в нуле (вы же сами его формируете?).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По даташиту, вроде, должно защелкнуться по SCLK, если FS держится в нуле (вы же сами его формируете?).

Действительно так и происходит, но только если спад FS сформирован при высоком уровне SCLK.

Мне бы как раз нужно, чтобы обновление происходило по внешнему сигналу. Записали неторопливо в регистр по SPI и ждём себе строба. И лишь по его пришествию напряжение меняется строго в нужный момент. А пока не получается. То есть, если дублировать запись, то вроде получается, но тут явно какой-то глюк.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще напомню - около выходов, выдающих SCLK и FS, запаяйте в эти цепи последовательно по резистору омов 100. Чтобы уничтожить возможный дребезг на фронтах из-за отражений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще напомню - около выходов, выдающих SCLK и FS, запаяйте в эти цепи последовательно по резистору омов 100. Чтобы уничтожить возможный дребезг на фронтах из-за отражений.

Спасибо. Да у меня скорости небольшие. Намучился я с этим чипом и даже сумел приспособить для своих нужд, но до боли жалко времени. Обидно и то, что задумка вроде была неплохой, но явно техасцы чего-то перемудрили. И альтернативы, в общем-то, нет. Обнаружилась ещё одна неприятная особенность: если вследствие сбоев в передаче ЦАП "зависнет", сбросить его можно только выключением питания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...