F40-43a (1041604), страница 41
Текст из файла (страница 41)
1.3216C8051F040/1/2/318. Контроллер локальной сети (CAN0)ПРИМЕЧАНИЕ: В микроконтроллеры семейства C8051F04x интегрирован CAN-контроллер BOSCH.В данном разделе приводится краткое описание CAN-контроллера, а также описывается интерфейсвзаимодействия между процессорным ядром CIP-51 и встроенным CAN-контроллером BOSCH. Болееподробная информация о работе CAN-контроллера приведена в руководстве Bosch’s C_CAN User’s Manual(revision 1.2).Микроконтроллеры C8051F40/1/2/3 имеют встроенный контроллер локальной сети (CAN), которыйпозволяет осуществлять последовательный обмен данными по протоколу CAN. Данный CAN-контроллеробеспечивает работу в сети CAN в соответствии со спецификациями Bosch 2.0A (базовый CAN) и 2.0B(расширенный CAN). CAN-контроллер состоит из CAN-ядра, ОЗУ сообщений (отдельного от ОЗУ CIP-51),конечного автомата обработки сообщений и регистров управления. Silicon Labs CAN-контроллер представляетсобой контроллер протокола и не имеет драйверов физического уровня (т.е.
приемопередатчиков). На рис. 18.1приведен пример типичной конфигурации шины CAN.Silicon Labs CAN-контроллер обеспечивает последовательный обмен данными со скоростью до1Мбит/сек., хотя эта скорость может быть ограничена физической средой, выбранной для передачи данных пошине CAN.
СAN-процессор имеет 32 буфера сообщений, которые могут быть настроены для передачи илиприема данных. Поступающие данные, буферы сообщений и их маски идентификаторов сохраняются в ОЗУсообщений CAN-контроллера. Все функции протокола, связанные с передачей данных и фильтрациейпоступающих сообщений, выполняются CAN-контроллером, а не ядром CIP-51. Это обеспечиваетминимальную нагрузку на процессор при осуществлении взаимодействия по протоколу CAN. CIP-51настраивает CAN-контроллер, принимает полученные данные и выдает данные для передачи с помощьюрегистров специального назначения CAN-контроллера.Рисунок 18.1.
Типичная конфигурация шины CAN.C8051F04xCANTXCANRXCANприемопередатчикРазвязка/Буфер (при необходимости)Устройство,поддерживающеепротокол CANУстройство,поддерживающеепротокол CANCANCANприемопередатчикприемопередатчикРазвязка/Буфер (при необходимости)Развязка/Буфер (при необходимости)CAN_HRRCAN_L217Ред. 1.3C8051F040/1/2/318.1. Функционирование контроллера CAN.CAN-контроллер,реализованныйвМКсемействаC8051F04x,представляетсобойполнофункциональный Bosch CAN модуль и полностью соответствует спецификации CAN 2.0B. На рис.
18.2приведена структурная схема CAN-контроллера. CAN-ядро реализует последовательную передачу/прием(CANTX/CANRX) данных, преобразование форматов сообщений (последовательный/параллельный), а такжедругие функции протокола, такие как передачу данных и фильтрацию поступающих сообщений. ОЗУсообщений содержит 32 буфера сообщений, которые можно передать в CAN-сеть или заполнить данными изCAN-сети.
Регистры CAN и обработчик сообщений обеспечивают интерфейс обмена данными иуведомлениями между CAN-контроллером и ядром CIP-51.Функционирование и использование CAN-контроллера подробно описано в руководстве пользователяBosch CAN User’s Guide, которое следует использовать при настройке CAN-контроллера. В данном Datasheetописывается, как обеспечить доступ к CAN-контроллеру.Типичная последовательность действий для инициализации CAN-контроллера состоит из следующихшагов:Шаг 1. Установить в регистре SFRPAGE страницу CAN0_PAGE.Шаг 2. Установить в 1 биты INIT и CCE регистра управления CAN. (Описания бит приведены вруководстве Bosch CAN User’s Guide).Шаг 3.
Установить временные параметры в регистре BTR и в дополнительном регистре BRP.Шаг 4. Инициализировать каждый буфер сообщений или установить его бит MsgVal в состояние NOTVALID.Шаг 5. Сбросить в 0 бит INIT.Обращение к регистру управления CAN (CAN0CN), регистру тестирования CAN (CAN0TST) ирегистру состояния CAN (CAN0STA) CAN-контроллера возможно в режимах прямой или косвенной адресациис помощью регистров специального назначения (SFR) CIP-51. Все другие CAN-регистры должны адресоватьсяс помощью метода косвенной индексации, описанного в разделе “Использование регистров CAN0ADR,CAN0DATH и CAN0DATL для доступа к CAN-регистрам”.Рисунок 18.2.
Структурная схема контроллера CAN.CANTXC8051F040/1/2/3CANRXCAN контроллерTXRXCAN_CLKBRPпредделительЯдроCAN(fsys)SYSCLKCIP-51MCUОЗУ сообщений(32 буфера сообщений)Обработчик прерыванийРед. 1.3РЕГИСТРЫSFR'sПрерывание218C8051F040/1/2/318.1.1. Тактирование контроллера CAN.Частота тактирования CAN-контроллера (fsys) определяется системной тактовой частотой CIP-51(SYSCLK). Следует иметь ввиду, что обычно требуется использовать внешний генератор (например, генераторс кварцевым резонатором) для обеспечения высокой точности временных параметров, определяемыхспецификацией на протокол CAN. Дополнительная информация по этой теме приведена в разделе “4.10.4Oscillator Tolerance Range” руководства пользователь Bosch CAN User’s Guide.18.1.2.
Пример расчета частоты тактирования CAN-контроллера для передачиданных со скоростью 1Мбит/сек.Этот пример показывает, как настроить временные параметры CAN-контроллера для обмена даннымисо скоростью 1Мбит/сек. В табл. 18.1 приведены системные параметры, необходимые для расчета.Таблица 18.1. Основные системные параметры.ПараметрСистемная тактовая частота CIP-51(SYSCLK)Значение22,1184 МГцЧастота тактирования CAN-контроллера(fsys)Период тактирования CAN-контроллера(tsys)Период дискретизации CAN-контроллера(tq)Длина шины CANВремя задержки распространения(Прим. 3)22,1184 МГцОписаниеВнешний генератор функционирует в режиме скварцевым резонатором. Кварцевый резонатор22,1184 МГц подключен между выводамиXTAL1 и XTAL2.Определяется частотой SYSCLK.Определяется как 1/ fsys45,211 нсОпределяется как tsys х BRP.См.
примечание 1 и примечание 2.Задержка распространения сигнала между CANузлами составляет 5 нс/м.2 х (задержка петли приемопередатчика +задержка линии)45,211 нс10 м400 нсПримечание1: Период дискретизации CAN-контроллера (tq) представляет собой минимальныйинтервал времени, различаемый CAN-контроллером. Временные параметры часто определяются в целыхединицах периода дискретизации.Примечание 2: Предварительный делитель скорости (частоты) передачи данных (Baud Rate Prescaler BRP) определяется как значение дополнительного регистра BRP плюс 1.
После сброса дополнительный регистрBRP принимает значение 0х0000; предварительный делитель скорости (частоты) передачи данных после сбросаимеет значение 1.Примечание 3: Определяется спецификацией ISO-11898 на приемопередатчики. CAN не определяетпараметры физического уровня.Рисунок 18.3. Четыре сегмента битового интервала CANБитовый интервал CAN (4…25 tq)||Sync_Seg1 tqProp_SegPhase_Seg1Phase_Seg21 … 8 tq1 … 8 tq1 … 8 tq| 1 tq |219Точка выборкиРед. 1.3C8051F040/1/2/3Каждый бит, передаваемый по сети CAN, состоит из 4-х сегментов (Sync_Seg, Prop_Seg, Phase_Seg1 иPhase_Seg2), как показано на рис. 18.3.
Сумма этих сегментов определяет битовый интервал CAN (1/скоростьпередачи в битах). В данном примере требуется получить скорость передачи 1 Мбит/сек.; поэтомунеобходимый битовый интервал составляет 1000 нс.Мы будем устанавливать длину 4-х битовых сегментом таким образом, чтобы их сумма как можноточнее соответствовала необходимому битовому интервалу. Т.к. длина каждого сегмента задается целымчислом периодов дискретизации, то наиболее точно требуемому значению соответствует битовый интервал,равный 22 tq (994.642 нс), которому соответствует скорость передачи 1.00539 Мбит/сек. Prop_Seg не долженбыть менее времени задержки распространения (400 нс); мы выбираем 9 tq (406.899 нс).Оставшиеся периоды дискретизации (tq) в битовом интервале делятся между сегментами Phase_Seg1 иPhase_Seg2, как показано в уравнении 18.2.
Мы выбираем Phase_Seg1 = 6 tq и Phase_Seg2 = 6 tq.Уравнение 18.2. Расчет фазовых сегментовPhase_Seg1 + Phase_Seg2 = Битовый интервал – (Sync_Seg + Prop_Seg)Примечание 1: Если сумма Phase_Seg1 + Phase_Seg2 четная, то Phase_Seg2 = Phase_Seg1.В противном случае Phase_Seg2 = Phase_Seg1 +1.Примечание 2: Длительность Phase_Seg2 должна быть не менее 2 tq.Ширина перехода синхронизации (Synchronization Jump Width - SJW) определяется из уравнения 18.3.Этот параметр используется для определения значения, которое необходимо записать в регистр BTR, а такжедля определения требуемой точности генератора.
Т.к. в качестве источника системных тактовых импульсов мыиспользуем кварцевый генератор, то нет необходимости рассчитывать точность генератора.Уравнение 18.3. Ширина перехода синхронизации (SJW)SWJ = min(4, Phase_Seg1)Значение, записываемое в регистр BTR, можно вычислить, используя уравнение 18.4. Вдополнительном регистре BRP остается значение, записываемое в него после сброса.Уравнение 18.4.
Расчет значения регистра BTRBRPE = BRP - 1 = Дополнительный регистр BRP = 0x0000SJWp = SJW - 1 = min ( 4, 6 ) - 1 = 3TSEG1 = (Prop_Seg + Phase_Seg1 - 1) = 9 + 6 - 1 = 14TSEG2 = (Phase_Seg2 - 1) = 5Регистр BTR = (TSEG2 * 0x1000) + (TSEG1 * 0x0100) + (SJWp * 0x0040) + BRPE = 0x5EC0Ред. 1.3220C8051F040/1/2/3Для инициализации регистров временных параметров CAN необходимо выполнить последовательностьдействий, состоящую из следующих шагов:Шаг 1. Установить в регистре SFRPAGE страницу CAN0_PAGE.Шаг 2.
Установить в 1 биты INIT и CCE регистра управления CAN, доступного через SFR регистрCAN0CN.Шаг 3. Записать в регистр CAN0ADR значение 0х03, указывающее на регистр BTR.Шаг 4. Записать значение 0х5ЕС0 в SFR регистры [CAN0DATH:CAN0DATL], чтобы установитьрегистр BTR, используя метод косвенной индексации, описанный в разделе 18.2.5.Шаг 5. Выполнить другие действия по инициализации CAN.221Ред. 1.3C8051F040/1/2/318.2.
Регистры CAN.Регистры CAN классифицируются следующим образом:1.2.3.4.Регистры протокола CAN-контроллера: регистр управления CAN, регистр прерывания, регистрконтроля ошибок, регистр состояния шины, регистр тестирования.Интерфейсные регистры буферов сообщений: Используются для настройки 32 буферов сообщений,для передачи данных в буферы сообщений и приема данных из них.
Процессорное ядро CIP-51обращается к ОЗУ сообщений CAN посредством интерфейсных регистров буферов сообщений.При записи номера буфера сообщения в регистр запроса команды IF1 или IF2 содержимоесоответствующих интерфейсных регистров (IF1 или IF2) будет передано в буфер сообщений,находящийся в ОЗУ CAN, или получено из него.Регистры обработчика сообщений: Эти регистры доступны только для чтения. Они используютсяядром CIP-51 для получения информации о буферах сообщений (флаги MSGVLD, ожиданиезапроса передачи, флаги поступления новых данных) и об отложенных прерываниях (который избуферов сообщений вызвал прерывание или условие возникновения прерывания).Регистры специального назначения (SFR) ядра CIP-51: Пять регистров, расположенные в памятиCIP-51, обеспечивают прямой доступ к некоторым регистрам протокола CAN-контроллера ииндексный косвенный доступ ко всем регистрам CAN.18.2.1.
Регистры протокола CAN-контроллераРегистры протокола CAN-контроллера используются для настройки CAN-контроллера, обслуживанияпрерываний, слежения за состоянием шины и перевода контроллера в тестовые режимы работы. Доступ крегистрам протокола CAN-контроллера осуществляется через SFR регистры CIP-51 с помощью индексногометода. К некоторым регистрам протокола CAN-контроллера можно обращаться непосредственно путемадресации SFR регистров в памяти CIP-51.К регистрам протокола CAN-контроллера относятся: регистр управления CAN (CAN0CN), регистрсостояния CAN (CAN0STA), регистр тестирования CAN (CAN0TST), регистр счетчика ошибок, регистр BTR идополнительный регистр BRP (регистр предварительного делителя скорости передачи данных).