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

 
 
> Вопросы по AD7609 (AD7608)
Dikoy
сообщение Jul 7 2012, 19:05
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676



AD7609: http://www.analog.com/static/imported-file...eets/AD7609.pdf

В ДШ написано лишь:

Цитата
The falling edge of CS takes the bus out of three-state and clocks out the MSB of the 18-bit conversion result. This MSB is valid on the first falling edge of the SCLK after the CS falling edge. The subsequent 17 data bits are clocked out of the AD7609 on the SCLK rising edge. Data is valid on the SCLK falling edge.


Значит, данные выдвигаются на подъёме, а защёлкиваются на спаде.
Соответственно, у АВР это SPI Mode 2, если я всё правильно понял. http://www.atmel.com/Images/doc2585.pdf

Однако они пишут, что как только /CS уходит в ноль, данные сразу доступны, т.к. встаёт флажок FRSTDATA, указуя на MSB результата первого канала, а падает он после 18-го спада, на котором выводится последний бит результата 1-го канала.
Цитата
When the CS input is high , the FRSTDATA output pin is in three-state. In serial mode, the falling edge of CS takes FRSTDA TA out of three- state and sets the FRSTDATA pin high indicating that the result from V1 is available on the DOUTA output data line. The FRSTDATA output returns to a logic low following the 18 th SCLK falling edge.


Примерно это же и следует из Figure 6. Serial Read Operation . По этому рисунку видно, что клок изначально должен быть в hi и защёлкнуть бит по первому спаду. И после выдвижения 18-го бита спадом, снова уйти в hi и там остаться.
Тогда это уже Mode 1...
Ничего не понимаю (с)! Помогите разобраться.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
DpInRock
сообщение Jul 7 2012, 19:50
Сообщение #2


Гуру
******

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



Что удивительно, вариантов всего - 4. И намного быстрее просто попробовать.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 7 2012, 20:39
Сообщение #3


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



SPOL =1 SPHA =1


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Dikoy
сообщение Jul 7 2012, 21:41
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676



Цитата(DpInRock @ Jul 7 2012, 22:50) *
Что удивительно, вариантов всего - 4. И намного быстрее просто попробовать.

Как минимум 2 варианта будут работать сразу. А то и все 4. Зато потом обязательно вылезет и начнёшь вылавливать...

Цитата(ILYAUL @ Jul 7 2012, 23:39) *
SPOL =1 SPHA =1

Это же Mode 3 - вывод по спаду, защёлка по подьёму... От куда такой вывод?
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 8 2012, 09:30
Сообщение #5


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
От куда такой вывод?

Цитата
из Figure 6. Serial Read Operation


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Dikoy
сообщение Jul 8 2012, 13:24
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676



А мне кажется, что 1...
По фиг 6 видно, что первый бит выводится по CS через t25, при этом до спада клока. И далее смена бита происходит в высоком состоянии клока. ИМХО диаграмма для моде 1 более похожа...
А в моде 3 вывод по спаду, защёлка по подьёму. Посмотрите последний бит на фиг 6 - данные снимаются через t23 после подёма. То есть подъём, это признак смены бита, а не защёлки. Да и в тексте они так же пишут.
Как мне кажется...
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jul 8 2012, 14:19
Сообщение #7


Гуру
******

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



Вообще-то для SPI не имеет значения природа смены бита.
Главное, что бит ДЕЙСТВИТЕЛЕН относительно обоих фронтов.
То, что сигнал НАЧИНАЕТ меняться по фронту - не имеет никакого значения.
Главное - небольшая пауза после CS, и не привысить минимальный полупериод т25.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 8 2012, 15:39
Сообщение #8


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Да CS можно вообще посадить на GND и забыть о нем, если у Вас одно устройство SPI
Цитата
А мне кажется, что 1...
Что Вы под эим подразумеваете, попробуйте изобразить как я


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Dikoy
сообщение Jul 9 2012, 02:03
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676



Я же давал ссылку на официальный атмелоский тугамент.



Там и диаграммы есть.

Соответственно mode 1 == CPOL =0 CPHA =1

Цитата(DpInRock @ Jul 8 2012, 17:19) *
Вообще-то для SPI не имеет значения природа смены бита.
Главное, что бит ДЕЙСТВИТЕЛЕН относительно обоих фронтов.
То, что сигнал НАЧИНАЕТ меняться по фронту - не имеет никакого значения.
Главное - небольшая пауза после CS, и не привысить минимальный полупериод т25.

Чтобы бит был действителен, в момент защёлки в регистре приёмника состояние на линии должно быть устоявшимся, за вычетом дребезгов и прочая. По этом выдвижение/чтение должны быть сдвинуты по фазе на 180.
С учётом того, что у АЦП SPI "тянет" 20 МГц на клоке, АЦП успеет вывести бит на линию прежде чем АВР с её 8 МГЦ успеет его защёлкнуть. Но это на идеально коротких проводниках.
По этому я и пишу - 2 режима будут работать. Возможно, все 4. Но как и до какого момента - не известно. От того хочется понять, что конкретно ей надо.

Сообщение отредактировал Dikoy - Jul 9 2012, 02:05
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 9 2012, 04:53
Сообщение #10


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
Соответственно mode 1 == CPOL =0 CPHA =1

