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

Привет.

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

 

NewFile0.png

NewFile1.png

Изменено пользователем Zx80

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


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

По первому графику выходит где то 58 отсчётов в секунду.

По второму:

DRDY = 500 × tCLK IN 

У вас 200 us значит tCLK IN= 400 ns что эквивалентно частоте 2.5 MГц что является верхним порогом для частоты.

 

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


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

Забыл уже этот АЦП, но, насколько помню, задний фронт на DRDY выставляется по готовности данных. Сама длина импульса неважна, важен лишь фронт. Назад в лог. 1 он возвращается как только Вы вычитали данные.

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


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

 

Quote

задний фронт на DRDY выставляется по готовности данных. Сама длина импульса неважна, важен лишь фронт. Назад в лог. 1 он возвращается как только Вы вычитали данные.

      инициализация

      spi(0x24);    /* set the channel AIN1-AIN2 and set the next operation as write to the filter high */
      spi(0x4F);    /* set Bipolar mode, 24 bits, boost off, all 4 MSBs of filterword to 1 */
      spi(0x34);    /* set the next operation as a write to the filter low register channel AIN1/AIN2 */
      spi(0xA0);    /* max filter word allowed for low part of the filterword */
      spi(0x14);    /* set the operation as a write to the mode register */
      spi(0x20);    /* set gain to 1, burnout current off, no filter sync, and do a self calibration

вкл питания, сброс, инициализация. Я не читаю. По идее должен видеть ноль пока не опрошу данные, а в итоге (импульс послед) вероятно возбуждение. При чем при сбросах иногда вижу устойчивый ноль (данные готовы). Че у меня не так ?

Изменено пользователем Zx80
уточнения ответа

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


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

1 hour ago, Zx80 said:

По идее должен видеть ноль пока не опрошу данные

Нет. В даташите написано, что если Вы не считали данные, то DRDY поднимется в единицу через некоторое время сам.

1 hour ago, Zx80 said:

Че у меня не так ?

Пока только невнимательное чтение док)

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


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

Подскажите как должено быть видно на осцилографе возвращаемые с АЦП данные. Там же 24бита, это три байта. Возврат данных сказано начинается после спадающего фронта DRDY по команде 0х5F. Событию падения DRDY вызывает прерывание, в нем посылаю 0х5F, становлюсь на DOUT. Что то возвращает, но по виду это один байт.

Посылал 0х5F 0х5F 0х5F получал три копии одного и того же байта.

И вот еще не пойму, на верхней осцилограмме ноль на DRDY занимает 99% времени, это как данные доступны 99% времени ?

 

Изменено пользователем Zx80
уточнения вопроса

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


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

35 минут назад, Zx80 сказал:

Что то возвращает, но по виду это один байт.

Покажите на снимке 24 такта и все остальные сигналы. И вообще-то, 7-й канал — это ноль на входе.

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


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

Вот не пойму с каким
периодом он должен возвращать вывод DRDY в 1 ? Т.е сколько раз в секунду он обновляет значение,
чем это определяется ?

Последовательность на DRDY

DRDY.png.4e736f3e6a447a6db0be6be661af3f51.png

fCLKÊIN = 2.4576MHz Period = 1/fCLKÊIN = 4.07мкс. Если я не читаю чип он должен сам
на 500 циклов т.е.(4.07мкс*500=0.2мс) возвращать вывод DRDY в 1. Ну да те 9 клеток по 20мкс те 500 циклов = 0.18мс

DRDY_Dur.png.597ff416e099917ee9c3d0aa76fc3c21.png

Добавил команду считывания регистра данных. 0х5F. Вижу что выдает такты на 8 бит.

SCK.png.2d1933d586ef980e274367226ee22e2f.png

Данные на DOUT соответствующие тактам SCK

DOUT.png.e79a25b25c8205cb1e90620bdcb87e5b.png

Почему вы решили что 7канал ? Я по даташиту настраивал и настраивал AIN1-AIN2 дифференц вход.

Изменено пользователем Zx80

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


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

10 минут назад, Zx80 сказал:

Вижу что выдает такты на 8 бит

Следовательно, виновен тот, кто их выдаёт, потому что должен их выдавать в 3 раза больше количеством, ну и по-прежнему не видно диаграммы в соответствии с Рис.6 паспорта.

 

13 минут назад, Zx80 сказал:

Почему вы решили что 7канал ?

Потому что так написано в Табл.VII паспорта — xxxxx111 это AIN6-AIN6.

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


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

Не представляю как Вам дать такую диаграмму. Осцилограф двулучевой. Скажу только что CS = 0 у меня завсегда.

А насчет канала. spi(0x24); коммуникационный регистр. 0х24  = 00100100  У меня 4 - 100 Пишу в старшую часть регистра фильта. Это в примере 0х27  00100111, тут да 111

Channels.thumb.png.02409c18ceebfc81381829172f823ead.png

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


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

On 12/21/2021 at 3:02 PM, Zx80 said:

 

      инициализация

      spi(0x24);    /* set the channel AIN1-AIN2 and set the next operation as write to the filter high */
      spi(0x4F);    /* set Bipolar mode, 24 bits, boost off, all 4 MSBs of filterword to 1 */
      spi(0x34);    /* set the next operation as a write to the filter low register channel AIN1/AIN2 */
      spi(0xA0);    /* max filter word allowed for low part of the filterword */
      spi(0x14);    /* set the operation as a write to the mode register */
      spi(0x20);    /* set gain to 1, burnout current off, no filter sync, and do a self calibration

вкл питания, сброс, инициализация. Я не читаю. По идее должен видеть ноль пока не опрошу данные, а в итоге (импульс послед) вероятно возбуждение. При чем при сбросах иногда вижу устойчивый ноль (данные готовы). Че у меня не так ?

Вы все делаете не так.

У этого АЦП все общение идет через Communications Register.

Сначала вы в него пишете к какому регистру хотите обратиться, а потом данные для целевого регистра. За исключением самого себя. Т.е. если вы хотите выбрать канал АЦП, то вы пишите только в него.

В итоге размер посылки будет меняться от от одного байта до четырех байт.

Например 

spi(0x20); spi(0x4F);    /* set Bipolar mode, 24 bits, boost off, all 4 MSBs of filterword to 1 */

