МОДУЛЬ ECAN для dsPIC
1. ВВЕДЕНИЕ
В dsPIC33F модуль ECAN обеспечивает протокол CAN 2.0B, используемый прежде всего в промышленности и автомобилестроении. Этот асинхронный последовательный протокол связи данных обеспечивает надёжное соединения в электрически шумных местах.
Семейство микроконтроллеров dsPIC33F может иметь до двух модуле ECAN в своём составе. Рисунок 1 показывает типичную топологию CAN.
Рисунок 1. Типичная сеть ECAN
Модуль ECAN поддерживает следующие особенности:
Стандарты
• Полный CAN 2.0B
• Скорость обмена данными до 1 Mbps
Прием Сообщения
• 32 приёмных буфера - все из них могут использоваться для приема
• 16 приемных фильтров для фильтрования сообщения
• 3 приемных маски фильтра для фильтрования сообщения
• Автоматически реагирует на Remote Transmit Request
• До 32 сообщений может вместиться в (FIFO) буфер
• Поддерживает адресацию DeviceNetTM
• DMA режим для приёма сообщения
Передача Сообщения
• 8 буферов сообщений для передачи
• Определенный пользователем уровень приоритета для буферов сообщений для передачи
• DMA режим для передачи сообщения
Другое
• Loopback, приём всех сообщения, и приём сообщения для самопроверки, диагностика системы и мониторинг шины
• Малая потребляемая мощность при работе модуля ECAN
Рисунок 2. Иллюстрирует общую структуры модуля ECAN и его взаимодействие с управлением DMA и RAM DMA.
Рисунок 2. ECAN со встроенной DMA
1.1 Модуль ECAN
Модуль ECAN состоит из блок контроля CAN протокола (CAN Protocol Engine), фильтры принятых сообщений, и отдельные приёмный и передающий интерфейс DMA. Блок контроля CAN протокола передает и получает сообщения в/из шины CAN (согласно протоколу шины CAN 2.0B). Приёмные фильтры, которые настраиваются пользователем используются модулем, чтобы исследовать полученное сообщение, и затем определить, нужно ли данное сообщение сохранить в буфере DMA или сообщение нужно удалить.
Для полученных сообщений, приёмный интерфейс DMA производит прерывание приёмника, чтобы начать цикл DMA. Канал приёмника DMA читает данные из регистра CiRXD и записывает эти сообщения в буфер.
Для сообщений которые необходимо передать, интерфейс передатчика DMA производит прерывание для того чтобы начать цикл DMA для передачи сообщения. Канал DMA передатчика читает из буфера сообщений и пишет их в регистр CiTXD для передачи сообщения.
1.2 Буферы сообщений
Модуль ECAN поддерживает до 32 буферов сообщений для того, чтобы хранить данные, переданные или полученные на шине CAN. Эти буфера расположены в RAM DMAа. Буфера сообщения 0-7 могут настраиваться или для передачи сообщения или для приёма. Буфера сообщений 8-31 – предназначены только для буфера приёмника и не могут использоваться для передачи сообщений.
1.3 Диспетчер DMA
Диспетчер DMA действует как интерфейс между буферами сообщения и ECAN, чтобы переместить данные как в одном так и в другом направлении без вмешательства центрального процессора. Диспетчер DMA поддерживает до восьми каналов для того, чтобы перемещать данные между RAM DMA и переферией dsPIC33F. Два отдельных канала DMA необходимы, чтобы поддерживать передачу сообщений CAN и прием сообщения CAN.
Каждый канал имеет регистр DMA Request (DMAxREQ), который используется пользовательским приложением, чтобы инициализировать передачу сообщения на основе канала DMA.
2. ФОРМАТ CAN СООБЩЕНИЯ
Протокол шины CAN использует асинхронную связь. Информация передаётся с передатчика на приёмник в фреймах данных, которые составлены из байтовых полей, которые определяют содержание фрейма данных как показана на рисунке 3.
Каждый фрейм начинается с бита Start-of-Frame (SOF) и заканчивается полем End-of-Frame (EOF). Start-of-Frame сопровождается поляем Arbitration и Control, которые идентифицируют тип сообщения, формат, длину и приоритет. Эта информация позволяет каждому узлу на шине CAN соответственно отвечать на сообщение. Поле Data передает сообщение длина которого может изменяться в приделах от 0 до 8 байт. Защиту от ошибки передачи выполняет Cyclic Redundancy Check (CRC) и поля подтверждения (ACK).
Рисунок 3. Фрейм сообщения CAN шины.
Протокол шины CAN поддерживает четыре типа фрейма:
•DataFrame (фрейм данных) – переносит данные с передатчика на приёмник
•RemoteFrame (удалённый запрос данных) - передаётся узлом на шине, чтобы запросить передачу фрейма данных с тем же самым идентификатором от другого узла
•ErrorFrame (фрейм ошибки) –передаётся любым узлом, когда он обнаруживает ошибку
•OverloadFrame (фрейм перезагрузки) - обеспечивает дополнительную задержку между последовательными Данными или remote frame.
•InterframeSpace (межфреймовая пауза) - обеспечивает разделение между двумя фреймами
Спецификация CAN 2.0B определяет два дополнительных формата данных:
•StandardDataFrame (Стандартные фрейм данных) - предназначен для стандартных сообщений, которые используют 11-битный идентификатор
•ExtendedDataFrame (Расширенный фрейм данных) – предназначен для расширенных сообщения, которые используют 29-ти битный идентификатор.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.