Описание библиотеки микросхемы 5023ВС016 процессора "Спутник"
Структуры данных | Макросы
Файл can.h

Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с интерфесом CAN. Подробнее...

#include "types.h"

См. исходные тексты.

Структуры данных

struct  CAN_T
 Структура для доступа к регистрам контроллера CAN в базовом режиме. Подробнее...
 
struct  CAN_EXTANDED_T
 Структура для доступа к регистрам контроллера CAN в расширеном режим режиме. Подробнее...
 

Макросы

#define Reset_request(x)   ((uint32_t)(x << 0))
 Макросы и типы для регистра CONTROL. Подробнее...
 
#define Receive_Interrupt_Enable(x)   ((uint32_t)(x << 1))
 
#define Transmit_Interrupt_Enable(x)   ((uint32_t)(x << 2))
 
#define Error_Interrupt_Enable(x)   ((uint32_t)(x << 3))
 
#define Overrun_Interrupt_Enable(x)   ((uint32_t)(x << 4))
 
#define Transmission_request(x)   ((uint32_t)(x << 0))
 Макросы и типы для регистра COMMAND. Подробнее...
 
#define Abort_transmission(x)   ((uint32_t)(x << 1))
 
#define Release_receive_buffer(x)   ((uint32_t)(x << 2))
 
#define Clear_data_overrun(x)   ((uint32_t)(x << 3))
 
#define Receive_buffer_status(x)   ((uint32_t)(x << 0))
 Макросы и типы для регистра STATUS. Подробнее...
 
#define Data_overrun_status(x)   ((uint32_t)(x << 1))
 
#define Transmit_buffer_status(x)   ((uint32_t)(x << 2))
 
#define Transmission_complete(x)   ((uint32_t)(x << 3))
 
#define Receive_status(x)   ((uint32_t)(x << 4))
 
#define Transmit_status(x)   ((uint32_t)(x << 5))
 
#define Error_Status(x)   ((uint32_t)(x << 6))
 
#define Bus_status(x)   ((uint32_t)(x << 7))
 
#define Receive_interrupt(x)   ((uint32_t)(x << 0))
 Макросы и типы для регистра INTERRUPT. Подробнее...
 
#define Transmit_interrupt(x)   ((uint32_t)(x << 1))
 
#define Error_interrupt(x)   ((uint32_t)(x << 2))
 
#define Data_overrun_interrupt(x)   ((uint32_t)(x << 3))
 
#define Reset_mode(x)   ((uint32_t)(x << 0))
 Макросы и типы для регистра Mode. Подробнее...
 
#define Listen_only_mode(x)   ((uint32_t)(x << 1))
 
#define Self_test_mode(x)   ((uint32_t)(x << 2))
 
#define Acceptance_filter_mode(x)   ((uint32_t)(x << 3))
 
#define Transmission_request(x)   ((uint32_t)(x << 0))
 Макросы и типы для регистра COMMAND. Подробнее...
 
#define Abort_transmission(x)   ((uint32_t)(x << 1))
 
#define Release_receive_buffer(x)   ((uint32_t)(x << 2))
 
#define Clear_data_overrun(x)   ((uint32_t)(x << 3))
 
#define Self_reception_request(x)   ((uint32_t)(x << 4))
 
#define Receive_interrupt_ext(x)   ((uint32_t)(x << 0))
 Макросы и типы для регистра INTERRUPT. Подробнее...
 
#define Transmit_interrupt_ext(x)   ((uint32_t)(x << 1))
 
#define Error_warning_interrupt(x)   ((uint32_t)(x << 2))
 
#define Data_overrun_interrupt_ext(x)   ((uint32_t)(x << 3))
 
#define Error_passive_interrupt(x)   ((uint32_t)(x << 5))
 
#define Arbitration_lost_interrupt(x)   ((uint32_t)(x << 6))
 
#define Bus_error_interrupt(x)   ((uint32_t)(x << 7))
 