Первый посылкой мы говорим, что хотим записать данные в Filter High Register, а второй посылкой пишем уже сами данные.

 

А чтобы выбрать канал - надо записать в сам Communications Register значение вида 0b00000xxx, где ххх - номер канала. Если хотя бы один из битов RS2, RS1, RS0 отличается от ноля, то поля номера канала вообще не важны.

 

41 minutes ago, Zx80 said:

Не представляю как Вам дать такую диаграмму.

От вас не просят дать 24-ех канальную осциллограмму. Вам говорят, что у вас число тактов SCK в посылке слишком маленькое.

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


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

Великолепно. Вы написали тоже, что и я.

Quote

spi(0x20); spi(0x4F);

Первый посылкой мы говорим, что хотим записать данные в Filter High Register, а второй посылкой пишем уже сами данные.

Посмотрите, у меня три обращения к коммуникационному регистру коде. Красный обращение к коммуникационному регистру, синий - вторая посылка, пишем данные

1.thumb.png.9f03bb971524b372a0bd2728e5f2168c.png

 

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


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

2 minutes ago, Zx80 said:

Великолепно. Вы написали тоже, что и я.

Посмотрите, у меня три обращения к коммуникационному регистру коде. Красный обращение к коммуникационному регистру, синий - вторая посылка, пишем данные

Тогда приводите код в более понятном виде, дабы не возникало разночтений.

Но, все равно, в приведенном коде, вы не верно выбираете канал.

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


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

я выше показал как я выбираю канал согласно таблиц, если я не прав, покажите, поправьте

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


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

8 minutes ago, Zx80 said:

я выше показал как я выбираю канал согласно таблиц, если я не прав, покажите, поправьте

Вы не правильно его выбираете.

Я выше уже написал как надо.

Повторю еще раз.

Чтобы выбрать канал - надо записать в сам Communications Register значение вида 0b00000xxx, где ххх - номер канала. Если хотя бы один из битов RS2, RS1, RS0 отличается от ноля, то поля номера канала вообще не важны.

В итоге размер посылки один байт.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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