Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SPI на скорости 1Мбит между двуми MCU
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
BECHA1977
Силовой преобразователь 2кВт содержит два DSP микроконтроллера Freescale 56F801 и 56F803. Между ними сделан обмен информацией по SPI. Минимальная частота обмена которую можно установить ~1Мбит (40Мгц/32). Кроме того в цепях SPI присутствует гальваническая развязка на базе 6N137. Длина соединительных дорожек около 20см. При работе преобразователя на нагрузку SPI начинает "ловить" помехи передача информации прекращается. Посоветуйте пожалуйста помехоустойчивое схемотехническое решение.
rezident
Переходите на асинхронный интерфейс и используйте дифференциальные приемопередатчики RS422/RS485.
Кстати, pull-up резистор на выходе у 6N137 какой величины?
yuri_d
Непонятно почему Вы указали минимально возможной частоту передачи 40МГц/32. Согласно reference manual на эти процессоры можно установить коэффициент деления 256, тоесть получить частоту в 8 раз меньше.

Если можно менять схему, то попробуйте применить гальваническую развязку с push-pull выходными каскадами. Хорошо будет смотреться ADuM1401 от Analog Devices.

Если схему менять нельзя, то попробуйте поставить RC фильтр непосредственно у входа процессора. Фронты сигнала конечно завалятся, но при этом сильно уменьшится величина помехи от наводки.
BECHA1977
Цитата
Переходите на асинхронный интерфейс и используйте дифференциальные приемопередатчики RS422/RS485.
Кстати, pull-up резистор на выходе у 6N137 какой величины?

на коллекторах 6N137 висят 470 резисторы к 3.3В. принимающие ноги MCU зашунтированы 51нФ на землю.

Цитата(yuri_d @ Dec 6 2007, 01:01) *
Непонятно почему Вы указали минимально возможной частоту передачи 40МГц/32. Согласно reference manual на эти процессоры можно установить коэффициент деления 256, тоесть получить частоту в 8 раз меньше.


не знаю где вы увидели 1/256, вот блок-схема модуля SPI


Цитата(yuri_d @ Dec 6 2007, 01:01) *
Если можно менять схему, то попробуйте применить гальваническую развязку с push-pull выходными каскадами. Хорошо будет смотреться ADuM1401 от Analog Devices.

насколько я понял, нужно стаыить развязку как можно ближе к приемнику чтобы токовый сигнал проходил большее расстояние, чем потенциальный. Выходит надо ставить два оптрона около slave mcu (sck+mosi) и один около master mcu (miso) ?

Цитата(yuri_d @ Dec 6 2007, 01:01) *
Если схему менять нельзя, то попробуйте поставить RC фильтр непосредственно у входа процессора. Фронты сигнала конечно завалятся, но при этом сильно уменьшится величина помехи от наводки.

RC есть.
spf
Цитата
насколько я понял, нужно стаыить развязку как можно ближе к приемнику чтобы токовый сигнал проходил большее расстояние, чем потенциальный. Выходит надо ставить два оптрона около slave mcu (sck+mosi) и один около master mcu (miso) ?

Нет, предлагается видимо ставить развязку всего и на каждом конце.
ИМХО. Это не вариант для линии в 20см.
Даже если навертите развязок, то помехи сядут на развязанный участок.
А SPI как известно работает по фронтам, любая помеха на клоках приводит к ошибке.

Цитата
Переходите на асинхронный интерфейс и используйте дифференциальные приемопередатчики RS422/RS485.

+100. Полностью поддерживаю.

PS:
А если и это не поможет, то можно попробовать связать контроллеры при помощи CAN, при возникновении ошибок на линии, передача сообщения будет повторена автоматически.
smile.gif
BECHA1977
Цитата(spf @ Dec 6 2007, 11:36) *
Нет, предлагается видимо ставить развязку всего и на каждом конце.

с двух сторон линии по развязке? а смысл? Изначально развзка нужна т.к. MCU "cидят" на разных землях.

Цитата(spf @ Dec 6 2007, 11:36) *
+100. Полностью поддерживаю.

а трансиверы 485/422 поддерживают скорости порядка 1-2Мбит?

Цитата(spf @ Dec 6 2007, 11:36) *
А если и это не поможет, то можно попробовать связать контроллеры при помощи CAN, при возникновении ошибок на линии, передача сообщения будет повторена автоматически.

