Протокол
SPI
.
Общие сведения. Интерфейс
SPI
(
Serial
Peripheral
Inter
face
), предложенный фирмой
Motorola
, поддерживает протокол синхронного обмена в стандарте
SPI
. Модули
SPI
входят в состав многих микроконтроллеров семейств НС05, НС11 и НС08. Стандарт
SPI
предназначен для связи микроконтроллера с периферийными устройствами, которые могут быть расположены с ним на одной плате.
В качестве периферийных устройств используются простейшие сдвиговые регистры и сложные интегральные схемы со встроенными контроллерами управления (ЦАП, АЦП с цифровой фильтрацией, последовательные запоминающие устройства типа
FLASH
или
EEPROM
, энергонезависимые ОЗУ и др.). Интерфейс
SPI
может быть использован для обмена данными между несколькими микроконтроллерами системы. В микроконтроллерах других производителей протокол
SPI
обычно реализуется одним из контроллеров последовательного интерфейса в качестве альтернативного протокола.
В протоколе
SPI
используется симметричный тактовый сигнал, который имеет одинаковую длительность высокого и низкого уровня. Сначала передается байт, содержащий команду для принимающего устройства. Затем следует необязательный 16–разрядный адрес, после чего — данные в виде множества байтов, которые называются блоком или страницей. Передатчик имеет возможность приостановить передачу данных. Бит данных выставляется на линию до поступления переднего фронта тактового импульса, а считывается до появления заднего фронта. Временной интервал должен составлять не менее 30 нс.
Организация обмена.
На рис. 4.6.1 приведена схема подключения периферийных устройств к микроконтроллеру, в которой контроллер является ведущим устройством, а каждое периферийное устройство ПУ — ведомым. Для обмена данными используется шина с тремя общими линиями связи и индивидуальными линиями
(SS1,
…,
SSN)
для выбора ведомого устройства, при этом:
?
MOSI (Master Output Slave Input)
— линия передачи данных от ведущего МК к ведомому устройству с входом данных
DI;
?
MISO
(Master Input Slave Output)
— линия передачи данных от ведомого устройства с выходом
DO
к ведущему МК;
?
SCK
— линия сигнала стробирования (тактирования) данных.
Представленная на рис. 4.6.1 сеть относится к классу магистрально–радиальных: линии передачи данных и синхронизации относятся к магистральному типу, а линии выбора ведомого устройства — к радиальному.
Обмен данными по протоколу
SPI
протекает в такой последовательности:
? ведущее устройство перед началом обмена выбирает одно из ведомых устройств, устанавливая на его входе
SSn# (n =
1…N;
# — знак инверсии) низкий активный уровень сигнала, а затем последовательно выставляет на линию
MOSI
восемь бит данных, сопровождая каждый бит импульсом синхронизации
SCK;
? ведомое
устройство дешифрирует переданный байт данных и определяет направление обмена:
• если ведомое устройство ПУ
n
должно принимать информацию, то ведущее устройство, не снимая сигнала выбора ведомого
SCn
#, продолжит передачу по линии
MOSI;
• если ведомое устройство должно передавать информацию, то оно активизирует линию
MISO,
и в ответ на каждый импульс синхронизации от ведущего устройства будет выставлять один бит данных;
? ведущее
устройство инициирует завершение обмена установкой на входе
SCn#
ведомого устройства высокого уровня сигнала. Длина посылки обмена должна составлять целое число байтов.
Встроенные в МК фирмы
Motorola
модули
SPI
–контроллеров могут работать как в ведущем, так и в ведомом режимах. Режим назначается путем установки бита регистра управления. Назначение выводов в обоих режимах приведено в табл. 4.6.1. Скорость приема и передачи определяется частотой тактирования межмодульных магистралей МК
fBUS:
? в ведущем режиме скорость обмена не может превышать
fBUS/2;
? в ведомом режиме максимальная скорость обмена равна
fBUS.
В системах с несколькими ведущими устройствами все выводы
MOSI,
MISO
и
SCK
соединяются вместе. Чтобы избежать конфликтов на шине
SPI,
буферы выводов контроллера на время отсутствия связи переводятся в высокоомное состояние.
Устройство управления
SPI
–контроллера с помощью двух бит СРНА (назначает протокол обмена),
CPOL
(определяет полярность сигнала синхронизации
SCK)
обеспечивает работу в четырех режимах (табл. 4.6.2), из которых наибольшее распространение получили режимы 0 и 3, поскольку режимы 0 и 1, 2 и 3 отличаются лишь полярностью тактируемых импульсов.
На рис. 4.6.2 приведены временные диаграммы для всех четырех режимов. Диаграммы относятся как к ведущему, так и к ведомому устройству, поскольку полагаем, что в качестве ПУ используется МК и выводы
MISO
и
MOSI
ведущего МК соединены с аналогичными выводами ведомого. Сигнал
SS#
подается только на ведомое устройство. Вывод
SS
у ведущего устройства не задействован, что соответствует его неактивному состоянию (его диаграмма не представлена). Длина посылки составляет один байт. Рассмотрим особенности протоколов.
Протокол СРНА
= 0. Начало обмена инициируется переводом ведомого устройства в активное состояние установкой сигнала выбора ведомого
SS#
= 0 (рис. 4.6.2).
При передаче по линии
MOSI
(от ведущего к ведомому) первый и все нечетные перепады
SCK,
т. е. фронты тактовых импульсов, используются ведомым устройством для записи текущего бита во внутренний сдвиговый регистр. Ведущее устройство по каждому второму перепаду (по срезу) синхроимпульсов
SCK
заканчивает передачу текущего бита и выставляет на линию очередной бит данных.
При передаче по линии
MISO
(от ведомого к ведущему) бит
D7
передаваемого байта должен быть выставлен ведомым устройством на линию сразу после изменения уровня сигнала
SS#
из 1 в 0. По первому и всем последующим нечетным перепадам (фронтам) тактовых импульсов
SCK
бит принимаемых данных записывается в младший разряд сдвигающего регистра ведущего устройства.
Так как принимаемые биты данных заносятся в регистры приемников по фронту тактовых импульсов, сигнал на линии
SS
выбора ведущего должен быть возвращен в неактивное состояние
SS#
= 1 после передачи каждого байта в любом направлении. Поэтому передача каждого нового байта сопровождается предварительной установкой
SS
в «0» (рис. 4.6.3).
Протокол СРНА = 1
. Начало обмена также инициируется переводом ведомого устройства в активное состояние установкой сигнала выбора ведомого
SS# = 0
(рис. 4.6.2).
При передаче данных по линиям
MOSI
и
MISO
(в обоих направлениях):
? выдвижение очередного бита данных из сдвигающего регистра передатчиков в линию происходит по фронту тактовых импульсов
SCK;
? запись переданного бита в сдвигающий регистр приемников осуществляется по срезу синхроимпульсов
SCK.
Сигнал выбора ведомого может оставаться в активном состоянии
SS#
= 0 в течение передачи нескольких байт информации (рис. 4.6.3).
Протокол
I
2
С.
Общие сведения. Протокол, или стандарт
PC,
разработанный компанией
Philips
в конце 70–х годов для сети микроконтроллеров, реализует последовательный синхронный интерфейс между микропроцессорами и периферийными устройствами, не требующий многочисленных линий для передачи разрядов адреса, данных и сигналов управления.
Основные особенности
интерфейса
I
2
C:
? двунаправленная передача данных между главными и подчиненными устройствами по двухпроводной многоабонентской шине. Необязательность наличия в сети центрального главного узла;
? возможность разделения сетевых ресурсов между несколькими ведущими процессорами;
? арбитраж одновременно передающих устройств без разрушения целостности передаваемых данных;
? последовательная тактовая синхронизация, позволяющая осуществлять через одну последовательную шину передачу данных с различными скоростями. Имеется возможность использования синхронизации как механизма квитирования для приостановки и возобновления последовательной передачи.
Структура интерфейса.
Последовательный интерфейс
I
2
C
представляет собой шину, к которой подсоединены контроллеры и периферийные устройства (рис. 4.6.4). Шина содержит две линии:
? линию
SDA
для двунаправленной передачи данных;
? линию
SCL,
по которой передаются синхроимпульсы для стробирования данных.
Обе линии подключены через резисторы
R
к шине питания
Vdd,
или, как говорят, «подтянуты» к высокому уровню потенциала. Все устройства соединены с линиями по схеме «монтажное И». Такое схемное решение позволяет устройствам управлять линиями, переводя их в состояние высокого или низкого уровня. Двухпроводная линия используется для определения начала передачи данных, а также для передачи самих данных.
Формат команды.
Согласно протоколу интерфейса
I
2
С каждое устройство имеет свой адрес. Все подключенные к шине устройства следят за выставляемым на шину адресом и сравнивают его с собственным адресом. Поэтому для инициирования обмена данными с требуемым ведомым устройством ведущее устройство должно выставить на шину его адрес. Адрес получателя содержит 7 бит. Первые четыре бита адреса обычно служат для определения типа выбираемого устройства в соответствии со следующим соглашением:
? 0000 — зарезервированный адрес;
? 0010 — синтезатор голоса;
? 0011 — аудио – интерфейс;
?
0100 — звуковой генератор;
? 0111 — жидкокристаллический или светодиодный дисплей;
? 1000 — видео – интерфейс;
? 1001 — аналого–цифровой и цифро–аналоговый интерфейсы;
? 1010 — последовательная память;
? 1100 — управление радиоприемником;
? 1101 — часы/календарь;
? 1111 — зарезервировано для использования 10–разрядного адреса.
Следующие три бита используются для выбора одного из восьми устройств, тип которых задан 4–разрядным кодом. Например, микросхемы памяти
EEPROM
с последовательной выборкой используют эти биты для выбора адресата внутри устройства.
Существует также 10–разрядный стандарт для передачи адреса. Вместе с адресом передается бит направления передачи
R/W:
? при
R/W
= 0 реализуется режим записи, в котором данные поступают из ведущего устройства в ведомое;
? при
R/W =
1 осуществляется режим чтения, в котором данные передаются в обратном направлении — из ведомого устройства в ведущее. Для завершения приема байта в формате команды предусмотрен бит подтверждения АСК#.
Формат сообщения, поступающего от ведущего устройства к ведомому, показан на рис. 4.6.5.
Принцип функционирования.
Ведущее (главное) устройство генерирует все последовательные синхроимпульсы и сигналы
START
и
STOP
, определяющие условия начала и конца передачи данных. Режимы обмена данными зависят от сигналов
START
,
STOP
и от бит
SCL
,
SDA
(табл. 4.6.3).
При отсутствии передаваемых данных шина находится в ждущем состоянии (режиме ожидания). На линиях
SDA
и
SCL
установлен высокий логический уровень — потенциал
Vcc
. Для инициирования передачи данных ведущее устройство, запрашивающее управление шиной, устанавливает низкий уровень сначала на линии
SDA
, а затем на линии
SCL
. Переход в стартовое состояние
START
происходит в момент изменения
SDA
из высокого уровня в низкий при высоком уровне
SCL
(рис. 4.6.6). В процессе пересылки данных такое состояние шины является нерабочим, так как прием передаваемых данных производится только при высоком (активном) уровне синхросигнала на линии
SCL
.
Адрес и данные передаются синхронным способом, начиная со старшего бита. После передачи 8 бит ведущее устройство переводит линию данных
SDA
в ждущее состояние, до появления на ней сигнала подтверждения приема данных А
S
К# = 0 от ведомого устройства, после получения которого на обеих линиях устанавливается низкий уровень. Затем производится пересылка следующего байта или шина переводится в состояние завершения передачи
STOP
.
Для завершения передачи данных выполняются обратные действия: сначала устанавливается высокий уровень сигнала на линии
SCL
, а затем — на линии данных
SDA
. Переход в состояние
STOP
происходит в момент изменения
SDA
из низкого уровня в высокий при высоком уровне
SCL
(рис. 4.6.6). По завершении передачи приемник может готовиться к следующему запросу данных.
Отметим, что в некоторых устройствах требуется повторная посылка стартового бита, чтобы сбросить принимающее устройство в исходное состояние для приема следующей команды. Например, при чтений
EEPRO
М–памяти с последовательной выборкой первая команда посылает адрес ячейки, из которой производится считывание, а вторая команда выполняет чтение данных по этому адресу.
Арбитраж.
Протокол
I
2
C
предоставляет возможность инициирования процесса передачи данных несколькими ведущими микроконтроллерами (
Multi
–
mastering
). Если один микроконтроллер установил стартовое состояние и взял управление шиной на себя до того, как другой попытался сделать то же самое, то это не вызывает никаких проблем. Проблема возникает, когда несколько устройств одновременно инициируют стартовое состояние. В этом случае возникают столкновения, или коллизии, которые разрешаются путем арбитража их запросов. Для реализации арбитража используется подключение устройств по схеме «монтажное И». Поэтому, если один из передатчиков выставляет бит адреса А
n
= 0, то другой передатчик не может выставить А
k
= 1. Он отключается от шины и ждет, когда наступит состояние
STOP
— конец передачи, после чего повторяет свой запрос. Таким образом, арбитраж выигрывает ведущее устройство, которое обращается к ведомому устройству с меньшим значением текущего бита адреса.
О программной реализации протокола.
Протокол
I
2
C
может быть легко реализован программным путем. Программная реализация наилучшим образом подходит для сети с одним ведущим устройством. В этом случае отсутствует необходимость в синхронизации с другими устройствами или приеме сообщений от других ведущих устройств. Эти устройства могут работать с такой высокой скоростью, какая не обеспечивается при программной реализации.
Виды обмена.
В зависимости от направления передачи возможны два вида обмена данными для
I
2
C
–шины:
? передача данных от главного (ведущего) передатчика к подчиненному (ведомому) приемнику, при которой:
• первый байт, передаваемый главным передатчиком, является адресом подчиненного приемника;
• последующие посылки являются байтами данных;
• после каждого принятого байта подчиненный приемник возвращает бит подтверждения (АСК# = 0);
? передача данных от подчиненного (ведомого) передатчика к главному (ведущему) приемнику, при которой:
• первый байт, передаваемый главным приемником, является адресом подчиненного передатчика;
• подчиненный передатчик возвращает бит подтверждения АСК#;
• следующие байты данных передаются подчиненным передатчиком главному приемнику;
• главный приемник возвращает бит подтверждения АСК# после каждого принятого байта, кроме последнего. В конце последнего принятого байта главный приемник возвращает НЕТ ПОДТВЕРЖДЕНИЯ.
Модуль контроллера интерфейса
I
2
C
, который удовлетворяет спецификации
I
2
C
–шины и поддерживает два вышеперечисленных типа передачи данных, может работать в следующих четырех режимах.
Режим главного передатчика.
В этом режиме из главного передатчика (ведущего устройства) в приемник (подчиненное, или ведомое устройство) осуществляется:
? по линии
SDA
последовательный вывод данных. Первый переданный байт содержит адрес подчиненного приемного устройства (7 бит) и бит направления данных
R
/
W
= 0. Последующие байты являются данными. После отправки каждого байта главный передатчик ожидает от подчиненного устройства бит подтверждения
ASK
(пунктир на рис. 4.6.6). Формируемые главным передатчиком сигналы
START
и
STOP
служат для указания начала и конца сеанса последовательного обмена;
? по линии
SCL
передача последовательности синхроимпульсов для стробирования передаваемых данных в приемнике.
Режим главного приемника.
В этом режиме:
? инициатором обмена является главный приемник — ведущее устройство. Он передает первый байт, содержащий адрес (7 бит) передатчика (подчиненного, или ведомого устройства) и бит направления данных
R/W
= 1;
? последовательные данные (по 8 бит) передаются по линии
SDA
от передатчика к главному приемнику,
? после каждого принятого байта приемник выставляет сигнал подтверждения приема
(ASK#
= 0);
? сигналы
START
и
STOP
формируются передатчиком и передаются по линии данных
SDA;
? импульсы синхронизации формируются главным приемником и передаются по линии
SCL.
Режим подчиненного приемника.
В этом режиме сигналы
START
и
STOP,
адрес и последовательные данные, бит направления
R/W
= 0, бит подтверждения
ASK
= 0 и синхроимпульсы формируются передатчиком и передаются по линиям
SDA
и
SCL
на входы подчиненного приемника. Распознавание адреса выполняется аппаратными средствами приемника после получения адреса подчиненного устройства и бита направления.
Режим подчиненного передатчика.
В этом режиме:
? инициатором обмена и ведущим устройством является главный приемник. Он формирует и передает по линии
SDA
сигналы
START
и
STOP,
биты подтверждения
ASK
и только первый байт данных, содержащий адрес (7 бит) подчиненного передатчика и бит направления передачи данных
R/W
= 1, а по линии
SCL
— синхроимпульсы;
? в принятом первом байте подчиненный передатчик изменяет на обратное направление обмена
(R/W
= 0) и начинает передавать последовательные данные по линии
SDA
к приемнику. После каждого переданного байта передатчик выявляет наличие на линии бита подтверждения
ASK
и анализирует его.
Протокол
CAN.
Общие сведения.
Протокол
CAN (Controller Area Network
— сеть контроллеров) разработан компанией
Bosch
как сетевое решение для связи компьютерных систем, применяемых в автомобилях. До его появления не существовало единого стандарта и для связи различных электронных устройств автомобиля использовалось около трех миль проводов весом свыше 90 кг. По замыслу разработчиков протокол
CAN
должен был обеспечить:
? простоту и небольшое количество разъемных контактов для повышения механической надежности;
? легкость подключения и удаления устройств;
? низкую чувствительность к электромагнитным помехам;
? высокоскоростную надежную передачу данных в широковещательном
(broadcast)
режиме в мультимастерной среде (без выделения ведущих и ведомых устройств).
Положения стандарта соответствуют двум начальным уровням (физическому и канальному) семиуровневой модели взаимодействия открытых систем
ISO/OSI.
Они закреплены в спецификации 2.0А/В фирмы
«Bosch»
и международном стандарте
ISO
11898.
Физическая среда
передачи данных — витая пара, плоский кабель, оптоволокно, радио– и инфракрасные каналы и даже линии электропередач. Структура
CAN
–сети представлена на рис. 4.6.7. Максимальная протяженность сети при использовании стандартных трансиверов (приемопередатчиков) и быстро действующих оптопар для гальванической развязки при скорости передачи 1М бит/с составляет девять метров. Протяженность сети увеличивается при снижении скорости передачи.
В документах приведены следующие полученные практическим путем соотношения «скорость–протяженность» для проводной сети без гальванической развязки: 1М бит/с — 30 м; 500К бит/с — 100 м; 125К бит/с — 500 м; 20К бит/с — 2500 м, 10К бит/с — 5000 м.
Достоинством
CAN
–технологии является сочетание низкой стоимости подключения, простоты и надежности с доступностью элементной базы и инструментальных средств разработки. Ряд производителей применяют
CAN
–интерфейс в выпускаемых ими контроллерах. Модуль контроллера
CAN
имеется в микроконтроллерах семейств НС08 фирмы «
Motorola
», С500 фирмы «
lnfineon
», 89 фирмы «
Pfilips
». Кроме того, существует несколько серийно выпускаемых микросхем (например,
Intel
82527), которые эффективно и с минимальными дополнительными затратами способны выполнить функции
CAN
интерфейса.
Принципы обмена.
Каждое сообщение представляет собой отдельный кадр, или фрейм, который передается как фрагмент асинхронного последовательного потока данных, т. е. пересылка кадров не сопровождается синхросигналами. Приемник и передатчик работают на одной частоте. При использовании протокола
CAN
нулевое значение бита принято называть доминантным, а единичное значение — рецессивным.
В
CAN
–протоколе устройства не имеют собственного имени или адреса. Передаваемое сообщение несет в себе отличительную метку — идентификатор (
ID
). Сообщение принимается всеми устройствами. Каждое устройство на основании идентификатора из совокупности сообщений, транслируемых в данный момент, выделяет «свои». Такой способ адресации обеспечивает гибкий обмен сообщениями, простую возможность добавления устройств в сеть и их отключения.
Согласно протоколу
CAN
передача данных осуществляется с помощью каскадов с дифференциальным выходом (выходных драйверов), что обеспечивает высокую надежность автомобильного оборудования: сохраняется работоспособность сети, даже в том случае, когда один из двух проводников закорочен или оборван. Использование соединения, реализующего «монтажное И», позволяет выполнять арбитраж между различными ведущими устройствами: когда выходные драйверы устройства активны — шина
CAN
переводится в низкое состояние (аналогично протоколу
I
2
C
).
Когда выходной сигнал контроллера не совпадает с уровнем сигнала на линии передачи данных (например, при выдаче 1 на линии оказывается 0), то контроллер останавливает передачу данных до тех пор, пока не завершится пересылка текущего сообщения. Этот простой и эффективный способ арбитража исключает необходимость повторной посылки сообщения при возникновении коллизий на шине.
Типы кадров.
В зависимости от инициатора передачи и ее цели существуют четыре типа кадров:
? кадр данных (
Data
Frame
), предназначенный для непосредственной передачи от 0 до 8 байтов данных. Кадр данных имеет стандартный и расширенный форматы;
? кадр запроса данных (
Remote
Frame
) от удаленного узла, имеющий также стандартный и расширенный форматы. Его отличия от кадра данных проявляются в том, что в формате кадра отсутствует поле данных и бит
RTR
= 1 (см. ниже). При получении кадра запроса данных запрашиваемый узел отвечает передачей кадра данных;
? кадр ошибки (
Error
Frame
), сигнализирующий об ошибке. Он инициируется любым узлом, обнаружившим ошибку, так как по протоколу
CAN
правильность передачи контролируется каждым узлом;
? кадр перегрузки (
Overload
Frame
), используемый для задержки передачи данных или посылки кадра запроса данных (при неготовности приемника или наличии доминантных бит в промежутке между фреймами). В отличие от фрейма ошибки он не влияет на счетчик ошибок и не вызывает повторной передачи сообщения.
Формат кадра
передачи данных с использованием 11–битного идентификатора показан на рис. 4.6.8. Ниже приведено назначение отдельных полей кадра:
?
SOF
(
Start
Of
Frame
) — начало кадра, доминантный бит;
?
ID
— идентификатор, 11– или 19–битный идентификатор сообщения;
?
RTR
(
Remote
Transmission
Request
— запрос передачи данных) — бит, указывающий, что ведущее устройство является передатчиком (при
RTR
= 1) или приемником (при
RTR
= 0) данных. В расширенном формате фрейма вместо
RTR
используется бит
SRR
(
Substitute
Remote
Request
) с рецессивным уровнем;
?
IDE
(
ID
Extension
) — указатель формата:
IDE
= 0 для стандартного формата;
IDE
= 1 для расширенного формата;
?
r
1
/
r
0
— зарезервированные (доминантные) биты;
?
DLC
(
Data
Lenght
Code
— участок кода данных) — 4 бита, указывающие количество передаваемых байт;
?
Data
— от 0 до 8 передаваемых байт в данных, где старший бит идет первым;
?
CRC
— 15–битный код контрольной суммы, за которым следует рецессивный бит;
? АСК (
Acknowledgement
) — 2–битное поле подтверждения готовности (доминантный и рецессивный биты);
?
EOF
(
End
Of
Frame
) — конец кадра (7 рецессивных бит), за которым следует 3 единичных бита, разделяющие кадры.
Чтобы сохранить синхронизацию при передаче длинной последовательности одинаковых бит, после пяти одинаковых подряд идущих бит может быть вставлен дополнительный бит противоположного значения. Такую операцию называют бит–стаффингом. При приеме производится обратная операция — дебитстаффинг.
Арбитраж.
Попытка передачи сообщений одновременно несколькими узлами сети вызывает коллизии, или столкновения в сети. Для арбитража используется идентификатор сообщения в сочетании со схемой подключения к шине типа МОНТАЖНОЕ ИЛИ. Узел, выставляющий на шину доминантный уровень (0), подавляет рецессивный уровень (1), выставленный другим узлом. Арбитраж выигрывает узел с наивысшим приоритетом, которому соответствует наименьшее численное значение идентификатора. Этот узел продолжает передачу данных, остальным — доступ закрыт. Рассмотренный режим доступа к шине для передачи сообщений сразу выявляет победителя, не позволяя спорившим узлам устраивать столкновение на шине.
Обнаружение ошибок.
CAN
–протокол обладает эффективными средствами обнаружения ошибок, так как разработан для систем управления узлами автомобилей, критичных к уровню безопасности и степени достоверности передаваемых данных. В
CAN
все узлы участвуют в проверке передаваемых по сети сообщений на наличие ошибок. При обнаружении ошибки хотя бы одним узлом со статусом
Error
Active
текущая передача прерывается генерацией кадра ошибки. Передатчик, сообщение которого было прервано, повторяет передачу.
Очаровательные реальные путаны в Набережных Челнах, страстные и желанные, они такие активные и профессиональные, что возбуждение неизбежно. Прелестницы ждут тебя. Встречаются строго в оговоренное время, реальные путаны в Набережных Челнах - встречи индивидуально на feichelny.ru. Реализуй всё, что накручивал в своих ночных фантазиях или хотели попробовать в сексе.