Связь двух МК через обычный порт

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Связь двух МК через обычный порт

Сообщение Engineer_Keen »

Если SPI аппаратный, то:
1) на обоих МК настраиваем SPI (мастер-слейв, скорость и пр. - обычно это пара регистров)
2) когда нужно передать информацию, опускаем ногу CS у мастера и кидаем ему в регистр SPDR байт, который нужно передать, если нужно передать более 1 байта, ждем конца передачи (по флагу или по прерыванию) и кладем в SPDR следующий байт.
3) на слейве ловим прерывание от SPI и читаем SPDR.
Вот и все.

Точно также UART, I2C, только регистры и настройка другие.
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

А вот, к примеру, в USART скорость надо выбирать в зависимости от кварца. В SPI тоже так же?
И ещё: если у меня кварц 7,3 МГц, то какая скорость должна быть?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Связь двух МК через обычный порт

Сообщение Engineer_Keen »

В случае с USART, скорость должна точно соответствовать у обоих контроллеров (+-%). В SPI все проще, скорость передачи не должна превышать 1/4 частоты слейва (иначе не он успеет считывать данные), и не может быть болше чем 1/2 частоты мастера (в силу конструкции контроллера).
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Связь двух МК через обычный порт

Сообщение SmarTrunk »

Потому что в SPI вместе с данными передаются и синхроимпульсы, и данные принимаются по фронту (или спаду) синхроимпульсов.
Аватара пользователя
radiolubitel2011
Встал на лапы
Сообщения: 136
Зарегистрирован: Чт фев 10, 2011 21:31:51
Откуда: Ульяновск
Контактная информация:

Re: Связь двух МК через обычный порт

Сообщение radiolubitel2011 »

А у вас случайно нет примера кода USART или SPI (на C/C++ желательно)? Просто я что-то не соображу никак, как всё это сделать...
s64
Потрогал лапой паяльник
Сообщения: 321
Зарегистрирован: Пн окт 18, 2010 21:18:21

Re: Связь двух МК через обычный порт

Сообщение s64 »

откраваем даташит на понравившийся МК, там и примеры есть и разжевано все необходимое. Будут трудности - спрашивай.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»