#define Bit_number(x)   ((uint32_t)((x&0x1F) << 0))
 Макросы и типы для регистра Arbitration_lost_capture. Подробнее...
 
#define Segment(x)   ((uint32_t)((x&0x1F) << 0))
 Макросы и типы для регистра Error_code_capture. Подробнее...
 
#define Direction(x)   ((uint32_t)((x) << 5))
 Бит, в котором была потеряна арбитрация Подробнее...
 
#define Error_Code(x)   ((uint32_t)((x&0x3) << 6))
 
#define Clock_divisor(x)   ((uint32_t)((x&0x7) << 0))
 Макросы и типы для регистра Clock_divider. Подробнее...
 
#define Clock_off(x)   ((uint32_t)((x) << 3))
 
#define CAN_mode(x)   ((uint32_t)((x) << 7))
 
#define BRP(x)   ((uint32_t)((x&0x3F) << 0))
 Макросы и типы для регистра Bus_timing_0. Подробнее...
 
#define SJW(x)   ((uint32_t)((x&0x3) << 6))
 
#define TSEG1(x)   ((uint32_t)((x&0xF) << 0))
 Макросы и типы для регистра Bus_timing_1. Подробнее...
 
#define TSEG2(x)   ((uint32_t)((x&0x3) << 4))
 
#define SAM(x)   ((uint32_t)(x << 7))
 

Подробное описание

Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с интерфесом CAN.

Copyright(C) НПП Цифровые решения, 2017 Copyright(C) Команда разработчиков НПП Цифровые решения Все права защищены.

Программное обеспечение, описанное в этом файле, предназначено только для демонстрационных целей, и предоставляет программистам информацию о продукции организации "Цифровые решения". Это программное обеспечение поставляется "КАК ЕСТЬ" без каких-либо гарантий, "Цифровые решения" отказываются от любых гарантий, фактических или подразумеваемых, включая все подразумеваемые гарантии товарной пригодности, пригодности для конкретной цели и сохранения прав интеллектуальной собственности. Органицация "Цифровые решения" не несет никакой ответственности за использование программного обеспечения, не предоставляет лицензий или прав на патент, авторское право, или любые другие права интеллектуальной собственности, на какие-либо продукты. Организация "Цифровые решения" оставляет за собой право вносить изменения в программное обеспечение без уведомления. Организация "Цифровые решения" также не дает никаких заверений или гарантий, что это программное приложение подойдет для использования без дальнейшего тестирования или модификаций.

Разрешение на использование, копирование, изменение и распространение этого программного обеспечения и документации предоставляется согласно условиям "Цифровых решений" и соответствующих авторских прав своей лицензии без оплаты, при условии, что это программное обеспечнение используется совместно с микроконтроллерами организации "Цифровые решения". Эти права должны распространяться во всех копиях этого кода.

См. определение в файле can.h

Макросы

§ Abort_transmission [1/2]

#define Abort_transmission (   x)    ((uint32_t)(x << 1))

Запись 1 прерывает передачу, которая еще не была запущена

См. определение в файле can.h строка 196

§ Abort_transmission [2/2]

#define Abort_transmission (   x)    ((uint32_t)(x << 1))

Запись 1 прерывает передачу, которая еще не была запущена

См. определение в файле can.h строка 196

§ Acceptance_filter_mode

#define Acceptance_filter_mode (   x)    ((uint32_t)(x << 3))

Значение 1 - режим одиночной фильтрации, 0 - режим двойной фильтрации

См. определение в файле can.h строка 190

§ Arbitration_lost_interrupt

#define Arbitration_lost_interrupt (   x)    ((uint32_t)(x << 6))

Устанавливается в 1 при потере арбитрации контроллером

См. определение в файле can.h строка 214

§ Bit_number

#define Bit_number (   x)    ((uint32_t)((x&0x1F) << 0))

