Полная версия этой страницы:
COM-порт для SPI
Eduard_k
Jul 7 2006, 22:26
Есть ли какая нибудь возможность управлять линиями COM-порта по отдельности? Т.е. чтобы каким-то образом в один момент времени задавать уровни выходов порта отдельно. Чтобы использовать COM-порт для каких-то отладочных целей. Как можно реализовать SPI на COM-порту? Есть ли кикие нибудь ньюансы при использовании USB<->COM преобразователей т.е. при отладке виртуальными COM-портами?
Порекомендуйте ресурс по программированию на котором можно получить полную информацию о работе с COM-портом в среде MS Visual C++.
Спасибо.
Rx, Tx дергать не получится, можно только сигналы управления вручную переключать. SPI на COM порту реализовать врядли получится, по крайней мере просто проводками, тут контроллер понадобится. Виртуальны COM порт (тот, что USB->COM) ничем не отличается от обычного по крайней мере под виндами.
Eduard_k
Jul 8 2006, 21:17
Если можно дергать сигналы управления то почему на них нельзя реализовать SPI? Дергать их соответствующим образом по таймеру и будет SPI. Как думаете господа?
plombir
Jul 9 2006, 03:02
SPI на COM порте:
Схематехника - м/с мах232 или подобная с 2-мя каналами в одну сторону и с 2-мя в другую. Резисторы 4k7 на землю после СОМа. Для Delphi использовал компонент TMS Async32 10 Sep 2002 srс. Для управления ногой Тх использовал команду "break" (разрыв порта в высоко-импедансное состояние). С остальными управляющими ногами проблем не было. Скорость 115Кб/с.
Столкнулся с маленьким траблом. Под ХР из за её особенностей, наблюдались ошибки (примерно 30-50%) при передачи пакетами по 256 байт. Под W98 - ниодной ошибки. В этом форуме мне присоветовали блокировать все процессы под ХР и использовать нулевой уровень.
http://electronix.ru/forum/index.php?showtopic=11244Проверял на переходнике USD->COM - работает как часы.
rezident
Jul 9 2006, 18:26
Цитата(plombir @ Jul 9 2006, 09:02)

SPI на COM порте:
Схематехника - м/с мах232 или подобная с 2-мя каналами в одну сторону и с 2-мя в другую. Резисторы 4k7 на землю после СОМа. Для Delphi использовал компонент TMS Async32 10 Sep 2002 srс. Для управления ногой Тх использовал команду "break" (разрыв порта в высоко-импедансное состояние). С остальными управляющими ногами проблем не было. Скорость 115Кб/с.
А как вы всего на двух выходных линиях передатчика сделали SPI? Без CS(SS)-а что ли? Как в таком случае начало/конец пакета определяется?
plombir
Jul 9 2006, 21:05
Цитата(rezident @ Jul 9 2006, 22:26)

А как вы всего на двух выходных линиях передатчика сделали SPI? Без CS(SS)-а что ли? Как в таком случае начало/конец пакета определяется?
Для моей задачи SS сигнал не требовался. Цель данного девайса - программатор для ATMega64 и тут
же через UART контроллера прошивалась 16Мбит flash м/с. Начало пакета - это комп как мастер. Конец пакета, в данном случае, не надо отслеживать. Длина известная.
Правда, Reset на м/к я подключил не через мах232. Резистор 4к7 + стабилитрон 5V1. По этой анологии и SS можно вывести.
Цитата(Eduard_k @ Jul 8 2006, 01:26)

Есть ли какая нибудь возможность управлять линиями COM-порта по отдельности? Т.е. чтобы каким-то образом в один момент времени задавать уровни выходов порта отдельно. Чтобы использовать COM-порт для каких-то отладочных целей. Как можно реализовать SPI на COM-порту? Есть ли кикие нибудь ньюансы при использовании USB<->COM преобразователей т.е. при отладке виртуальными COM-портами?
Порекомендуйте ресурс по программированию на котором можно получить полную информацию о работе с COM-портом в среде MS Visual C++.
Спасибо.
У меня есть нечто подходящее. Работает с LPT или COM, для COM схема стыка простая (см. на
http://avr.nikolaew.org/debug) - такая же как для отладчика. То есть несколько резисторов и диодов. Позволяет управлять линиями данных и строба, а также обмен байтом организовать.

Если интересно, выложу где-нибудь.
Что касается виртуальных USB COM-портов, то все работает, но очень медленно. Слышал только про FT2232 - к нему есть драйвер, организующий SPI - но сия микросхема в руки пока не попадалась, так что проверить/пощупать не мог.
Цитата(-Al- @ Jul 8 2006, 16:28)

Rx, Tx дергать не получится, можно только сигналы управления вручную переключать. SPI на COM порту реализовать врядли получится, по крайней мере просто проводками, тут контроллер понадобится. Виртуальны COM порт (тот, что USB->COM) ничем не отличается от обычного по крайней мере под виндами.
RX - это вход )), а вот TX можно дергать если UART 16450 или 16550, такие микросхемы раньше на персоналках стояли, сейчас, вероятно, ничего не изменилось.
Цитата(nml @ Jul 10 2006, 13:57)

