Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как реализовать высокоскоростной RS485
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
RRaptor
Каким образом к сигнальному процессору (ADSP21062) можно прикрутить интерфейс RS485 для работы на скорости 1-10 МБит/с, возможно ли это в принципе. Теоретически существуют передатчики RS485 для скорости передачи 10 и более МБит/с (например, MAX3490), но при этом преобразователи SPI в RS485 я нашел только для скорости 0.2 МБит/с (MAX3100, MAX3140). Кроме SPI на процессоре есть еще 4-х разрядные линк-порты которые тоже могут работать с высокими скоростями, но опять же как преобразовать их в сигналы RS485. Можно ли это преобразование сделать на ПЛИС, какая максимальная скорость может быть при этом достигнута и какой для этого требуется тактовый генератор.
zltigo
Цитата(RRaptor @ Nov 12 2006, 12:01) *
можно прикрутить интерфейс RS485 для работы на скорости 1-10 МБит/с

А зачем?
Может достаточно прямо к SPI 485 приемопередатчики прикрутить...
Ну а вообще:
Цитата
Можно ли это преобразование сделать на ПЛИС

Точно в лоб решит поставленую задачу для 'любых' скоростей. Необходимость отдельного тактирования PLD зависит от степени желаемой
интелектуальности и если без закосов в буферизацию и иже с ней, то вполне решается просто на клоках от SPI
rezident
Не совсем понятна постановка задачи. Вам требуется преобразовать один интерфейс (SPI) в другой (RS-485) или просто нужно сигналы SPI передать на большое расстояние путем применения дифференциальных приемопередатчиков? Если второе, то причем тут упоминание о RS-485?
RRaptor
В описаниях интерфейса RS485 сказано, что он определяет только электрические параметры, а протокол передачи в нем можно реализовать любой, например как в RS232, поэтому в идеале хотелось бы следующего:
1. Логически преобразовать один из имеющихся интерфейсов (SPI или LINK порты) в стандартный RS232 (стартовый бит, данные, стоповый бит)

2. Иметь возможность установить для него скорость передачи 115200 бит/с как для стандартного RS232, и скорость побольше, например 1 МБит/с. В крайнем случае можно просто иметь одну фиксированную скорость передачи 1 МБит или более.

3. Эта штука нужна только для передачи, прием данных не нужен вообще

4. По возможности иметь некоторое FIFO и соответственно сигнал прерывания о том что оно не содержит данных

5. Передавать данные в линию через дифференциальные высокоскоростные приемопередатчики стандарта RS485

Вызывает сомнение возможность реализции в ПЛИС логики RS232 на скорости 1-10 МБит/с и более так как при этом нужна высокая тактовая частота. Я раньше не занимался ПЛИС отсюда и возникают вопросы о возможности реализации. Мои приблизительные расчеты таковы: 10 МБит/с=1.25 МБайт/с,
с учетом стартового/стопового бита - 1.56 МБайт/с, умножаем на 16 для выделения битов по тактовым сигналам получаем ~25 МГц. Насколько верен такой подсчет?
Кстати, в процессоре есть незадействованный таймер который умеет формировать тактовые импульсы с частотой работы ядра - до 40 МГц
rezident
Вы только упустили из виду одну весьма важную вещь: SPI - это синхронный интерфейс, а RS232/RS485 - это асинхронные интерфейсы. Поэтому я и попросил уточнить про преобразование интерфейсов. Какой МК является источником сигнала и что является приемником сигнала? На какое расстояние требуется передавать сигнал? Каков характер сигнала, что он не требует квитирования? Видеопоток желаете транслировать?
gala
Цитата(rezident @ Nov 12 2006, 23:23) *
или просто нужно сигналы SPI передать на большое расстояние путем применения дифференциальных приемопередатчиков?

to rezident

Ваши рекомендации для SPI: 10m, 10MHz ?
GetSmart
2 RRaptor

Передавайте по двум витым парам SCK и MOSI сигналы. Потребуется два 485 передатчика. Я так делал на скоростях до 6 МГц. Только передатчики гальванически связанные были ADM485. Никакого геморроя не обнаружил для однонаправленной передачи на расстоянии до 10 метров. Для полноценного SPI (двунаправленного) такая схемка не годится принципиально ввиду задержек на передачу данных по линии. Было дело, мы так же передавали данные для светодиодных экранов на скоростях до 20 МГц через RS485 и две пары витых пар.
rezident
Цитата(gala @ Nov 14 2006, 21:02) *
Цитата(rezident @ Nov 12 2006, 23:23) *

или просто нужно сигналы SPI передать на большое расстояние путем применения дифференциальных приемопередатчиков?

to rezident

Ваши рекомендации для SPI: 10m, 10MHz ?

