Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Связь ADSP-2106 и EP9312 по SPI
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
metalkain
Здравствуйте!

Задача следующая.
Необходимо организовать двусторонний обмен информацией между ADSP-2106 и EP9312, используя на первой SPORT, а на второй SPP в режиме SPI (пытаюсь Motorola SPI). Причем, линии синхронизации и фреймов общие, а данных - раздельные.
Столкнулся с проблемой.
При передаче ПЕРВОГО слова длиной в байт от 9312 (смотрел на осциллографе - выглядит как в мануале) к 2106 куда-то пропадают от 2 до 4 первых бит (в зависимости от настроек SPORT). Оставшиеся 4-6 бит застревают во входном буфере. При передаче следующего слова по всей видимости его первые 2-4 бита запоняют буфер, и формируется сигнал прерывания, оставшиеся 4-6 бит снова застревают.
Кто-нибудь встречался с подобным? С чем может быть связана такая ситуация? Как можно организовать обмен?
Вся каверза ситуации состоит в том, что если я (2106) пытаюсь сразу ответить на принятое слово, то натыкаюсь на занятые остатками слова каналы синхронизации и фреймов, что лишает возможности передавать осмысленную информацию.
Буду рад любым мыслям и соображениям на сей счет.
aaarrr
Как я понял, EP9312 является мастером. Какие настройки стоят у SPORT'а? Мне почему-то кажется, что кормить его прерывающимися клоками - не самая лучшая идея.
Опишите конфигурацию подробнее.
etoja
Вместо ADSP2106 используйте LPC2106 - быстродействие вырастет, а аппаратура уменьшится.
Miron
Была похожая ситуация на SPORT ADSP2187
ВЫшел из нее следуюшим образом
После запуска и инициализации процов
Я с ведущего шины запускал несколько
циков синхроимпульсов а только потом
переходил к нормальному обмену
По всей видимости при внешней синхронизации
SPORT ADSPшек заводится только после
серии синхроимпульсов заполняюших
входной буфер.
metalkain
В dg3 регистр конфигурации приема ADSP-2106.
Записываю значение 0x00013071, к примеру.

2 aaarrr
Как я понял, SPI в чистом виде подразумевает, что мастер - это передающий, т.е. клоки и фреймы генерирует передатчик. В SPORT есть возможность передавать, используя эти сигналы извне. Но так как каналы клоков и фреймов общие, последней возможностью воспользоваться, на мой взглад, невозможно.
Что касается прерывающихся клоков, то, как я понял, Motorola SPI требует клоков только во время передачи битов. Но это касается передачи данных от 2106.

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

2 Miron
Была такая мысль. Обстоятельно к ней не подходили за извращенностью оной. Пробовали скомпилировать прогу на EP9312 для 4-битного слова, запускали, передавали одно слово, затем компилировали под 8-битное, запускали, и все передавалось как надо. Но вот если совершать переконфигурацию порта передатчика в процессе выполнение программы, то ровным счетом ничего не меняется (первые 4 бита первого из 8-битных слов также ныряют в бездну вслед за 4-битным словом).

ЗЫ.
Создал даже таблицу результатов...
№ Late Active Low Rising Edge Left
0 0 0 0 -
1 0 0 1 4
2 0 1 0 4
3 0 1 1 3
4 1 0 0 -
5 1 0 1 -
6 1 1 0 3
7 1 1 1 2
Здесь в столбцах Late, Active Low, Rising Edge приведены значения битов LAFS, LRFS, CKRE регистра конфигурации приемника соответственно, а в столбце Left - количество непринятых первых битов первого слова ("-" - отсутствие вообще какой-либо принятой информации, прерывание заполнения входного буфера не принято).
aaarrr
Цитата(metalkain @ Nov 29 2006, 16:17) *
Как я понял, SPI в чистом виде подразумевает, что мастер - это передающий, т.е. клоки и фреймы генерирует передатчик. В SPORT есть возможность передавать, используя эти сигналы извне. Но так как каналы клоков и фреймов общие, последней возможностью воспользоваться, на мой взглад, невозможно.
Что касается прерывающихся клоков, то, как я понял, Motorola SPI требует клоков только во время передачи битов. Но это касается передачи данных от 2106.

Клоки и фреймы генерирует не передатчик, а мастер. Передавать и принимать могут оба независимо.

Вам нужно уяснить следующий момент: сигнал фрейма в SPORT является синхронным, т.е. его изменения отслеживаются по фронтам/спадам клока, а SFRM в SPI - это асинхронный сигнал выборки. Таким образом, полностью потери битов избежать не удастся.

Цитата(etoja @ Nov 29 2006, 09:35) *
Вместо ADSP2106 используйте LPC2106 - быстродействие вырастет, а аппаратура уменьшится.

С подобными предложениями выступайте в Free Talks.
metalkain
2 aaarrr
Благодарю за полезную информацию.
Похоже, будет принято решение перейти на RS232
Pole
Цитата(aaarrr @ Nov 29 2006, 16:57) *
... а SFRM в SPI - это асинхронный сигнал выборки. Таким образом, полностью потери битов избежать не удастся.

Вроде в режиме TI SPI, SFRM привязывается к SCLK, по крайней мере так изображено на временной диаграмме, в вот у Motorola SPI, судя по все той же временной диаграмме действительно SFRM не привязан к SCLK.

Вопрос к metalkain, почему вы выбрали именно Мотороловский режим?
metalkain
Цитата
Вопрос к metalkain, почему вы выбрали именно Мотороловский режим?
В 9312 есть еще два интерфейса, реализованных на SSP, но визуально мне они показались еще более несовместимыми, да и на практике положительного результаты не показали.
Pole
Цитата(metalkain @ Dec 1 2006, 18:15) *
Цитата
Вопрос к metalkain, почему вы выбрали именно Мотороловский режим?
В 9312 есть еще два интерфейса, реализованных на SSP, но визуально мне они показались еще более несовместимыми, да и на практике положительного результаты не показали.

Как раз TI SSP выглядит более предпочтительней Моторолы, так как SCLK у TI непрерывно идут и SFRM привязан к SCLK, так же как и у ADSP.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.