56f801 не имеет модуля CAN а в 56F803 CAN "занят".
rezident
Цитата(BECHA1977 @ Dec 6 2007, 13:41) *
а трансиверы 485/422 поддерживают скорости порядка 1-2Мбит?

Да. См., например, у Maxim. По ссылке таблица драйверов >=1Mbps с изоляцией >=1000V. Например, MAX1480A/MAX1490A давно выпускаемые и проверенные драйверы. Правда не самые маленькие по габаритам и цене.
spf
Цитата(rezident @ Dec 6 2007, 14:24) *
Да. См., например, у Maxim. По ссылке таблица драйверов >=1Mbps с изоляцией >=1000V. Например, MAX1480A/MAX1490A давно выпускаемые и проверенные драйверы. Правда не самые маленькие по габаритам и цене.

Зачем там развязка на 20 см по одной плате, монстр да и только.
Тогда уже проще и дешевле взять TOSLINK, да и не париться. Помех для оптики еще не придумали smile.gif
yuri_d
Цитата(BECHA1977 @ Dec 6 2007, 10:14) *
не знаю где вы увидели 1/256, вот блок-схема модуля SPI

Сам с этими процессорами не работал, поэтому взял MC56F0000RM с сайта freescale (http://www.freescale.com/files/dsp/doc/ref_manual/MC56F8000RM.pdf?fsrch=1&WT_TYPE=Reference%20Manuals&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation). На странице 12-4 ровно такая же диаграмма, но коэффициенты деления от 2 до 256. Возможно у Вас другой (или более старый) документ с описанием SPI.

Цитата(BECHA1977 @ Dec 6 2007, 10:14) *
на коллекторах 6N137 висят 470 резисторы к 3.3В. принимающие ноги MCU зашунтированы 51нФ на землю.

Проверьте еще раз номинал конденсатора на землю. С таким работать не будет вообще: постоянная времени 24 мксек слишком большая для частоты передачи 1МГц. Например на тактовом выводе (SCK) будет пилообразное напряжение с размахом меньше 100 мВ и средним уровнем меньше десятых долей вольта.

Цитата(BECHA1977 @ Dec 6 2007, 10:14) *
насколько я понял, нужно стаыить развязку как можно ближе к приемнику чтобы токовый сигнал проходил большее расстояние, чем потенциальный. Выходит надо ставить два оптрона около slave mcu (sck+mosi) и один около master mcu (miso) ?

Развязку нужно ставить на границе раздела земляных планов. При этом ещё надо следить, чтобы сигналы не проходили над чужой землей.

А сигнал SS у Вас между процессорами не идет? Если так, то могут быть проблемы с синхронизацией.
BECHA1977
Цитата(yuri_d @ Dec 6 2007, 13:30) *
Сам с этими процессорами не работал, поэтому взял MC56F0000RM с сайта freescale (http://www.freescale.com/files/dsp/doc/ref_manual/MC56F8000RM.pdf?fsrch=1&WT_TYPE=Reference%20Manuals&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation). На странице 12-4 ровно такая же диаграмма, но коэффициенты деления от 2 до 256. Возможно у Вас другой (или более старый) документ с описанием SPI.

да вроде наоборот самый новый.
http://www.freescale.com/files/dsp/doc/use...T=Documentation

Цитата(yuri_d @ Dec 6 2007, 13:30) *
Проверьте еще раз номинал конденсатора на землю.

я ошибся 51пФ а не 51нФ


Цитата(yuri_d @ Dec 6 2007, 13:30) *
Развязку нужно ставить на границе раздела земляных планов. При этом ещё надо следить, чтобы сигналы не проходили над чужой землей.

тогда не понятно как сделать "токовую петлю" на силовой плате - граница раздела земель посредине платы, а MCU ближе к краям.

Цитата(yuri_d @ Dec 6 2007, 13:30) *
А сигнал SS у Вас между процессорами не идет? Если так, то могут быть проблемы с синхронизацией.

не идет, проблемы решаются програмно. на выключенной "силе" сбоев приема/передачи нет.
alexander55
Цитата(BECHA1977 @ Dec 5 2007, 20:34) *

1. Преобразователи RS232/RS485.
2. Выполните монтаж диф. пары следующим образом :
- дорожки идут рядышком (как можно ближе)
- отсутствие переходных отверстий между ними.
Попробую найти ссылку (как найду добавлю).
http://www.elart.narod.ru/articles/article27/article27.htm
Здесь много найдете
http://www.elart.narod.ru/
yuri_d
Цитата(BECHA1977 @ Dec 6 2007, 14:35) *
да вроде наоборот самый новый.
http://www.freescale.com/files/dsp/doc/use...T=Documentation

Да я ошибся: посчитал, что 56F801 и 56F801X это одно и тоже.

Цитата(BECHA1977 @ Dec 6 2007, 14:35) *
тогда не понятно как сделать "токовую петлю" на силовой плате - граница раздела земель посредине платы, а MCU ближе к краям.

Положение развязки на границе земляных планов - наиболее правильное. При этом одна сторона микросхемы находится над первой землей, а вторая сторона - над второй. При этом ещё обратите внимание на необходимость электростатического барьера (линия выводов одной стороны, затем проводник, подключенный с обоих сторон к земле этой стороны, затем разрыв во всех слоях ПП, затем земляной проводник, подключенны к земле другой стороны, и нанонец линия выводов другой стороны). Если микросхема не SMD, то барьер необходимо строить на всех слоях ПП.

Если под "токовой петлей" подразумевается питание излучающего диода оптопары, то подключайте анод к плану 3.3В, далее непосредственно у вывода катода ставим токозадающий резистор и далее ведем трассу к выводу процессора. Смысл именно такого соединения в уменьшении длинны высокоомной (и следовательно более восприимчивой к помехе) части.

Есть ещё одна высоомная часть: от коллектора выходного транзистора оптопары ко входу микросхемы. При закрытом транзистроре сопротивление источника сигнала - это сопротивление резистора на 3,3В. Будем иметь 470 ом, что на мой взгляд слишком много. Именно поэтому я рекомендую ставить развязку с push-pull выходным каскадом.

А вообще лучше не гадать о причине сбоев, а посмотреть на сигналы осциллографом (лучше цифровым с памятью).
BECHA1977
спасибо всем за ответы - все пляски с бубном не дают глобального решения проблемы. некоторое улучшение заметно, но этого все равно недостаточно. Осциллографом смотрел - на шум появляется, но небольшой, а вот CRC пакетов совпадать перестает - это видно глазами (выведено на светодиод).

Следующий вопрос - есть идея сделать spi или подобный интнрфейс на тех же ногах програмным и более медленным (rs485 на скорости 19200 работает четко). Какие реализации (желательно с примерами) посоветуете?
repairDV
У меня задача аналогичная. Пока не изменил кварцы у 56f803 на генераторы, проц зависал безнадёжно. Также пытался для связи по SPI использовать 6N137. Похоже, эти оптопары для роли связи вообще не подходят. Для связи нужно использовать микросхемы, предназначенные для связи. Серия 56F8xx, по моему личному впечатлению - лучшее, что выпускается в Европе и Америке, но не менее 56f807. Для такого сурьёзного проджекта нужно что-то более позднее.
BECHA1977
Цитата(repairDV @ Dec 17 2007, 13:59) *
У меня задача аналогичная. Пока не изменил кварцы у 56f803 на генераторы, проц зависал безнадёжно. Также пытался для связи по SPI использовать 6N137. Похоже, эти оптопары для роли связи вообще не подходят. Для связи нужно использовать микросхемы, предназначенные для связи. Серия 56F8xx, по моему личному впечатлению - лучшее, что выпускается в Европе и Америке, но не менее 56f807. Для такого сурьёзного проджекта нужно что-то более позднее.


у меня с самими контроллерами никаких проблем - работают как часы.
Настовьяк Артём
А чем не нравится развязка Si54XX? Да, дороговато немного, зато 150Mb/s.
Использую такую для развязки МК с УАРТ и моста УАРТ->ЮСБ, работает без малейших нареканий.
repairDV
А на каком расстоянии? (Si4221 c SPI - тоже неплохо)
BECHA1977
переписал программу, написал софтовый UART - прекрасно работает в обе стороны не сбиваясь. Оптроны SFH690 (медлненные).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.