Макросы и типы для регистра Arbitration_lost_capture.

Бит, в котором была потеряна арбитрация

См. определение в файле can.h строка 225

§ BRP

#define BRP (   x)    ((uint32_t)((x&0x3F) << 0))

Макросы и типы для регистра Bus_timing_0.

Предделитель Baud rate

См. определение в файле can.h строка 279

§ Bus_error_interrupt

#define Bus_error_interrupt (   x)    ((uint32_t)(x << 7))

Устанавливается в 1 если на шине обнаружена ошибка

См. определение в файле can.h строка 215

§ Bus_status

#define Bus_status (   x)    ((uint32_t)(x << 7))

Значение 1 когда хотя бы один из счетчиков ошибок превысил значение CPU warning limit = 96

См. определение в файле can.h строка 126

§ CAN_mode

#define CAN_mode (   x)    ((uint32_t)((x) << 7))

1 - расширенный режим, 0 - базовый режим

См. определение в файле can.h строка 274

§ Clear_data_overrun [1/2]

#define Clear_data_overrun (   x)    ((uint32_t)(x << 3))

Запись 1 очищает бит переполнения (Data overrun status) в регистре статуса

См. определение в файле can.h строка 198

§ Clear_data_overrun [2/2]

#define Clear_data_overrun (   x)    ((uint32_t)(x << 3))

Запись 1 очищает бит переполнения (Data overrun status) в регистре статуса

См. определение в файле can.h строка 198

§ Clock_divisor

#define Clock_divisor (   x)    ((uint32_t)((x&0x7) << 0))

Макросы и типы для регистра Clock_divider.

Выбор частоты (не используется)

См. определение в файле can.h строка 272

§ Clock_off

#define Clock_off (   x)    ((uint32_t)((x) << 3))

Отключение вывода clkout

См. определение в файле can.h строка 273

§ Data_overrun_interrupt

#define Data_overrun_interrupt (   x)    ((uint32_t)(x << 3))

Устанавливается в 1 когда бит Data overrun status в регистре Status переходит из 0 в 1

См. определение в файле can.h строка 134

§ Data_overrun_interrupt_ext

#define Data_overrun_interrupt_ext (   x)    ((uint32_t)(x << 3))

Устанавливается в 1 когда бит Data overrun status в регистре Status переходит из 0 в 1

См. определение в файле can.h строка 212

§ Data_overrun_status

#define Data_overrun_status (   x)    ((uint32_t)(x << 1))

Значение 1 означает, что сообщение было потеряно из-за отсутствия свободного места в FIFO Бит означает, что полученное контроллером сообщение было утеряно, поскольку в приемном FIFO отсутствовало свободное место. Данный бит устанавливается в момент вычитывания данных из FIFO.

См. определение в файле can.h строка 102

§ Direction

#define Direction (   x)    ((uint32_t)((x) << 5))

Бит, в котором была потеряна арбитрация

См. определение в файле can.h строка 258

§ Error_Code

#define Error_Code (   x)    ((uint32_t)((x&0x3) << 6))

Код ошибки: 0 - Bit error 1 - Form error 2 - Stuff error 3 - другое

См. определение в файле can.h строка 259

§ Error_interrupt

#define Error_interrupt (   x)    ((uint32_t)(x << 2))

Устанавливается значение 1 если изменяется статус шины или статус ошибки

См. определение в файле can.h строка 133

§ Error_Interrupt_Enable

#define Error_Interrupt_Enable (   x)    ((uint32_t)(x << 3))

Включение прерывания ошибки. 1 - включено, 0 - отключено

См. определение в файле can.h строка 81

§ Error_passive_interrupt

#define Error_passive_interrupt (   x)    ((uint32_t)(x << 5))

Устанавливается в 1 когда бит Data overrun status в регистре Status переходит из 0 в 1

См. определение в файле can.h строка 213

§ Error_Status

#define Error_Status (   x)    ((uint32_t)(x << 6))

