Инициализация контроллера CAN
![]() |
![]() |
|Си| |
| в палитре | на схеме |
Описание
Блок реализует настройку периферийного модуля CAN.
Программная реализация блока, расположена в заголовочном файле can.h (функция Init_CAN) файла main.c проекта Test_Driver (в среде разработки Keil), который создается при генерации кода проекта и содержит тексты программ алгоритма на языке СИ.
Частота тактирования блока CAN:
CAN_CLK = CPU_CLK / PSG / (BRP+1)
Частота обмена шины CAN:
CAN_RATE = CAN_CLK / (PSEG + SEG1 + SEG2 + SB)
По умолчанию при CPU_CLK = 80МГц:
CAN_CLK = 80M / 1 / (7+1) = 10M
CAN_RATE = 10M / (3+8+8+1) = 500K
Можно использовать для программирования двух типов микроконтроллеров 1986BE1T и 1986BE9X.
Основные характеристики контроллера CAN приведены в спецификациях 1986BE1T.pdf и 1986BE9X.pdf.
Входные порты
| Имя | Описание | Тип линии связи |
|---|---|---|
| sort_block | Порт необходим для сортировки (определения порядка выполнения) блока. | Математическая |
Выходные порты
| Имя | Описание | Тип линии связи |
|---|---|---|
| ready | Выход готовности, сортировки блока. | Математическая |
Свойства
| Название | Имя | Описание | По умолчанию | Тип данных |
|---|---|---|---|---|
| Выбор CAN контроллера | CAN_NUM | Возможные значения: CAN1 CAN2 |
CAN2 | Перечисление |
| Прием собственных пакетов | ROP | Возможные значения: DISABLE ENABLE |
DISABLE | Перечисление |
| Подтверждение собственных пакетов | SAP | Возможные значения: DISABLE ENABLE |
DISABLE | Перечисление |
| Режим самотестирования | STM | Возможные значения: DISABLE ENABLE |
DISABLE | Перечисление |
| Режим «Только прием» | ROM | Возможные значения: DISABLE ENABLE |
DISABLE | Перечисление |
| Значение размера фазы PSEG | PSEG | Возможные значения: CAN_PSEG_Mul_1TQ CAN_PSEG_Mul_2TQ CAN_PSEG_Mul_3TQ CAN_PSEG_Mul_4TQ CAN_PSEG_Mul_5TQ CAN_PSEG_Mul_6TQ CAN_PSEG_Mul_7TQ CAN_PSEG_Mul_8TQ |
CAN_PSEG_Mul_3TQ | Перечисление |
| Значение размера фазы SEG1 | SEG1 | Возможные значения: CAN_SEG1_Mul_1TQ CAN_SEG1_Mul_2TQ CAN_SEG1_Mul_3TQ CAN_SEG1_Mul_4TQ CAN_SEG1_Mul_5TQ CAN_SEG1_Mul_6TQ CAN_SEG1_Mul_7TQ CAN_SEG1_Mul_8TQ |
CAN_SEG1_Mul_8TQ | Перечисление |
| Значение размера фазы SEG2 | SEG2 | Возможные значения: CAN_SEG2_Mul_1TQ CAN_SEG2_Mul_2TQ CAN_SEG2_Mul_3TQ CAN_SEG2_Mul_4TQ CAN_SEG2_Mul_5TQ CAN_SEG2_Mul_6TQ CAN_SEG2_Mul_7TQ CAN_SEG2_Mul_8TQ |
CAN_SEG2_Mul_8TQ | Перечисление |
| Значение размера фазы SJW | SJW | Возможные значения: CAN_SJW_Mul_1TQ CAN_SJW_Mul_2TQ CAN_SJW_Mul_3TQ CAN_SJW_Mul_4TQ |
CAN_SJW_Mul_3TQ | Перечисление |
| Семплирование | SB | Возможные значения: CAN_SB_1_SAMPLE CAN_SB_3_SAMPLE |
CAN_SB_1_SAMPLE | Перечисление |
|
Предделитель частоты CAN_CLK = PCLK/(BRP+1) |
BRP | Возможные значения: 0.. 65535 |
7 | Целое |
| Максимальное значение счетчиков ошибки [0..255] | ERR_MAX | Возможные значения: 0.. 255 |
255 | Целое |
|
Базовый предделитель частоты CPU_CLK |
PSG | Возможные значения: CAN_HCLKdiv1 CAN_HCLKdiv2 CAN_HCLKdiv4 CAN_HCLKdiv8 CAN_HCLKdiv16 CAN_HCLKdiv32 CAN_HCLKdiv64 CAN_HCLKdiv128 |
CAN_HCLKdiv1 | Перечисление |
| Включить прерывание по приему посылки | IRQ_EN | Возможные значения: Да/Нет |
Да | Двоичное |
| Приоритет прерывания СAN | IRQ_PRI | Возможные значения: 0 1 2 3 4(ВЕ9х) 5(ВЕ9х) 6(ВЕ9х) 7(ВЕ9х) |
2 | Перечисление |
| Выбор буферов на прием | BUF_ARR | Возможные значения: CAN_BUFFER_0…CAN_BUFFER_31 |
CAN_BUFFER_0 | Множество |
Параметры
Блок не имеет параметров.

