Цитата(Tarakanich @ Nov 29 2008, 07:12)

Ни в одном описании не нашел длины линии связи, подозреваю что не велика. Хочется около 5 МГц.
Длина линии связи зависит от нескольких факторов, поэтому прямо так в документации не регламентируется. Попробую построить объяснение "на пальцах"
Представьте себе одиночный импульс который был сгенерирован на одном конце линии и "прибежал" на другой конец. У него есть два варианта: полностью поглотиться в нагрузке приемника, либо частично или полностью отразившись "убежать" назад к источнику сигнала. В свою очередь у источника сигнала его никто не ждет и принимать не желает, поэтому импульс "бежит" опять к приемнику сигнала. И т.д. было до бесконечности, если бы в линии связи не было затухания и на концах линии сигнал бы частично не поглощался.
Чем это плохо? А тем, что вместо одного импульса на входе приемника получаем их множество, "прибежавших" ко входу с различной задержкой. Задержка определяется тем, что скорость ЭМ волны (скорость света) является вовсе не бесконечной величиной. Так что время задержки будет зависеть впрямую от
длины линии. Амплитуда повторных импульсов будет зависеть от степени затухания сигнала в линии и от согласования импеданса линии и входа приемника. Слишком больше затухание делать нельзя, потому что тогда импульс может быть настолько ослаблен, что вход приемника его уже не сможет воспринять. А вот уравнять импедансы линии и входа это наипервейшая задача, которую к сожалению не всегда можно сделать впрямую. Если их импеданс очень близкий, то энергия всего импульса поглотится нагрузкой и отраженка будет слабой или отсутствовать. Но ведь входное сопротивление у современной логики весьма высокое, а у линии связи волновое сопротивление обычно
невысокое. Если втупую зашунтировать вход сопротивлением близким к волновому сопротивлению линии, то выходной каскад передатчика может и не "прокачать" его. Тогда нужно будет дополнительно буферировать выходной сигнал. Лучше всего в таком случае использовать сбалансированный (дифференциальный) интерфейс, который проще поддается согласованию. Оправдано это или нет см. ниже.
Как все это проявляется? Когда на входе устройства присутствует два или более импульса вместо одного "истинного" то, естественно могут возникнуть сбои в передаче. Поскольку вы используете синхронный интерфейс (SPI), то наверняка знаете, что в нем данные передаются на выход синхронно с одним фронтом, а "защелкиваются" на входе по другому фронту тактового сигнала. Сбои в отношении тактового сигнала проявляются как ложное защелкивание данных вследствие того, что приемник "не знает" какие импульсы "истинные", а какие возникли вследствие отраженки. Аналогично с данными. Фронт изменения потенциала на линии данных может многократно отражаться бегая по линии туда-сюда и в результате к моменту прихода (истинного) фронта тактового сигнала может "защелкнуться" не новое, а старое состояние линии данных.
Как с этим бороться? Для начала следует оценить все "опасности". Для примера возьмем длину линии из сообщения Artem_Petrik (40см) и вашу частоту (5МГц). Отраженный сигнал в линии данных должен пробежать туда-сюда 2*0,4м со скоростью 3*10^8м/с, поэтому он будет запаздывать на 2*0,4м/(3*10^8м/с)=2,67нс. Фронт по которому будут защелкнуты данные придет через 1/2*1/5МГц=100нс. Т.е. в этот промежуток времени может сравнительно "безопасно" "прибежать" до 37 переотраженных импульсов. Понятно, что в реальности столько не будет. Во-первых, у реальной линии есть свой импеданс (даже у дорожки на печатной плате и то индуктивность порядка 10нГн/1см, не говоря уже о каком-нибудь ленточном кабеле на котором защелкнуты разъемы IDC). А во-вторых, у выхода, от которого сигнал будет переотражаться, сопротивление обычно весьма небольшое (в отличие от высокоимпедансного входа), поэтому амплитуда отраженного сигнала будет там ослаблена. Так что при таких данных 2-3-4 отраженных импульса (достаточной по амплитуде для срабатывания входной логики приемника величине) на
шине данных нам ничего не испортят. Но ведь такие же импульсы могут быть и на линии тактирования! Да, но давайте смотреть, какая логика у нас на входе? Она вообще способна реагировать на импульсы длительностью 2,67нс? Если нет, то неплохо, если же да, то имеем проблему. Можно попробовать заменить ее на логику с меньшим быстродействием. Например, вместо 74AC04 тут будет предпочтительнее 74HC04. Распиновка и диапазон напряжений питания такие же, а быстродействие ниже, что в данном случае нам на руку. Для увеличения затухания в линии также применяют последовательное включение (с линией) резисторов номиналом от десятков до сотни Ом. Резистор вносит потери в добротность линии связи и способствует более быстрому затуханию амплитуды переотраженных импульсов.
Все вышеизложенное только одну часть проблемы освещает - процессы в самой линии. Но ведь существует еще и
внешнее воздействие на линию связи. А вот как бороться с внешними ЭМИ, читайте, например, в статье Алексея Кузнецова "
Помехоустойчивые устройства".
P.S. извиняюсь, если что-то непонятно или нелогично изложил. Вопрос-то не такой уж простой, чтобы вот так "галопом по Европам" можно было его полно и понятно осветить

Просто ответы типа такого что дал Artem_Petrik (это не наезд и не попытка оскорбления!) "у меня на ~40см в 19" стойке работает" в общем-то ничего не гарантируют и не объясняют, почему именно работает или не работает.