Что касается виртуальных USB COM-портов, то все работает, но очень медленно.
Странно, виртуальные порты обычно шустрее стандартных.
Цитата
Слышал только про FT2232 - к нему есть драйвер, организующий SPI - но сия микросхема в руки пока не попадалась, так что проверить/пощупать не мог.
Так дело всё же в дровах? Может кто встречал и на другие чипы?
Всеми сигналами СОМ порта можно управлять.
SPI протокол хоть и считается 3-проводным, однако для него необходимо 6 линий
связи . Входные (для СОМ порта) RDY , OUT и выходные SCLK,CS,IN,RESET.
В СОМ порту , к сожаленю, наоборот 5 входных линий RxD,DCD,CTS,DSR,RI и 3 выходных
TxD,RTS,DTR.
Если не использовать CS(заземлить), а TX использовать для сброса, то в принципе СОМ порт можно
использовать для SPI протокола.Например:
TxD -> RESET
RTS -> SCLK
DTR -> IN
DCD -> OUT
CTS -> RDY
и необходимо согласовать уровни.
rezident
Aug 10 2006, 13:38
Цитата(upc2 @ Aug 10 2006, 16:01)

Всеми сигналами СОМ порта можно управлять.
SPI протокол хоть и считается 3-проводным, однако для него необходимо 6 линий
связи .
Во-первых SPI это не протокол, а интерфейс. Во-вторых, откуда вы это взяли? Вы знакомы с SPI только по интерфейсу DataFlash что ли?
Цитата(rezident @ Aug 10 2006, 16:38)

Цитата(upc2 @ Aug 10 2006, 16:01)

Всеми сигналами СОМ порта можно управлять.
SPI протокол хоть и считается 3-проводным, однако для него необходимо 6 линий
связи .
Во-первых SPI это не протокол, а интерфейс. Во-вторых, откуда вы это взяли? Вы знакомы с SPI только по интерфейсу DataFlash что ли?
Попробуйте передать по нему без протокола.Зачем реплики? Поделитесь своими познаниями.
rezident
Aug 11 2006, 07:51
Цитата(upc2 @ Aug 11 2006, 10:24)

Цитата(rezident @ Aug 10 2006, 16:38)

Цитата(upc2 @ Aug 10 2006, 16:01)

Всеми сигналами СОМ порта можно управлять.
SPI протокол хоть и считается 3-проводным, однако для него необходимо 6 линий
связи .
Во-первых SPI это не протокол, а интерфейс. Во-вторых, откуда вы это взяли? Вы знакомы с SPI только по интерфейсу DataFlash что ли?
Попробуйте передать по нему без протокола.Зачем реплики? Поделитесь своими познаниями.
Гы

Реплика совершенно в тему. Вот у меня к SPI-порту МК прицеплен регистр с последовательным входом и параллельным выходом 74HC595? Огласите, пожалуйста, название протокола по которому я делаю запись в этот регистр, если вас это не затруднит. Или по-вашему это уже не SPI?
Eduard_k
Aug 11 2006, 08:06
Господа, давайте отставим спор. В теме идет речь об интерфейсе SPI. И о том как реализовать его на RS-232.
Интерфейс вообще имеет 4 вывода, выводы Ready и Reset дополнительные. Первый отсутствует если целевое устройство всегда готово, а сброс может быть реализован глобально Reset (например МК) или вовсе отсутствовать.
Наиболее важными являются именно эти пины - SI, SO, SCLK, CS. О них и будем говорить.
Хотелось бы раздобыть класс/библиотеку для реализации вышеназваных четырех выводов (можно остальные в качестве GPIO) в Visual C++ .NET
Протоколов бывает много.Вот для вашего Гы.
Толковый словарь эл.вычислительной техники.
Бит ориентированный протокол
Протокол шины
Протокол обмена
Интерфейсный протокол
Протокол взаимодействия
Протокол линии передачи данных и т.д.
Это все, что попало под ваш пример.Выбирайте.То , что SPI и интефейс я не отрицаю.
Все это мелочи . Все ошибаются.Вы уточните где моя ошибка.
Тогда я буду знать.А Зы и Гы я не понимаю.
rezident
Aug 11 2006, 09:08
Цитата(upc2 @ Aug 11 2006, 14:27)

То , что SPI и интефейс я не отрицаю.
Все это мелочи . Все ошибаются.Вы уточните где моя ошибка.
Тогда я буду знать.А Зы и Гы я не понимаю.
SPI это синхронный последовательный интерфейс. Не протокол, а лишь интерфейс. Все.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.