Помощь в написании студенческих работ
Антистрессовый сервис

Константы CAN. 
Преимущества и недостатки интерфейса CAN (Controller Area Network, локальная сеть контроллеров)

РефератПомощь в написанииУзнать стоимостьмоей работы

В библиотеке CAN существует ряд предопределённых констант. Чтобы эффективно использовать библиотеку, необходимо разбираться в этих константах. Константы CAN_FILTER определяют коды фильтрации. Функция CANSetFilter предполагает использование одной из них в качестве своего аргумента: Константы CAN_OP_MODE определяют режим работы CAN. Функция CANSetOperationMode предполагает использование… Читать ещё >

Константы CAN. Преимущества и недостатки интерфейса CAN (Controller Area Network, локальная сеть контроллеров) (реферат, курсовая, диплом, контрольная)

В библиотеке CAN существует ряд предопределённых констант. Чтобы эффективно использовать библиотеку, необходимо разбираться в этих константах.

Константы CAN_OP_MODE определяют режим работы CAN. Функция CANSetOperationMode предполагает использование их в качестве своих аргументов:

// Использовать для доступа к битам режима.

#define CAN_MODE_BITS 0xE0

#define CAN_MODE_NORMAL 0

#define CAN_MODE_SLEEP 0×20

#define CAN_MODE_LOOP 0×40

#define CAN_MODE_LISTEN 0×60

#define CAN_MODE_CONFIG 0×80

Константы CAN_CONFIG_FLAGS определяют флаги, относящиеся к конфигурированию модуля CAN. Функции CANInitialize и CANSetBaudRate предполагают использование одной из них (или побитовой комбинации нескольких) в качестве аргумента:

#define CAN_CONFIG_DEFAULT 0xFF // 11 111 111

#define CAN_CONFIG_PHSEG2_PRG_BIT 0×01

#define CAN_CONFIG_PHSEG2_PRG_ON 0xFF // XXXXXXX1

#define CAN_CONFIG_PHSEG2_PRG_OFF

0xFE // XXXXXXX0

#defineCAN_CONFIG_LINE_FILTER_BIT 0×02

#define CAN_CONFIG_LINE_FILTER_ON 0xFF // XXXXXX1X

#defineCAN_CONFIG_LINE_FILTER_OFF 0xFD // XXXXXX0X

#define CAN_CONFIG_SAMPLE_BIT 0×04

#define CAN_CONFIG_SAMPLE_ONCE 0xFF // XXXXX1XX

#define CAN_CONFIG_SAMPLE_THRICE 0xFB // XXXXX0XX

#define CAN_CONFIG_MSG_TYPE_BIT 0×08

#define CAN_CONFIG_STD_MSG 0xFF // XXXX1XXX

#define CAN_CONFIG_XTD_MSG 0xF7 // XXXX0XXX

#define CAN_CONFIG_DBL_BUFFER_BIT 0×10

#define CAN_CONFIG_DBL_BUFFER_ON 0xFF // XXX1XXXX

#define CAN_CONFIG_DBL_BUFFER_OFF 0xEF // XXX0XXXX

#define CAN_CONFIG_MSG_BITS 0×60

#define CAN_CONFIG_ALL_MSG 0xFF // X11XXXXX

#define CAN_CONFIG_VALID_XTD_MSG 0xDF // X10XXXXX

#define CAN_CONFIG_VALID_STD_MSG 0xBF // X01XXXXX

#define CAN_CONFIG_ALL_VALID_MSG 0x9 °F // X00XXXXX

Можно использовать побитовое «И» (&) для формирования байта конфигурации из приведённых значений, например:

init = CAN_CONFIG_SAMPLE_THRICE &

CAN_CONFIG_PHSEG2_PRG_ON &

CAN_CONFIG_STD_MSG &

CAN_CONFIG_DBL_BUFFER_ON &

CAN_CONFIG_VALID_XTD_MSG &

интерфейс can константы программное.

Схема подключения микроконтроллера к шине CAN с помощью приёмопередатчика MCP2551.

Рис. 5. Схема подключения микроконтроллера к шине CAN с помощью приёмопередатчика MCP2551.

CAN_CONFIG_LINE_FILTER_OFF;

// инициализация CAN CANInitialize (1, 1, 3, 3, 1, init);

Константы CAN_TX_MSG_FLAGS — это флаги, относящиеся к передачам сообщения CAN:

#define CAN_TX_PRIORITY_BITS 0×03 #define CAN_TX_PRIORITY0 0xFC // XXXXXX00

#define CAN_TX_PRIORITY1 0xFD // XXXXXX01

#define CAN_TX_PRIORITY2 0xFE // XXXXXX10

#define CAN_TX_PRIORITY3 0xFF // XXXXXX11

#define CAN_TX_FRAME_BIT 0×08 #define CAN_TX_STD_FRAME 0xFF // XXXXX1XX

#define CAN_TX_XTD_FRAME 0xF7 // XXXXX0XX

#define CAN_TX_RTR_BIT 0×40 #define CAN_TX_NO_RTR_FRAME 0xFF // X1XXXXXX

#define CAN_TX_RTR_FRAME 0xBF // X0XXXXXX

Здесь также можно использовать побитовое «И» для настройки на требуемую комбинацию флагов, например:

/* формирование значения, используемого в CANSendMessage: */ send_config = CAN_TX_PRIORITY0 &

CAN_TX_XTD_FRAME &

CAN_TX_NO_RTR_FRAME;

CANSendMessage (id, data, 1, send_config);

Флаги CAN_RX_MSG_FLAGS относятся к приёму сообщения CAN. Если отдельный бит установлен, соответствующее значение является истинным (TRUE), а в противном случае — ложным (FALSE), например:

// Использовать для доступа к битам фильтра

#define CAN_RX_FILTER_BITS 0×07

#define CAN_RX_FILTER1 0×00

#define CAN_RX_FILTER2 0×01

#define CAN_RX_FILTER3 0×02

#define CAN_RX_FILTER4 0×03

#define CAN_RX_FILTER5 0×04

#define CAN_RX_FILTER6 0×05

#define CAN_RX_OVERFLOW 0×08 // Установлен, если переполнение, иначе сброшен

#define CAN_RX_INVALID_MSG 0×10 // Установлен, если сообщение недействительное, иначе сброшен

#define CAN_RX_XTD_FRAME 0×20 // Установлен, если сообщение XTD, иначе сброшен

#define CAN_RX_RTR_FRAME 0×40 // Установлен, если сообщение RTR, иначе сброшен

#define CAN_RX_DBL_BUFFERED 0×80 // Установлен, если сообщение с двойной аппаратной буферизацией

Можно использовать побитовое «И» для настройки на требуемую комбинацию флагов, например:

if (MsgFlag & CAN_RX_OVERFLOW ≠

0) {

// Обнаружено переполнение при приёме

// Предыдущее сообщение потеряно }

Константы CAN_MASK определяют коды масок. Функция CANSetMask предполагает использование одной из них в качестве аргумента:

#define CAN_MASK_B1 0 #define CAN_MASK_B2 1.

Константы CAN_FILTER определяют коды фильтрации. Функция CANSetFilter предполагает использование одной из них в качестве своего аргумента:

#define CAN_FILTER_B1_F1 0

#define CAN_FILTER_B1_F2 1

#define CAN_FILTER_B2_F1 2

#define CAN_FILTER_B2_F2 3

#define CAN_FILTER_B2_F3 4

#define CAN_FILTER_B2_F4 5

В листинге на сайте журнала приведён пример простой программы, которая демонстрирует поддержку протокола интерфейса CAN.

Показать весь текст
Заполнить форму текущей работой