libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
|
Go to the source code of this file.
Macros | |
#define | CAN_ISR_SR_CMR_MR(can_base) MMIO32((can_base) + 0x0000) |
This is the 32-bit memory mapped read/write accessor for: More... | |
#define | CAN_ISR_SR_CMR_MR_SET(can_base, bits) |
#define | CAN_ISR_SR_CMR_MR_CLEAR(can_base, bits) |
#define | CAN_BTR1_BTR0_RMC_IMR(can_base) MMIO32((can_base) + 0x0004) |
This is the 32-bit memory mapped read/write accessor for: More... | |
#define | CAN_TXBUF(can_base) MMIO32((can_base) + 0x0008) |
CAN Transmit Buffer Register RW, default 00000000h. More... | |
#define | CAN_RXBUF(can_base) MMIO32((can_base) + 0x000C) |
CAN Receive Buffer Register RO, default 00000000h. More... | |
#define | CAN_ACR(can_base) MMIO32((can_base) + 0x0010) |
CAN Acceptance Code Register RW, default 00000000h. More... | |
#define | CAN_AMR(can_base) MMIO32((can_base) + 0x0014) |
CAN Acceptance Mask Register RW, default 00000000h. More... | |
#define | CAN_ALC_TXERR_RXERR_ECC(can_base) MMIO32((can_base) + 0x0018) |
#define | CAN_ECC(can_base) (CAN_ALC_TXERR_RXERR_ECC(can_base) & 0xFF) |
CAN Error Code Capture Register RO, default 00h. More... | |
#define | CAN_RXERR(can_base) ((CAN_ALC_TXERR_RXERR_ECC(can_base) >> 8) & 0xFF) |
CAN RX Error Counter Register RO, default 00h. More... | |
#define | CAN_TXERR(can_base) ((CAN_ALC_TXERR_RXERR_ECC(can_base) >> 16) & 0xFF) |
CAN TX Error Counter Register RO, default 00h. More... | |
#define | CAN_ALC(can_base) ((CAN_ALC_TXERR_RXERR_ECC(can_base) >> 24) & 0xFF) |
CAN Arbitration Lost Code Capture Register RO, default 00h. More... | |
#define | CAN_MR_AFM BIT0 |
AFM: Acceptance Filter Mode. More... | |
#define | CAN_MR_LOM BIT1 |
LOM: Listen only mode. More... | |
#define | CAN_MR_RM BIT2 |
RM: Reset Mode. More... | |
#define | CAN_CMR_AT BIT9 |
AT: Abort transmission. More... | |
#define | CAN_CMR_TR BIT10 |
TR: Transmit Request. More... | |
#define | CAN_SR_BS BIT16 |
BS: Bus Off Status. More... | |
#define | CAN_SR_ES BIT17 |
ES: Error Status. More... | |
#define | CAN_SR_TS BIT18 |
TS: Transmit Status. More... | |
#define | CAN_SR_RS BIT19 |
RS: Receive Status. More... | |
#define | CAN_SR_TBS BIT21 |
TBS: Transmit Buffer Status. More... | |
#define | CAN_SR_DSO BIT22 |
DSO: Data Overrun Status. More... | |
#define | CAN_SR_RBS BIT23 |
RBS: Receive Buffer Status. More... | |
#define | CAN_ISR_DOI BIT24 |
DOI: Data Overflow Interrupt. More... | |
#define | CAN_ISR_BEI BIT25 |
BEI: Bus Error Interrupt. More... | |
#define | CAN_ISR_TI BIT26 |
TI: Transmit Interrupt. More... | |
#define | CAN_ISR_RI BIT27 |
RI: Receive Interrupt. More... | |
#define | CAN_ISR_EPI BIT28 |
EPI: Error Passive Interrupt. More... | |
#define | CAN_ISR_EWI BIT29 |
EWI: Error Warning Interrupt. More... | |
#define | CAN_ISR_ALI BIT30 |
ALI: Arbitration Lost Interrupt. More... | |
#define | CAN_ISR_ACKNOWLEDGE(can_base, isr) CAN_ISR_SR_CMR_MR_SET(can_base, ((isr) & 0x7F000000)) |
This is a helper to acknowledge an ISR. More... | |
#define | CAN_IMR_DOIM BIT0 |
DOIM: DOI Interrupt Mask. More... | |
#define | CAN_IMR_BEIM BIT1 |
BEIM: BEI Interrupt Mask. More... | |
#define | CAN_IMR_TIM BIT2 |
TIM: TI Interrupt Mask. More... | |
#define | CAN_IMR_RIM BIT3 |
RIM: RI Interrupt Mask. More... | |
#define | CAN_IMR_EPIM BIT4 |
EPIM: EPI Interrupt Mask. More... | |
#define | CAN_IMR_EWIM BIT5 |
EWIM: EWI Interrupt Mask. More... | |
#define | CAN_IMR_ALIM BIT6 |
ALIM: ALI Interrupt Mask. More... | |
#define | CAN_RMC(can_base) ((CAN_BTR1_BTR0_RMC_IMR(can_base) >> 8) & 0x1F) |
#define | CAN_BTR0_BRP_MASK (0x3F) |
#define | CAN_BTR0_BRP_SHIFT 16 |
#define | CAN_BTR0_BRP(val) (((val) & CAN_BTR0_BRP_MASK) << CAN_BTR0_BRP_SHIFT) |
#define | CAN_BTR0_SJW_MASK (0x03) |
#define | CAN_BTR0_SJW_SHIFT 22 |
#define | CAN_BTR0_SJW(val) (((val) & CAN_BTR0_SJW_MASK) << CAN_BTR0_SJW_SHIFT) |
#define | CAN_BTR1_TSEG1_MASK (0x0F) |
#define | CAN_BTR1_TSEG1_SHIFT 24 |
#define | CAN_BTR1_TSEG1(val) (((val) & CAN_BTR1_TSEG1_MASK) << CAN_BTR1_TSEG1_SHIFT) |
#define | CAN_BTR1_TSEG2_MASK (0x07) |
#define | CAN_BTR1_TSEG2_SHIFT 28 |
#define | CAN_BTR1_TSEG2(val) (((val) & CAN_BTR1_TSEG2_MASK) << CAN_BTR1_TSEG2_SHIFT) |
#define | CAN_BTR1_SAM BIT31 |
#define | CAN_ECC_BER BIT0 |
BER: Bit error ocurred. More... | |
#define | CAN_ECC_STFER BIT1 |
STFER: Stuff error occurred. More... | |
#define | CAN_ECC_CRCER BIT2 |
CRCER: CRC error occurred. More... | |
#define | CAN_ECC_FRMER BIT3 |
FRMER: Form error occurred. More... | |
#define | CAN_ECC_ACKER BIT4 |
ACKER: ACK error occurred. More... | |
#define | CAN_ECC_EDIR BIT5 |
EDIR: Direction of transfer 0:TX, 1:RX. More... | |
#define | CAN_ECC_TXWRN BIT6 |
TXWRN: set when CAN_TXERR >= 96. More... | |
#define | CAN_ECC_RXWRN BIT7 |
RXWRN: set when CAN_RXERR >= 96. More... | |
#define | CAN_ACR_DUAL_DB_UPPER 0x000F0000U /* 19:16 */ |
#define | CAN_ACR_DUAL_DB_LOWER 0x0000000FU /* 3:0 */ |
#define | CAN_ACR_DUAL_ID1 0xFFE00000U /* 31:21 */ |
#define | CAN_ACR_DUAL_ID2 0x0000FFE0U /* 15:5 */ |
#define | CAN_ACR_DUAL_RTR1 0x00100000U /* 20 */ |
#define | CAN_ACR_DUAL_RTR2 0x00000010U /* 4 */ |
#define | CAN_ACR_SINGLE_STD_ID 0xFFE00000U /* 31:21 */ |
#define | CAN_ACR_SINGLE_STD_RTR 0x00100000U /* 20 */ |
#define | CAN_ACR_SINGLE_STD_DB1 0x0000FF00U /* 15:8 */ |
#define | CAN_ACR_SINGLE_STD_DB2 0x000000FFU /* 7:0 */ |
#define | CAN_ACR_SINGLE_EXT_ID 0xFFFFFFF8U /* 31:3 */ |
#define | CAN_ACR_SINGLE_EXT_RTR 0x00000004U /* 2 */ |
#define | CAN_BITS_2_0 (0x07) |
#define | CAN_BITS_3_0 (0x0F) |
#define | CAN_BITS_4_0 (0x1F) |
#define | CAN_BITS_7_3 (0xF8) |
#define | CAN_BITS_10_3 (0x07F8) |
#define | CAN_BITS_12_5 (0x00001FE0U) |
#define | CAN_BITS_20_13 (0x001FE000U) |
#define | CAN_BITS_28_21 (0x1FE00000U) |
#define | CAN_BITS_15_8 (0x0000FF00U) |
#define | CAN_BITS_23_16 (0x00FF0000U) |
#define | CAN_BITS_31_24 (0xFF000000U) |
#define | CAN_BITS_23_21 (0x00E00000U) |
Functions | |
void | can_enable (uint32_t canport) |
CAN Enable Enable the CAN peripheral and its associated FIFOs/counters/interrupts. More... | |
void | can_disable (uint32_t canport) |
CAN Disable Disable the CAN peripheral and all associated FIFOs/counters/interrupts. More... | |
void | can_init (uint32_t canport, bool listen_only, uint32_t sjw, uint32_t tseg1, uint32_t tseg2, bool sam3, uint32_t brp) |
CAN Init Initialize the selected CAN peripheral block. More... | |
void | can_filter_clear (uint32_t canport) |
CAN Filter Clear Clear the message filters to receive all messages. More... | |
void | can_filter_dual (uint32_t canport, uint32_t id1, uint32_t id1_mask, uint32_t id2, uint32_t id2_mask, uint8_t db, uint8_t db_mask) |
CAN Dual Filter Standard Frame Notes: More... | |
void | can_filter_single_std (uint32_t canport, uint32_t id, uint32_t id_mask, uint8_t db1, uint8_t db1_mask, uint8_t db2, uint8_t db2_mask) |
CAN Filter Single Standard Frame Notes: More... | |
void | can_filter_single_std_rtr (uint32_t canport, uint32_t id, uint32_t id_mask, uint8_t db1, uint8_t db1_mask, uint8_t db2, uint8_t db2_mask) |
CAN Filter Single Standard Frame w/RTR set Notes: More... | |
void | can_filter_single_ext (uint32_t canport, uint32_t id, uint32_t id_mask) |
CAN Filter Single Extended Frame Notes: More... | |
void | can_filter_single_ext_rtr (uint32_t canport, uint32_t id, uint32_t id_mask) |
CAN Filter Single Extended Frame w/RTR set Notes: More... | |
void | can_enable_irq (uint32_t canport, uint8_t imr) |
CAN Enable IRQ. More... | |
void | can_disable_irq (uint32_t canport, uint8_t imr) |
CAN Disable IRQ. More... | |
bool | can_transmit_std (uint32_t canport, uint32_t id, bool rtr, uint8_t length, const uint8_t *data) |
CAN Transmit Standard Frame. More... | |
bool | can_transmit_ext (uint32_t canport, uint32_t id, bool rtr, uint8_t length, const uint8_t *data) |
CAN Transmit Extended Frame. More... | |
void | can_abort_transmit (uint32_t canport) |
CAN Abort Transmit Aborts the current transmission. More... | |
void | can_receive (uint32_t canport, uint32_t *id, bool *ext, bool *rtr, uint8_t *length, uint8_t *data) |
CAN Receive Message If no data is in the RX buffer, id and length are set to 0. More... | |