Значение 1 когда хотя бы один из счетчиков ошибок превысил значение CPU warning limit = 96

См. определение в файле can.h строка 125

§ Error_warning_interrupt

#define Error_warning_interrupt (   x)    ((uint32_t)(x << 2))

Устанавливается значение 1 если изменяется статус шины или статус ошибки

См. определение в файле can.h строка 211

§ Listen_only_mode

#define Listen_only_mode (   x)    ((uint32_t)(x << 1))

Запись 1 переводит контроллер в состояние прослушивания шины

См. определение в файле can.h строка 188

§ Overrun_Interrupt_Enable

#define Overrun_Interrupt_Enable (   x)    ((uint32_t)(x << 4))

Включение прерывания переполнения. 1 - включено, 0 - отключено

См. определение в файле can.h строка 82

§ Receive_buffer_status

#define Receive_buffer_status (   x)    ((uint32_t)(x << 0))

Макросы и типы для регистра STATUS.

Значение 1 означает, что в приемном FIFO присутствуют принятые сообщения Бит сбрасывается в 0, если была подана команда Release receive buffer через бит в регистре Command. Если при этом в приемном FIFO присутствуют последующие сообщения, бит будет установлен в 1 повторно.

См. определение в файле can.h строка 95

§ Receive_interrupt

#define Receive_interrupt (   x)    ((uint32_t)(x << 0))

Макросы и типы для регистра INTERRUPT.

Устанавливается значение 1, если в приемном FIFO присутствуют принятые сообщения

См. определение в файле can.h строка 131

§ Receive_Interrupt_Enable

#define Receive_Interrupt_Enable (   x)    ((uint32_t)(x << 1))

Включение прерывания приема. 1 - включено, 0 - отключено

См. определение в файле can.h строка 79

§ Receive_interrupt_ext

#define Receive_interrupt_ext (   x)    ((uint32_t)(x << 0))

Макросы и типы для регистра INTERRUPT.

Устанавливается значение 1, если в приемном FIFO присутствуют принятые сообщения

См. определение в файле can.h строка 209

§ Receive_status

#define Receive_status (   x)    ((uint32_t)(x << 4))

Значение 1 во время прием сообщения контроллером

См. определение в файле can.h строка 123

§ Release_receive_buffer [1/2]

#define Release_receive_buffer (   x)    ((uint32_t)(x << 2))

Запись 1 очищает приемный буфер для новых данных

См. определение в файле can.h строка 197

§ Release_receive_buffer [2/2]

#define Release_receive_buffer (   x)    ((uint32_t)(x << 2))

Запись 1 очищает приемный буфер для новых данных

См. определение в файле can.h строка 197

§ Reset_mode

#define Reset_mode (   x)    ((uint32_t)(x << 0))

Макросы и типы для регистра Mode.

Запись 1 в этот бит прерывает любую текущую передачу данных и переводит контоллер в состояние сброса. Запись 0 переводит контроллер в рабочее состояние. По умолчанию активно состояние сброса, бит имеет значение 1

См. определение в файле can.h строка 184

§ Reset_request

#define Reset_request (   x)    ((uint32_t)(x << 0))

Макросы и типы для регистра CONTROL.

Запись 1 в этот бит прерывает любую текущую передачу данных и переводит контоллер в состояние сброса. Запись 0 переводит контроллер в рабочее состояние. По умолчанию активно состояние сброса, бит имеет значение 1

См. определение в файле can.h строка 78

§ SAM

#define SAM (   x)    ((uint32_t)(x << 7))

1 - шина сэмплируется 3 раза, 0 - единичное сэмплирование

См. определение в файле can.h строка 287

§ Segment

#define Segment (   x)    ((uint32_t)((x&0x1F) << 0))

Макросы и типы для регистра Error_code_capture.

