SAM MCAN basic Quick Start.
Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries.
#include <asf.h>
#include <string.h>
#include <conf_mcan.h>
Macros | |
#define | MCAN_RX_EXTENDED_FILTER_ID_0 0x100000A5 |
#define | MCAN_RX_EXTENDED_FILTER_ID_0_BUFFER_INDEX 1 |
#define | MCAN_RX_EXTENDED_FILTER_ID_1 0x10000096 |
#define | MCAN_RX_EXTENDED_FILTER_INDEX_0 0 |
#define | MCAN_RX_EXTENDED_FILTER_INDEX_1 1 |
#define | MCAN_RX_STANDARD_FILTER_ID_0 0x45A |
#define | MCAN_RX_STANDARD_FILTER_ID_0_BUFFER_INDEX 2 |
#define | MCAN_RX_STANDARD_FILTER_ID_1 0x469 |
#define | MCAN_RX_STANDARD_FILTER_INDEX_0 0 |
#define | MCAN_RX_STANDARD_FILTER_INDEX_1 1 |
#define | MCAN_TX_BUFFER_INDEX 0 |
Functions | |
static void | configure_console (void) |
Configure UART console. More... | |
static void | configure_mcan (void) |
MCAN module initialization. More... | |
static void | display_menu (void) |
display configuration menu. More... | |
int | main (void) |
void | MCAN1_INT0_Handler (void) |
Interrupt handler for MCAN, inlcuding RX,TX,ERROR and so on processes. More... | |
static void | mcan_send_extended_message (uint32_t id_value, uint8_t *data, uint32_t data_length) |
send extended MCAN message, More... | |
static void | mcan_send_standard_message (uint32_t id_value, uint8_t *data, uint32_t data_length) |
send standard MCAN message, More... | |
static void | mcan_set_extended_filter_0 (void) |
set receive extended MCAN ID, dedicated buffer More... | |
static void | mcan_set_extended_filter_1 (void) |
set receive extended MCAN ID,FIFO buffer. More... | |
static void | mcan_set_standard_filter_0 (void) |
set receive standard MCAN ID, dedicated buffer More... | |
static void | mcan_set_standard_filter_1 (void) |
set receive standard MCAN ID,FIFO buffer. More... | |
Variables | |
static volatile uint32_t | extended_receive_index = 0 |
static struct mcan_module | mcan_instance |
static struct mcan_rx_element_buffer | rx_element_buffer |
static struct mcan_rx_element_fifo_0 | rx_element_fifo_0 |
static struct mcan_rx_element_fifo_1 | rx_element_fifo_1 |
static volatile uint32_t | standard_receive_index = 0 |
static uint8_t | tx_message_0 [CONF_MCAN_ELEMENT_DATA_SIZE] |
static uint8_t | tx_message_1 [CONF_MCAN_ELEMENT_DATA_SIZE] |
#define MCAN_RX_EXTENDED_FILTER_ID_0 0x100000A5 |
Referenced by main(), and mcan_set_extended_filter_0().
#define MCAN_RX_EXTENDED_FILTER_ID_0_BUFFER_INDEX 1 |
Referenced by mcan_set_extended_filter_0().
#define MCAN_RX_EXTENDED_FILTER_ID_1 0x10000096 |
Referenced by main(), and mcan_set_extended_filter_1().
#define MCAN_RX_EXTENDED_FILTER_INDEX_0 0 |
Referenced by mcan_set_extended_filter_0().
#define MCAN_RX_EXTENDED_FILTER_INDEX_1 1 |
Referenced by mcan_set_extended_filter_1().
#define MCAN_RX_STANDARD_FILTER_ID_0 0x45A |
Referenced by main(), and mcan_set_standard_filter_0().
#define MCAN_RX_STANDARD_FILTER_ID_0_BUFFER_INDEX 2 |
Referenced by mcan_set_standard_filter_0().
#define MCAN_RX_STANDARD_FILTER_ID_1 0x469 |
Referenced by main(), and mcan_set_standard_filter_1().
#define MCAN_RX_STANDARD_FILTER_INDEX_0 0 |
Referenced by mcan_set_standard_filter_0().
#define MCAN_RX_STANDARD_FILTER_INDEX_1 1 |
Referenced by mcan_set_standard_filter_1().
#define MCAN_TX_BUFFER_INDEX 0 |
Referenced by mcan_send_extended_message(), and mcan_send_standard_message().
|
static |
Configure UART console.
References uart_rs232_options::baudrate, stdio_serial_init(), and sysclk_enable_peripheral_clock().
Referenced by main().
|
static |
MCAN module initialization.
References irq_register_handler, MCAN_ACKNOWLEDGE_ERROR, MCAN_BUS_OFF, mcan_enable_interrupt(), MCAN_FORMAT_ERROR, mcan_get_config_defaults(), mcan_init(), mcan_instance, mcan_start(), tx_message_0, and tx_message_1.
Referenced by main(), and MCAN1_INT0_Handler().
|
static |
display configuration menu.
Referenced by main().
int main | ( | void | ) |
References board_init(), configure_console(), configure_mcan(), display_menu(), MCAN_RX_EXTENDED_FILTER_ID_0, MCAN_RX_EXTENDED_FILTER_ID_1, MCAN_RX_STANDARD_FILTER_ID_0, MCAN_RX_STANDARD_FILTER_ID_1, mcan_send_extended_message(), mcan_send_standard_message(), mcan_set_extended_filter_0(), mcan_set_extended_filter_1(), mcan_set_standard_filter_0(), mcan_set_standard_filter_1(), sysclk_init(), tx_message_0, and tx_message_1.
void MCAN1_INT0_Handler | ( | void | ) |
Interrupt handler for MCAN, inlcuding RX,TX,ERROR and so on processes.
References MCAN_RX_ELEMENT_R0_Type::bit, MCAN_RX_ELEMENT_R1_Type::bit, configure_mcan(), mcan_rx_element_buffer::data, mcan_rx_element_fifo_0::data, mcan_rx_element_fifo_1::data, MCAN_RX_ELEMENT_R1_Type::DLC, extended_receive_index, MCAN_ACKNOWLEDGE_ERROR, MCAN_BUS_OFF, mcan_clear_interrupt_status(), MCAN_FORMAT_ERROR, mcan_get_rx_buffer_element(), mcan_get_rx_fifo_0_element(), mcan_get_rx_fifo_1_element(), mcan_instance, mcan_read_interrupt_status(), MCAN_RX_BUFFER_NEW_MESSAGE, mcan_rx_clear_buffer_status(), MCAN_RX_FIFO_0_NEW_MESSAGE, MCAN_RX_FIFO_1_NEW_MESSAGE, mcan_rx_fifo_acknowledge(), mcan_rx_get_buffer_status(), mcan_stop(), mcan_rx_element_buffer::R0, mcan_rx_element_buffer::R1, mcan_rx_element_fifo_0::R1, mcan_rx_element_fifo_1::R1, rx_element_buffer, rx_element_fifo_0, rx_element_fifo_1, standard_receive_index, status, and MCAN_RX_ELEMENT_R0_Type::XTD.
|
static |
send extended MCAN message,
id_value | extended MCAN ID |
*data | content to be sent |
data_length | data length code |
References MCAN_TX_ELEMENT_T1_Type::bit, mcan_tx_element::data, MCAN_TX_ELEMENT_T1_Type::DLC, mcan_get_tx_buffer_element_defaults(), mcan_instance, mcan_set_tx_buffer_element(), MCAN_TX_BUFFER_INDEX, MCAN_TX_ELEMENT_T0_EXTENDED_ID, MCAN_TX_ELEMENT_T0_XTD, mcan_tx_transfer_request(), MCAN_TX_ELEMENT_T0_Type::reg, mcan_tx_element::T0, and mcan_tx_element::T1.
Referenced by main().
|
static |
send standard MCAN message,
id_value | standard MCAN ID |
*data | content to be sent |
data_length | data length code |
References MCAN_TX_ELEMENT_T1_Type::bit, mcan_tx_element::data, MCAN_TX_ELEMENT_T1_Type::DLC, mcan_get_tx_buffer_element_defaults(), mcan_instance, mcan_set_tx_buffer_element(), MCAN_TX_BUFFER_INDEX, MCAN_TX_ELEMENT_T0_STANDARD_ID, mcan_tx_transfer_request(), MCAN_TX_ELEMENT_T0_Type::reg, mcan_tx_element::T0, and mcan_tx_element::T1.
Referenced by main().
|
static |
set receive extended MCAN ID, dedicated buffer
References MCAN_EXTENDED_MESSAGE_FILTER_ELEMENT_F0_Type::bit, MCAN_EXTENDED_MESSAGE_FILTER_ELEMENT_F1_Type::bit, MCAN_EXTENDED_MESSAGE_FILTER_ELEMENT_F0_Type::EFEC, MCAN_EXTENDED_MESSAGE_FILTER_ELEMENT_F0_Type::EFID1, MCAN_EXTENDED_MESSAGE_FILTER_ELEMENT_F1_Type::EFID2, mcan_extended_message_filter_element::F0, mcan_extended_message_filter_element::F1, mcan_enable_interrupt(), MCAN_EXTENDED_MESSAGE_FILTER_ELEMENT_F0_EFEC_STRXBUF_Val, mcan_get_extended_message_filter_element_default(), mcan_instance, MCAN_RX_BUFFER_NEW_MESSAGE, MCAN_RX_EXTENDED_FILTER_ID_0, MCAN_RX_EXTENDED_FILTER_ID_0_BUFFER_INDEX, MCAN_RX_EXTENDED_FILTER_INDEX_0, and mcan_set_rx_extended_filter().
Referenced by main().
|
static |
set receive extended MCAN ID,FIFO buffer.
References MCAN_EXTENDED_MESSAGE_FILTER_ELEMENT_F0_Type::bit, MCAN_EXTENDED_MESSAGE_FILTER_ELEMENT_F0_Type::EFID1, mcan_extended_message_filter_element::F0, mcan_enable_interrupt(), mcan_get_extended_message_filter_element_default(), mcan_instance, MCAN_RX_EXTENDED_FILTER_ID_1, MCAN_RX_EXTENDED_FILTER_INDEX_1, MCAN_RX_FIFO_1_NEW_MESSAGE, and mcan_set_rx_extended_filter().
Referenced by main().
|
static |
set receive standard MCAN ID, dedicated buffer
References MCAN_STANDARD_MESSAGE_FILTER_ELEMENT_S0_Type::bit, mcan_enable_interrupt(), mcan_get_standard_message_filter_element_default(), mcan_instance, MCAN_RX_BUFFER_NEW_MESSAGE, MCAN_RX_STANDARD_FILTER_ID_0, MCAN_RX_STANDARD_FILTER_ID_0_BUFFER_INDEX, MCAN_RX_STANDARD_FILTER_INDEX_0, mcan_set_rx_standard_filter(), MCAN_STANDARD_MESSAGE_FILTER_ELEMENT_S0_SFEC_STRXBUF_Val, mcan_standard_message_filter_element::S0, MCAN_STANDARD_MESSAGE_FILTER_ELEMENT_S0_Type::SFEC, MCAN_STANDARD_MESSAGE_FILTER_ELEMENT_S0_Type::SFID1, and MCAN_STANDARD_MESSAGE_FILTER_ELEMENT_S0_Type::SFID2.
Referenced by main().
|
static |
set receive standard MCAN ID,FIFO buffer.
References MCAN_STANDARD_MESSAGE_FILTER_ELEMENT_S0_Type::bit, mcan_enable_interrupt(), mcan_get_standard_message_filter_element_default(), mcan_instance, MCAN_RX_FIFO_0_NEW_MESSAGE, MCAN_RX_STANDARD_FILTER_ID_1, MCAN_RX_STANDARD_FILTER_INDEX_1, mcan_set_rx_standard_filter(), mcan_standard_message_filter_element::S0, and MCAN_STANDARD_MESSAGE_FILTER_ELEMENT_S0_Type::SFID1.
Referenced by main().
|
static |
Referenced by MCAN1_INT0_Handler().
|
static |
|
static |
Referenced by MCAN1_INT0_Handler().
|
static |
Referenced by MCAN1_INT0_Handler().
|
static |
Referenced by MCAN1_INT0_Handler().
|
static |
Referenced by MCAN1_INT0_Handler().
|
static |
Referenced by configure_mcan(), and main().
|
static |
Referenced by configure_mcan(), and main().