Блок реализует настройку контроллера CAN(1|2) интерфейса. Программная реализация блока,
расположена в заголовочном файле can.h файла main.c
проекта Test_Driver (в среде разработки Keil), который создается при генерации кода
проекта и содержит тексты программ алгоритма на языке СИ. Блок настройки порта реализован на
основании блока язык программирования и содержит в себе код на встроенном языке SimInTech
формирующем значения входных переменных для функции настройки порта
Init_Can(1|2)().
Всего у микросхемы K1986ВЕ92QI, помещенной в корпус LQFP64, есть два контроллера CAN1 и
CAN2, поэтому библиотека содержит два блока для настройки контроллеров Init_Can1 и
Init_Can2.
Свойства:
- Прием собственных пакетов – ROP - прием собственных пакетов
(Receive own packets): 1 – контроллер принимает собственные пакеты; 0 – контроллер
принимает только чужие пакеты. По умолчанию - ENABLE;
- Подтверждение собственных пакетов – SAP - подтверждение
собственных пакетов (Send ACK on own packets): 1 – контроллер подтверждает прием
собственных пакетов; 0 – контроллер подтверждает прием только чужих пакетов. По
умолчанию - ENABLE;
- Режим самотестирования (Self Test Mode) – STM - режим
самотестирования (Self Test Mode): 1 – контроллер работает в режиме самотестирования; 0
– контроллер работает в нормальном режиме. По умолчанию - ENABLE;
- Режим «Только прием» (Read Only Mode) – ROM - режим «Только
прием» (Read Only Mode): 1 – контроллер работает только на прием; 0 – контроллер
работает в нормальном режиме. DISABLE;
- Значение фазы PSEG – PSEG - Propagation Time Segment. Эта часть
предназначена, чтобы компенсировать физические задержки времени распространения сигнала
в шине и внутренние задержки в узлах. Длительность этого интервала может быть
запрограммирована от 1 до 8 TQ. По умолчанию - CAN_PSEG_Mul_2TQ.
- Значение фазы SEG1 – SEG1 - Phase Buffer Segments. Эти
интервалы предназначены для более точной установки точки семплирования, которая
располагается между ними. Длительности этих интервалов могут быть запрограммированы
между 1 и 8 TQ. Значение размера фазы SEG1:
111 = Phase Segment 1 time = 8 x TQ |
110 = Phase Segment 1 time = 7 x TQ |
101 = Phase Segment 1 time = 6 x TQ |
100 = Phase Segment 1 time = 5 x TQ |
011 = Phase Segment 1 time = 4 x TQ |
010 = Phase Segment 1 time = 3 x TQ |
001 = Phase Segment 1 time = 2 x TQ |
000 = Phase Segment 1 time = 1 x TQ |
SEG1 – это время, используемое для увеличения битового интервала при подстройке.
По умолчанию - CAN_PSEG_Mul_3TQ.
- Значение фазы SEG1 – SEG2 - Phase Buffer Segments. Эти
интервалы предназначены для более точной установки точки семплирования, которая
располагается между ними. Длительности этих интервалов могут быть запрограммированы
между 1 и 8 TQ. Значение размера фазы SEG2:
111 = Phase Segment 2 time = 8 x TQ |
110 = Phase Segment 2 time = 7 x TQ |
101 = Phase Segment 2 time = 6 x TQ |
100 = Phase Segment 2 time = 5 x TQ |
011 = Phase Segment 2 time = 4 x TQ |
010 = Phase Segment 2 time = 3 x TQ |
001 = Phase Segment 2 time = 2 x TQ |
000 = Phase Segment 2 time = 1 x TQ |
SEG2 – это время, используемое для сокращения битового интервала при подстройке.
По умолчанию - CAN_PSEG_Mul_2TQ.
- Семплирование – SB - Семплирование: 0 – однократное; 1 –
трехкратное с мажоритарным контролем. По умолчанию - CAN_SB_1_SAMPLE.
- Значение размера фазы SJW – SJW - Значение размера фазы SJW:
11 = Synchronization jump width time = 4 x TQ |
10 = Synchronization jump width time = 3 x TQ |
01 = Synchronization jump width time = 2 x TQ |
00 = Synchronization jump width time = 1 x TQ |
SJW – это максимальное значение, на которое происходит подстройка приема и
передачи при работе на шине CAN. Приемник подстраивается на значение ошибки, но не более
чем SJW. По умолчанию - CAN_PSEG_Mul_4TQ.
- Предделитель системной частоты – BRP - Предделитель системной
частоты: CLK = PCLK/(BRP + 1); TQ(us) = (BRP + 1)/CLK(MHz). По умолчанию - 1.