Местоположение ошибки внутри фрейма: 0x03 - Start of frame 0x02 - ID.28 - ID.21 0x06 - ID.20 - ID.18 0x04 - Bit SRTR 0x05 - Bit IDE 0x07 - ID.17 - ID.13 0x0F - ID.12 - ID.5 0x0E - ID.4 - ID.0 0x0C - Bit RTR 0x0D - Reserved bit 1 0x09 - Reserved bit 0 0x0B - Data length code 0x0A - Data field 0x08 - CRC sequence 0x18 - CRC delimiter 0x19 - Acknowledge slot 0x1B - Acknowledge delimiter 0x1A - End of frame 0x12 - Intermission 0x11 - Active error flag 0x16 - Passive error flag 0x13 - Tolerate dominant bits 0x17 - Error delimiter 0x1C - Overload flag4

См. определение в файле can.h строка 230

§ Self_reception_request

#define Self_reception_request (   x)    ((uint32_t)(x << 4))

Запись 1 запускает передачу и одновременно прием сообщения

См. определение в файле can.h строка 199

§ Self_test_mode

#define Self_test_mode (   x)    ((uint32_t)(x << 2))

Запись 1 переводит контроллер в режим самодиагностики

См. определение в файле can.h строка 189

§ SJW

#define SJW (   x)    ((uint32_t)((x&0x3) << 6))

Synchronization jump width

См. определение в файле can.h строка 280

§ Transmission_complete

#define Transmission_complete (   x)    ((uint32_t)(x << 3))

Значение 1 когда предыдущее сообщение было успешно передано Бит сбрасывается в 0 сразу после начала передачи и не устанавливается в 1 до тех пор, пока сообщение не будет успешно передано.

См. определение в файле can.h строка 116

§ Transmission_request [1/2]

#define Transmission_request (   x)    ((uint32_t)(x << 0))

Макросы и типы для регистра COMMAND.

Макросы и типы для регистра CONTROL.

Запись 1 запускает передачу сообщения в буфер для отправки (TX buffer)

См. определение в файле can.h строка 195

§ Transmission_request [2/2]

#define Transmission_request (   x)    ((uint32_t)(x << 0))

Макросы и типы для регистра COMMAND.

Макросы и типы для регистра CONTROL.

Запись 1 запускает передачу сообщения в буфер для отправки (TX buffer)

См. определение в файле can.h строка 195

§ Transmit_buffer_status

#define Transmit_buffer_status (   x)    ((uint32_t)(x << 2))

Значение 1 означает, что запись в передающий буфер разрешена Во время передачи сообщения передающий буфер запирается и бит имеет значение 0. Если контроллер не передает сообщения, бит имеет значение 1 и возможен запуск следующих сообщений на передачу.

См. определение в файле can.h строка 109

§ Transmit_interrupt

#define Transmit_interrupt (   x)    ((uint32_t)(x << 1))

Устанавливается значение 1 в момент освобождения передающего буфера

См. определение в файле can.h строка 132

§ Transmit_Interrupt_Enable

#define Transmit_Interrupt_Enable (   x)    ((uint32_t)(x << 2))

Включение прерывания передачи. 1 - включено, 0 - отключено

См. определение в файле can.h строка 80

§ Transmit_interrupt_ext

#define Transmit_interrupt_ext (   x)    ((uint32_t)(x << 1))

Устанавливается значение 1 в момент освобождения передающего буфера

См. определение в файле can.h строка 210

§ Transmit_status

#define Transmit_status (   x)    ((uint32_t)(x << 5))

Значение 1 во время прием сообщения контроллером

См. определение в файле can.h строка 124

§ TSEG1

#define TSEG1 (   x)    ((uint32_t)((x&0xF) << 0))

Макросы и типы для регистра Bus_timing_1.

Time segment 1

См. определение в файле can.h строка 285

§ TSEG2

#define TSEG2 (   x)    ((uint32_t)((x&0x3) << 4))

Time segment 2

См. определение в файле can.h строка 286