Ну батенька, однозначно нет. Как кстати и mode 0. Так , что два варианта из четырёх - псу под хвост.
Смотрим на график фиг 6 сей микрухи и видим что CLK начинает формироваться из состояния лог 1 - отсюда следует , что нам нужно установить полярность сигнала CLK ( CPOL) =1
Осталось выбрать , какой же должен быть CPHA. Из тогоже графика видим , что данные появляются на шине по спаду CLK поэтому по фронту следующего импульса мы уже можем их забрать , о чём ксати сообщает нам и Table 3.
Цитата
t19 Data access time after SCLK rising edge

Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jul 9 2012, 07:59
Сообщение #11


Гуру
******

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



Всякая теория должна уметь предсказывать.
Вот предсказываю.
Установите полярность CLK в 1.
Установите максимальную частоту клока.
Защелкивайте по любому фронту. Будет работать.
Если коснуться пинцетом до линии данных (хорошим большим пинцетом хорошими большими влажными пальцами), то перестанет работать по спадающему фронту, но все еще будет работать по нарастающему. (так же можно вредить линии клока. Что еще эффективнее)

Собственно, именно так вы бы могли проверить на устойчивость оба варианта. Чисто практически. Минут за 5.
Можно вместо пинцета заливать кофием с сахаром.

Вот тут вы будете иметь подтвержденное практикой решение.

Сообщение отредактировал DpInRock - Jul 9 2012, 08:01


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Dikoy
сообщение Jul 11 2012, 03:51
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676



Цитата(ILYAUL @ Jul 9 2012, 07:53) *
Из тогоже графика видим , что данные появляются на шине по спаду CLK поэтому по фронту следующего импульса мы уже можем их забрать , о чём ксати сообщает нам и Table 3.

Ну не знаю что там видно в графике. Если смотреть на него, то данные на линии сразу после спада CS, при высоком клоке. И именяются на высоком клоке. И вообще до сигнала CS полярность клока не нормируется. Значит он либо ждёт первого подъёма, либо реагирует на изначальную единицу в линии клока. В общем, странный график...
Впрочем, вы оказались правы, ваш вариант всех битов в 1 работает устойчивей всего.

Цитата(DpInRock @ Jul 9 2012, 10:59) *
Всякая теория должна уметь предсказывать.

Ну, я это ещё пару сообщений сверху предсказал. И частота клока тут не при чём - если есть дребезг, он проявится одинаково на любой частоте.
Что касается пинцета, то данный тест не гарантирует 100% результата, а значит "не научен!" (с). В одних условиях сработает, в других прокатит. Я это ещё лет 8 назад осознал, когда SD флешки к атмеге подключал. Не вижу в нём никакого практического смысла.
Вот кофе с сахаром куда более близко к реальности. Только прототипчик жалко sm.gif

Меня сейчас вот что волнует...
Куда делся целый бит? blink.gif

Имеем AD7609. Питание 5 вольтов. На REF напряжение идёт через делитель на резисторах 1к (пока китайские полосатики, в конечном девайсе будут прецизионные). Такое включение в связи с ратиометрическими датчиками.
Датчик имитирует потенциометр, включённый между питанием (5 вольт) и землёй. Соответственно на входе имеем 0-5 вольт. Вход V8- АЦП соединён с общей землёй, на V8+ подаётся напряжение с потенциометра.
Входной диапазон АЦП включён +-5 вольт.
Снимаю график:

Максимальный код 00FDD6 (64982). То есть 16 бит.
Ну ладно один бит я теряю за счёт двуполярности. Но куда делся второй?
Она, конечно, посностью дифференциальная, но должна же от заданной земли работать? Или таки от внутреннего смещения? 05.gif


ПС. Для будущих поколений настройка USART AVR (ATmega640, 16 MHz) для этой МС:
Код
// инициализация порта для АЦП  
UBRR1 = 0;
// Установка XCKn, Tx и CS как выходов
PORTD |= (1<<CS);
DDRD  |= (1<<XCKn)|(1<<Tx)|(1<<CS);
// Set MSPI mode of operation and SPI mode.
UCSR1C = (1 << UMSEL11)|(1 << UMSEL10)|(1 << UCPHA1)|(1 << UCPOL1); // биты 7,6,1,0.
// Enable receiver and transmitter.
UCSR1B = (1<<RXEN1)|(1<<TXEN1);
UCSR1A = 0x00;
// Устанавливаем скорость.
// Важно. Скорость надо устанавливать ПОСЛЕ включение приёмника и(или) передатчика.  
UBRR1H = 0;
UBRR1L = 68; // 115200    (16000000/(2*115200)-1) = 68,44444444444


Сообщение отредактировал Dikoy - Jul 11 2012, 04:00
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 11 2012, 07:49
Сообщение #13


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
И вообще до сигнала CS полярность клока не нормируется

Опять ошибаетесь. Вас сбивает с понтолыку , что при отсутствии сигнала CS на графике показан clock . Но если присмотреться , то можно видеть , что clock может отсутствовать и при этом находится в лог.1 и после окончания считывания снова переходит в лог 1. Я думаю , что каринку снова выкладывать нет необходимости.
Зачем это сделано:
Как я уже писал выше CS можно принебречь и использовать только 2 порта MCU. CLK и DATA. Но CLK должен находится в состоянии лог1. до начала считывания данных , что на графике и отражено. - Это первый способ
Второй способ - Clock генерит постоянно (тоже есть на графике) - безостановочно и всегда, но чтобы считать данные надо сформировать CS и не абы как , а строго в соответствии с графиком , по нарастающему фронту тактового импульса, чтобы по спаду данные появились на шине и по фронту .....хотя писал выше. Но в данном случае Вы используете уже 3 ноги MCU.
Это Ваш случай , так вот посмотрите как Вы формируете start CS в Вашей проге.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:37
Рейтинг@Mail.ru


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