Если нужна фреймовая синхронизация, то для передачи нужно использовать три передатчика RS-485/RS-422 или один строенный/счетверенный. Выбор не такой уж и скудный
Maxim
TI
Если фреймовой синхронизации не требуется (хотя я не совсем себе представляю какие данные при этом можно передавать), то достаточно двух передатчиков. Кабель нужен FTP-ный (две/четыре витые пары в экране).
zltigo
Цитата(rezident @ Nov 14 2006, 21:47) *
Если фреймовой синхронизации не требуется (хотя я не совсем себе представляю какие данные при этом можно передавать), то достаточно двух передатчиков.

Фрейм вполне может быть обозначен последовательностью битов. Классика жанра - HDLC. Или аппаратная поддержка поиска
пауз в SCK.
LeonY
Господин RRaptor - определитесь, пожалуйста, с терминологией. Если речь идет о преобразовании одного логического интерфейса в другой, то это одна задача. И никакого отношения она к RS232/485/422 не имеет. Решается, обычно, на FPGA, как Вы и предполагаете, хотя это не единственное решение. Если же надо преобразовать "уровни" - то это задача совсем другая, как правило, намного проще, к FPGA совершенно не относится (по крайней мере - к классическому набору FPGA функций, хотя можно сделать например преобразователь TTL - LVDS на FPGA. Он будет немножко дорогим, но все на любителя)
RRaptor
Цитата(LeonY @ Nov 16 2006, 14:30) *
Господин RRaptor - определитесь, пожалуйста, с терминологией ...

Может раньше я не совсем понятно написал, но в общем задача такова:
планируется к разработке устройство обработки данных поступающих с АЦП (нескольких), которое будет формировать пакеты длиной 64 байта с частотой 12 кГц. Процессор я уже указывал - ADSP-21062. Требуется организовать обмен такими пакетами с другим устройством, пока неизвестно каким с помощью одного из стандарных последовательных интерфейсов на расстояние до 100 м с указанной частотой. У процессора есть SPI и параллельные 4-битные линк порты. Вот собственно и все. Для такой частоты обмена подходит RS485 поэтому встал вопрос о том, как его реализовать. То есть вопрос был в возможности логического преобразования SPI или параллельных link-портов в RS485, например с протоколом RS232, FIFO, прерыванием и т.д. для скорости работы 10 МБит/с, какой при этом потребуется тактовый генератор (как раз эту чать я и не понял из приведенных ответов). Видится мне это примерно так: по SPI передаю n байт где n размер FIFO и жду прерывания по завершению передачи. Что то на ПЛИС эти данные передает в линию на скорости 10 МБит/с и генерит прерывание по завершению передачи, потом следующая порция и т.д.. Ну и совсем было бы хорошо если получится сделать переменную скорость работы этого чуда путем управления процессором частотой выдачи тактовых импульсов которые он может генерить до 40 МГц, чтобы можно было установить скорость 115200 как для RS232.

А преобразовать "уровни" как раз не проблема практически для любой скорости.
rezident
Блин, я опять уже не понимаю задачи! Какая скорость обмена с внешним устройством требуется-то? То 10МГц, то 115200. Вы бы, RRaptor, определились бы уже как-то что ли! Для начала скорость трансляции данных из устройства сбора данных "куда-то" какая требуется? Исходя из этого уже и интерфейс связи подбирайте.
GetSmart
1. У проца родной SPI может работать на 10 МГц или около того?

2. Теоретически на 10 МГц и 100 метрах RS485 может не потянуть. Хотя на практике может сработать при небольшом уровне внешних помех.
rezident
Цитата(GetSmart @ Nov 17 2006, 17:41) *
2. Теоретически на 10 МГц и 100 метрах RS485 может не потянуть. Хотя на практике может сработать при небольшом уровне внешних помех.

Угу. Я тут освежил немного память. Для 10МГц до 10м стандартом EIA/TIA предусмотрено.
http://www.posua.com/user/standards.html#_rs485
пай-мальчик
Здравствуйте!

Скажите, пожалуйста, за 7 лет что-нибудь изменилось по этому вопросу? Немало удивлён тем, что в 2006-м году были предложены варианты, а меня на других форумах даже сейчас пытаются отговорить и говорят, что надо лепить Ethernet.

А мне по-прежнему мерещится, что RS-485 идеально подойдет. Задача: в небольшой квартире с системой умный дом (на CAN-шине) есть желание гонять весь звук по RS-485. "Весь звук" это например микрофон в одной комнате и динамик в другой, или звуковое оповещение на все динамики дома, или звук качества cd-audio с хранилища до пару-тройки определенных колонок. Возможно параллельное использование шины, но не более 2-3 потоков. Т.е. 10 мегабит должно хватить. Устройства ещё не выбрал, т.к. опыт работы есть только с atmega, которые задачу всё-равно не потянут.

Можно сделать очень гибкую систему, а самое главное со временем её расширять. Можете посоветовать в какую сторону копать? sm.gif Поразбираться с новыми железками только рад буду. Приоритет на handmade (ЛУТ, фоторезист, паяльник, программатор), а не пойди купи 10 raspberry и гоняй всё через них sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.