CAN Bus Controller. More...
Data Structures | |
struct | _CANBuffer |
Defines | |
#define | SJA1000_MODECTRL (*(volatile uint8_t*) (sja_base+0)) |
#define | RM_RR_Bit 0x01 |
#define | LOM_Bit 0x02 |
#define | STM_Bit 0x04 |
#define | AFM_Bit 0x08 |
#define | SM_Bit 0x10 |
#define | SJA1000_IEN (*(volatile uint8_t*) (sja_base+4)) |
#define | RIE_Bit 0x01 |
#define | TIE_Bit 0x02 |
#define | EIE_Bit 0x04 |
#define | DOIE_Bit 0x08 |
#define | WUIE_Bit 0x10 |
#define | EPIE_Bit 0x20 |
#define | ALIE_Bit 0x40 |
#define | BEIE_Bit 0x80 |
#define | SJA1000_CMD (*(volatile uint8_t*) (sja_base+1)) |
#define | TR_Bit 0x01 |
#define | AT_Bit 0x02 |
#define | RRB_Bit 0x04 |
#define | CDO_Bit 0x08 |
#define | SRR_Bit 0x10 |
#define | SJA1000_STATUS (*(volatile uint8_t*) (sja_base+2)) |
#define | RBS_Bit 0x01 |
#define | DOS_Bit 0x02 |
#define | TBS_Bit 0x04 |
#define | TCS_Bit 0x08 |
#define | RS_Bit 0x10 |
#define | TS_Bit 0x20 |
#define | ES_Bit 0x40 |
#define | BS_Bit 0x80 |
#define | SJA1000_INT (*(volatile uint8_t*) (sja_base+3)) |
#define | RI_Bit 0x01 |
#define | TI_Bit 0x02 |
#define | EI_Bit 0x04 |
#define | DOI_Bit 0x08 |
#define | WUI_Bit 0x10 |
#define | EPI_Bit 0x20 |
#define | ALI_Bit 0x40 |
#define | BEI_Bit 0x80 |
#define | SJA1000_BT0 (*(volatile uint8_t*) (sja_base+6)) |
#define | SJA1000_BT1 (*(volatile uint8_t*) (sja_base+7)) |
#define | SAM_Bit 0x80 |
#define | SJA1000_OUTCTRL (*(volatile uint8_t*) (sja_base+8)) |
#define | BiPhaseMode 0x00 |
#define | NormalMode 0x02 |
#define | ClkOutMode 0x03 |
#define | ClkOutMode 0x03 |
#define | OCPOL1_Bit 0x20 |
#define | OCPOL1_Bit 0x20 |
#define | Tx1Float 0x00 |
#define | Tx1Float 0x00 |
#define | Tx1PullDn 0x40 |
#define | Tx1PullDn 0x40 |
#define | Tx1PullUp 0x80 |
#define | Tx1PullUp 0x80 |
#define | Tx1PshPull 0xC0 |
#define | Tx1PshPull 0xC0 |
#define | OCPOLO_Bit 0x04 |
#define | Tx0Float 0x00 |
#define | Tx0Float 0x00 |
#define | Tx0PullDn 0x08 |
#define | Tx0PullDn 0x08 |
#define | Tx0PullUp 0x10 |
#define | Tx0PshPull 0x18 |
#define | SJA1000_AC0 (*(volatile uint8_t*) (sja_base+16)) |
#define | SJA1000_AC1 (*(volatile uint8_t*) (sja_base+17)) |
#define | SJA1000_AC2 (*(volatile uint8_t*) (sja_base+18)) |
#define | SJA1000_AC3 (*(volatile uint8_t*) (sja_base+19)) |
#define | SJA1000_AM0 (*(volatile uint8_t*) (sja_base+20)) |
#define | SJA1000_AM1 (*(volatile uint8_t*) (sja_base+21)) |
#define | SJA1000_AM2 (*(volatile uint8_t*) (sja_base+22)) |
#define | SJA1000_AM3 (*(volatile uint8_t*) (sja_base+23)) |
#define | SJA1000_RxFrameInfo (*(volatile uint8_t*) (sja_base+16)) |
#define | SJA1000_Rx1 (*(volatile uint8_t*) (sja_base+17)) |
#define | SJA1000_Rx2 (*(volatile uint8_t*) (sja_base+18)) |
#define | SJA1000_Rx3 (*(volatile uint8_t*) (sja_base+19)) |
#define | SJA1000_Rx4 (*(volatile uint8_t*) (sja_base+20)) |
#define | SJA1000_Rx5 (*(volatile uint8_t*) (sja_base+21)) |
#define | SJA1000_Rx6 (*(volatile uint8_t*) (sja_base+22)) |
#define | SJA1000_Rx7 (*(volatile uint8_t*) (sja_base+23)) |
#define | SJA1000_Rx8 (*(volatile uint8_t*) (sja_base+24)) |
#define | SJA1000_Rx9 (*(volatile uint8_t*) (sja_base+25)) |
#define | SJA1000_Rx10 (*(volatile uint8_t*) (sja_base+26)) |
#define | SJA1000_Rx11 (*(volatile uint8_t*) (sja_base+27)) |
#define | SJA1000_Rx12 (*(volatile uint8_t*) (sja_base+28)) |
#define | TestReg (*(volatile uint8_t*) (sja_base+9)) |
#define | SJA1000_TxFrameInfo (*(volatile uint8_t*) (sja_base+16)) |
#define | SJA1000_Tx1 (*(volatile uint8_t*) (sja_base+17)) |
#define | SJA1000_Tx2 (*(volatile uint8_t*) (sja_base+18)) |
#define | SJA1000_Tx3 (*(volatile uint8_t*) (sja_base+19)) |
#define | SJA1000_Tx4 (*(volatile uint8_t*) (sja_base+20)) |
#define | SJA1000_Tx5 (*(volatile uint8_t*) (sja_base+21)) |
#define | SJA1000_Tx6 (*(volatile uint8_t*) (sja_base+22)) |
#define | SJA1000_Tx7 (*(volatile uint8_t*) (sja_base+23)) |
#define | SJA1000_Tx8 (*(volatile uint8_t*) (sja_base+24)) |
#define | SJA1000_Tx9 (*(volatile uint8_t*) (sja_base+25)) |
#define | SJA1000_Tx10 (*(volatile uint8_t*) (sja_base+26)) |
#define | SJA1000_Tx11 (*(volatile uint8_t*) (sja_base+27)) |
#define | SJA1000_Tx12 (*(volatile uint8_t*) (sja_base+28)) |
#define | SJA1000_TxFrameInfoRd (*(volatile uint8_t*) (sja_base+96)) |
#define | SJA1000_TxRd1 (*(volatile uint8_t*) (sja_base+97)) |
#define | SJA1000_TxRd2 (*(volatile uint8_t*) (sja_base+98)) |
#define | SJA1000_TxRd3 (*(volatile uint8_t*) (sja_base+99)) |
#define | SJA1000_TxRd4 (*(volatile uint8_t*) (sja_base+100)) |
#define | SJA1000_TxRd5 (*(volatile uint8_t*) (sja_base+101)) |
#define | SJA1000_TxRd6 (*(volatile uint8_t*) (sja_base+102)) |
#define | SJA1000_TxRd7 (*(volatile uint8_t*) (sja_base+103)) |
#define | SJA1000_TxRd8 (*(volatile uint8_t*) (sja_base+104)) |
#define | SJA1000_TxRd9 (*(volatile uint8_t*) (sja_base+105)) |
#define | SJA1000_TxRd10 (*(volatile uint8_t*) (sja_base+106)) |
#define | SJA1000_TxRd11 (*(volatile uint8_t*) (sja_base+107)) |
#define | SJA1000_TxRd12 (*(volatile uint8_t*) (sja_base+108)) |
#define | SJA1000_ArbLostCap (*(volatile uint8_t*) (sja_base+11)) |
#define | SJA1000_ErrCodeCap (*(volatile uint8_t*) (sja_base+12)) |
#define | SJA1000_ErrWarnLimit (*(volatile uint8_t*) (sja_base+13)) |
#define | SJA1000_RxErrCount (*(volatile uint8_t*) (sja_base+14)) |
#define | SJA1000_TxErrCount (*(volatile uint8_t*) (sja_base+15)) |
#define | SJA1000_RxMsgCount (*(volatile uint8_t*) (sja_base+29)) |
#define | SJA1000_RxBufStartAdr (*(volatile uint8_t*) (sja_base+30)) |
#define | SJA1000_CLK_DIV (*(volatile uint8_t*) (sja_base+31)) |
#define | DivBy1 0x07 |
#define | DivBy2 0x00 |
#define | ClkOff_Bit 0x08 |
#define | RXINTEN_Bit 0x20 |
#define | CBP_Bit 0x40 |
#define | CANMode_Bit 0x80 |
#define | OCPOL0_Bit 0x04 |
#define | Presc_MB_16 0x00 |
#define | SJW_MB_16 0x00 |
#define | TSEG1_MB_16 0x04 |
#define | TSEG2_MB_16 0x10 |
#define | errCAN_INVALID_BAUD 7 |
#define | CAN_OK 0 |
#define | CAN_ERR 1 |
#define | CAN_INIT_SPEED_ERR 1 |
#define | CAN_NOT_INITIATED 1 |
#define | CAN_NOT_STARTED 1 |
#define | CAN_TXBUF_FULL 2 |
#define | CAN_RXBUF_EMPTY 2 |
#define | CAN_LOST_FRAME 0x01 |
#define | CAN_BUS_OFF 0x02 |
#define | CAN_29 0x80 |
#define | CAN_RTR 0x40 |
#define | ClrIntEnSJA 0x00 |
#define | SJA_SIGNAL sig_INTERRUPT7 |
#define | SJA_EICR EICRB |
#define | SJA_SIGNAL_BIT 7 |
#define | SJA_BASE 0x8800 |
#define | CAN_BufSize 64 |
Typedefs | |
typedef struct _CANBuffer | CANBuffer |
Functions | |
void | CANBufferInit (CANBuffer *buffer, uint16_t size) |
CANFRAME | CANBufferGetMutex (CANBuffer *buffer) |
void | CANBufferPutMutex (CANBuffer *buffer, CANFRAME *data) |
CANFRAME | CANBufferGet (CANBuffer *buffer) |
void | CANBufferPut (CANBuffer *buffer, CANFRAME *data) |
uint16_t | CANBufferFree (CANBuffer *buffer) |
uint8_t | SJARxAvail (NUTDEVICE *dev) |
checks if data is available in input buffer | |
uint8_t | SJATxFree (NUTDEVICE *dev) |
checks if there's still space in output buffer | |
void | SJAOutput (NUTDEVICE *dev, CANFRAME *frame) |
Write a frame from to output buffer. | |
uint8_t | SJAInput (NUTDEVICE *dev, CANFRAME *frame) |
Reads a frame from input buffer. | |
void | SJASetAccCode (NUTDEVICE *dev, uint8_t *ac) |
Sets the acceptance code. | |
void | SJASetAccMask (NUTDEVICE *dev, uint8_t *am) |
Sets the acceptance mask. | |
uint8_t | SJASetBaudrate (NUTDEVICE *dev, uint32_t baudrate) |
Sets the baudrate. | |
void | SJATxFrame (CANFRAME *CAN_frame) |
Sends a CAN Frane. | |
void | SJARxFrame (CANFRAME *CAN_frame) |
Receives a CAN Frane. | |
void | CAN_Tx (void *arg) |
CAN transmitter thread. | |
int | SJAInit (NUTDEVICE *dev) |
Initialize SJA1000 Canbus interface. | |
Variables | |
NUTDEVICE | devSJA1000 |
Device information structure. | |
CANINFO | dcb_sja1000 |
volatile uint16_t | sja_base = 0x0000 |
CANBuffer | CAN_RX_BUF |
CANBuffer | CAN_TX_BUF |
IFCAN | ifc_sja1000 |
Interface information structure. | |
NUTDEVICE | devSJA1000 |
Device information structure. |
CAN Bus Controller.
Referenced by SJAInit(), SJASetAccCode(), SJASetAccMask(), and SJASetBaudrate().
#define RM_RR_Bit 0x01 |
Referenced by SJAInit(), SJASetAccCode(), SJASetAccMask(), and SJASetBaudrate().
#define LOM_Bit 0x02 |
#define STM_Bit 0x04 |
#define AFM_Bit 0x08 |
Referenced by SJAInit(), SJASetAccCode(), and SJASetAccMask().
#define SM_Bit 0x10 |
Referenced by SJAInit(), and SJAInput().
#define RIE_Bit 0x01 |
Referenced by SJAInit(), and SJAInput().
#define TIE_Bit 0x02 |
Referenced by SJAInit().
#define EIE_Bit 0x04 |
Referenced by SJAInit().
#define DOIE_Bit 0x08 |
Referenced by SJAInit().
#define WUIE_Bit 0x10 |
#define EPIE_Bit 0x20 |
#define ALIE_Bit 0x40 |
#define BEIE_Bit 0x80 |
Referenced by SJARxFrame(), and SJATxFrame().
#define TR_Bit 0x01 |
Referenced by SJATxFrame().
#define AT_Bit 0x02 |
#define RRB_Bit 0x04 |
Referenced by SJARxFrame().
#define CDO_Bit 0x08 |
#define SRR_Bit 0x10 |
#define RBS_Bit 0x01 |
#define DOS_Bit 0x02 |
#define TBS_Bit 0x04 |
Referenced by CAN_Tx().
#define TCS_Bit 0x08 |
#define RS_Bit 0x10 |
#define TS_Bit 0x20 |
#define ES_Bit 0x40 |
#define BS_Bit 0x80 |
#define RI_Bit 0x01 |
#define TI_Bit 0x02 |
#define EI_Bit 0x04 |
#define DOI_Bit 0x08 |
#define WUI_Bit 0x10 |
#define EPI_Bit 0x20 |
#define ALI_Bit 0x40 |
#define BEI_Bit 0x80 |
Referenced by SJAInit(), and SJASetBaudrate().
Referenced by SJAInit(), and SJASetBaudrate().
#define SAM_Bit 0x80 |
#define BiPhaseMode 0x00 |
#define NormalMode 0x02 |
Referenced by SJAInit().
#define ClkOutMode 0x03 |
#define ClkOutMode 0x03 |
#define OCPOL1_Bit 0x20 |
#define OCPOL1_Bit 0x20 |
#define Tx1Float 0x00 |
Referenced by SJAInit().
#define Tx1Float 0x00 |
#define Tx1PullDn 0x40 |
#define Tx1PullDn 0x40 |
#define Tx1PullUp 0x80 |
#define Tx1PullUp 0x80 |
#define Tx1PshPull 0xC0 |
#define Tx1PshPull 0xC0 |
#define OCPOLO_Bit 0x04 |
#define Tx0Float 0x00 |
#define Tx0Float 0x00 |
#define Tx0PullDn 0x08 |
#define Tx0PullDn 0x08 |
#define Tx0PullUp 0x10 |
#define Tx0PshPull 0x18 |
Referenced by SJAInit().
Referenced by SJAInit(), and SJASetAccCode().
Referenced by SJAInit(), and SJASetAccCode().
Referenced by SJAInit(), and SJASetAccCode().
Referenced by SJAInit(), and SJASetAccCode().
Referenced by SJAInit(), and SJASetAccMask().
Referenced by SJAInit(), and SJASetAccMask().
Referenced by SJAInit(), and SJASetAccMask().
Referenced by SJAInit(), and SJASetAccMask().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJARxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
Referenced by SJATxFrame().
#define DivBy1 0x07 |
#define DivBy2 0x00 |
Referenced by SJAInit().
#define ClkOff_Bit 0x08 |
Referenced by SJAInit().
#define RXINTEN_Bit 0x20 |
#define CBP_Bit 0x40 |
Referenced by SJAInit().
#define CANMode_Bit 0x80 |
Referenced by SJAInit().
#define OCPOL0_Bit 0x04 |
#define Presc_MB_16 0x00 |
#define SJW_MB_16 0x00 |
#define TSEG1_MB_16 0x04 |
#define TSEG2_MB_16 0x10 |
#define errCAN_INVALID_BAUD 7 |
Referenced by SJAInit().
#define CAN_OK 0 |
#define CAN_ERR 1 |
#define CAN_INIT_SPEED_ERR 1 |
#define CAN_NOT_INITIATED 1 |
#define CAN_NOT_STARTED 1 |
#define CAN_TXBUF_FULL 2 |
#define CAN_RXBUF_EMPTY 2 |
#define CAN_LOST_FRAME 0x01 |
#define CAN_BUS_OFF 0x02 |
#define CAN_29 0x80 |
Referenced by SJARxFrame(), and SJATxFrame().
#define CAN_RTR 0x40 |
Referenced by SJARxFrame(), and SJATxFrame().
#define ClrIntEnSJA 0x00 |
Referenced by SJAInit().
#define SJA_SIGNAL sig_INTERRUPT7 |
Referenced by SJAInit().
#define SJA_EICR EICRB |
#define SJA_SIGNAL_BIT 7 |
Referenced by SJAInit().
#define SJA_BASE 0x8800 |
Referenced by SJAInit().
#define CAN_BufSize 64 |
Referenced by CANBufferInit(), and SJAInit().
typedef struct _CANBuffer CANBuffer |
References CAN_BufSize, _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, _CANBuffer::empty, _CANBuffer::full, NutHeapAlloc, NutSemInit(), and _CANBuffer::size.
Referenced by SJAInit().
References _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, _CANBuffer::empty, _CANBuffer::full, NutSemPost(), NutSemWait(), and _CANBuffer::size.
Referenced by CAN_Tx().
References _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, _CANBuffer::empty, _CANBuffer::full, NutSemPost(), NutSemWait(), and _CANBuffer::size.
Referenced by SJAOutput().
References _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, and _CANBuffer::size.
Referenced by SJAInput().
References _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, and _CANBuffer::size.
References _CANBuffer::datalength, and _CANBuffer::size.
Referenced by SJATxFree().
SJARxAvail | ( | NUTDEVICE * | dev | ) | [inline] |
checks if data is available in input buffer
dev | Pointer to the device structure |
References _CANBuffer::datalength.
SJATxFree | ( | NUTDEVICE * | dev | ) | [inline] |
checks if there's still space in output buffer
dev | Pointer to the device structure |
References CANBufferFree().
Write a frame from to output buffer.
This function writes a frame to the output buffer. If the output buffer is full the function will block until frames are send.
dev | Pointer to the device structure |
frame | Pointer to the receive frame |
References _CANINFO::can_tx_rdy, CANBufferPutMutex(), _NUTDEVICE::dev_dcb, and NutEventPostAsync().
Reads a frame from input buffer.
This function reads a frame from the input buffer. If the input buffer is empty the function will block unitl new frames are received.
dev | Pointer to the device structure |
frame | Pointer to the receive frame |
References _CANINFO::can_rx_rdy, CANBufferGet(), _CANBuffer::datalength, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, NutEnterCritical, NutEventWait(), NutExitCritical, RIE_Bit, and SJA1000_IEN.
Sets the acceptance code.
dev | Pointer to the device structure |
ac | 4 byte char array with the acceptance code |
References AFM_Bit, _NUTDEVICE::dev_icb, memcpy(), RM_RR_Bit, SJA1000_AC0, SJA1000_AC1, SJA1000_AC2, SJA1000_AC3, and SJA1000_MODECTRL.
Sets the acceptance mask.
dev | Pointer to the device structure |
am | 4 byte char array with the acceptance mask |
References AFM_Bit, _NUTDEVICE::dev_icb, memcpy(), RM_RR_Bit, SJA1000_AM0, SJA1000_AM1, SJA1000_AM2, SJA1000_AM3, and SJA1000_MODECTRL.
Sets the baudrate.
dev | Pointer to the device structure |
baudrate | Baudrate (One of the defined baudrates. See sja1000.h) |
References CAN_SPEED_100K, CAN_SPEED_10K, CAN_SPEED_125K, CAN_SPEED_1M, CAN_SPEED_20K, CAN_SPEED_250K, CAN_SPEED_500K, CAN_SPEED_50K, CAN_SPEED_800K, _NUTDEVICE::dev_icb, RM_RR_Bit, SJA1000_BT0, SJA1000_BT1, and SJA1000_MODECTRL.
SJATxFrame | ( | CANFRAME * | CAN_frame | ) |
Sends a CAN Frane.
CAN_frame | Pointer to the send frame |
References _CANFRAME::byte, CAN_29, CAN_RTR, _CANFRAME::ext, _CANFRAME::id, _CANFRAME::len, _CANFRAME::rtr, SJA1000_CMD, SJA1000_Tx1, SJA1000_Tx10, SJA1000_Tx11, SJA1000_Tx12, SJA1000_Tx2, SJA1000_Tx3, SJA1000_Tx4, SJA1000_Tx5, SJA1000_Tx6, SJA1000_Tx7, SJA1000_Tx8, SJA1000_Tx9, SJA1000_TxFrameInfo, and TR_Bit.
Referenced by CAN_Tx().
SJARxFrame | ( | CANFRAME * | CAN_frame | ) |
Receives a CAN Frane.
CAN_frame | Pointer to the receive frame |
References _CANFRAME::byte, CAN_29, CAN_RTR, _CANFRAME::ext, _CANFRAME::id, _CANFRAME::len, RRB_Bit, _CANFRAME::rtr, SJA1000_CMD, SJA1000_Rx1, SJA1000_Rx10, SJA1000_Rx11, SJA1000_Rx12, SJA1000_Rx2, SJA1000_Rx3, SJA1000_Rx4, SJA1000_Rx5, SJA1000_Rx6, SJA1000_Rx7, SJA1000_Rx8, SJA1000_Rx9, and SJA1000_RxFrameInfo.
CAN_Tx | ( | void * | arg | ) |
CAN transmitter thread.
This thread transmits data if there's some in the output buffer. It runs with high priority.
References _CANINFO::can_tx_frames, _CANINFO::can_tx_rdy, CANBufferGetMutex(), _NUTDEVICE::dev_dcb, NUT_WAIT_INFINITE, NutEventWait(), NutThreadSetPriority(), SJA1000_STATUS, SJATxFrame(), and TBS_Bit.
Referenced by SJAInit().
SJAInit | ( | NUTDEVICE * | dev | ) |
Initialize SJA1000 Canbus interface.
Applications typically do not use this function, but call NutRegisterDevice().
dev | Identifies the device to initialize. The structure must be properly set. |
References AFM_Bit, ifcan::can_acc_code, ifcan::can_acc_mask, ifcan::can_baudrate, CAN_BufSize, CAN_SPEED_100K, CAN_SPEED_10K, CAN_SPEED_125K, CAN_SPEED_1M, CAN_SPEED_20K, CAN_SPEED_250K, CAN_SPEED_500K, CAN_SPEED_50K, CAN_SPEED_800K, CAN_Tx(), CANBufferInit(), CANMode_Bit, cbi, CBP_Bit, ClkOff_Bit, ClrIntEnSJA, _NUTDEVICE::dev_base, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, DivBy2, DOIE_Bit, EICR, EIE_Bit, errCAN_INVALID_BAUD, memset(), NormalMode, NutEnterCritical, NutExitCritical, NutRegisterIrqHandler(), NutThreadCreate(), RIE_Bit, RM_RR_Bit, sbi, SJA1000_AC0, SJA1000_AC1, SJA1000_AC2, SJA1000_AC3, SJA1000_AM0, SJA1000_AM1, SJA1000_AM2, SJA1000_AM3, SJA1000_BT0, SJA1000_BT1, SJA1000_CLK_DIV, SJA1000_IEN, SJA1000_INT, SJA1000_MODECTRL, SJA1000_OUTCTRL, SJA_BASE, sja_base, SJA_SIGNAL, SJA_SIGNAL_BIT, TIE_Bit, Tx0PshPull, and Tx1Float.
Device information structure.
Applications must pass this structure to NutRegisterDevice() to bind this CAN device driver to the Nut/OS kernel.
{ CAN_IF_2B, CAN_SPEED_500K, {0xFF, 0xFF, 0xFF, 0xFF} , {0x00, 0x00, 0x00, 0x00} , NUT_WAIT_INFINITE, SJARxAvail, SJATxFree, SJAInput, SJAOutput, SJASetAccCode, SJASetAccMask, SJASetBaudrate }
Interface information structure.
This struct stores some interface parameters like bautdate and acceptance mask / code. Beside this Callback handlers are registered.
{ 0, {'s', 'j', 'a', '1', '0', '0', '0', 0, 0} , IFTYP_CAN, 0, 0, &ifc_sja1000, &dcb_sja1000, SJAInit, 0, 0, 0, 0, 0, 0, 0 }
Device information structure.
Applications must pass this structure to NutRegisterDevice() to bind this CAN device driver to the Nut/OS kernel.