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.
Definition at line 59 of file sja1000.h.
Referenced by SJAInit(), SJASetAccCode(), SJASetAccMask(), and SJASetBaudrate().
#define RM_RR_Bit 0x01 |
Definition at line 60 of file sja1000.h.
Referenced by SJAInit(), SJASetAccCode(), SJASetAccMask(), and SJASetBaudrate().
#define AFM_Bit 0x08 |
Definition at line 64 of file sja1000.h.
Referenced by SJAInit(), SJASetAccCode(), and SJASetAccMask().
Definition at line 68 of file sja1000.h.
Referenced by SJAInit(), and SJAInput().
#define RIE_Bit 0x01 |
Definition at line 69 of file sja1000.h.
Referenced by SJAInit(), and SJAInput().
Definition at line 79 of file sja1000.h.
Referenced by SJARxFrame(), and SJATxFrame().
#define TR_Bit 0x01 |
Definition at line 80 of file sja1000.h.
Referenced by SJATxFrame().
#define RRB_Bit 0x04 |
Definition at line 82 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 110 of file sja1000.h.
Referenced by SJAInit(), and SJASetBaudrate().
Definition at line 111 of file sja1000.h.
Referenced by SJAInit(), and SJASetBaudrate().
Definition at line 136 of file sja1000.h.
Referenced by SJAInit(), and SJASetAccCode().
Definition at line 137 of file sja1000.h.
Referenced by SJAInit(), and SJASetAccCode().
Definition at line 138 of file sja1000.h.
Referenced by SJAInit(), and SJASetAccCode().
Definition at line 139 of file sja1000.h.
Referenced by SJAInit(), and SJASetAccCode().
Definition at line 140 of file sja1000.h.
Referenced by SJAInit(), and SJASetAccMask().
Definition at line 141 of file sja1000.h.
Referenced by SJAInit(), and SJASetAccMask().
Definition at line 142 of file sja1000.h.
Referenced by SJAInit(), and SJASetAccMask().
Definition at line 143 of file sja1000.h.
Referenced by SJAInit(), and SJASetAccMask().
Definition at line 146 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 147 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 148 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 149 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 150 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 151 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 152 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 153 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 154 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 155 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 156 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 157 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 158 of file sja1000.h.
Referenced by SJARxFrame().
Definition at line 164 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 165 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 166 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 167 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 168 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 169 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 170 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 171 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 172 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 173 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 174 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 175 of file sja1000.h.
Referenced by SJATxFrame().
Definition at line 176 of file sja1000.h.
Referenced by SJATxFrame().
#define CAN_TXBUF_FULL 2 |
Definition at line 247 of file sja1000.h.
Referenced by AtCanOutput(), and AtCanSendMsg().
#define CAN_BUS_OFF 0x02 |
Definition at line 253 of file sja1000.h.
Referenced by AtCanGetBusState().
#define CAN_29 0x80 |
Definition at line 257 of file sja1000.h.
Referenced by SJARxFrame(), and SJATxFrame().
#define CAN_RTR 0x40 |
Definition at line 258 of file sja1000.h.
Referenced by SJARxFrame(), and SJATxFrame().
#define SJA_SIGNAL sig_INTERRUPT7 |
#define CAN_BufSize 64 |
Definition at line 149 of file sja1000.c.
Referenced by CANBufferInit(), and SJAInit().
typedef struct _CANBuffer CANBuffer |
Definition at line 155 of file sja1000.c.
References CAN_BufSize, _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, _CANBuffer::empty, _CANBuffer::full, NutHeapAlloc, NutSemInit(), and _CANBuffer::size.
Referenced by SJAInit().
Definition at line 169 of file sja1000.c.
References _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, _CANBuffer::empty, _CANBuffer::full, NutSemPost(), NutSemWait(), and _CANBuffer::size.
Referenced by CAN_Tx().
Definition at line 192 of file sja1000.c.
References _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, _CANBuffer::empty, _CANBuffer::full, NutSemPost(), NutSemWait(), and _CANBuffer::size.
Referenced by SJAOutput().
Definition at line 210 of file sja1000.c.
References _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, and _CANBuffer::size.
Referenced by SJAInput().
Definition at line 229 of file sja1000.c.
References _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, and _CANBuffer::size.
Definition at line 241 of file sja1000.c.
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 |
Definition at line 255 of file sja1000.c.
References _CANBuffer::datalength.
SJATxFree | ( | NUTDEVICE * | dev | ) | [inline] |
checks if there's still space in output buffer
dev | Pointer to the device structure |
Definition at line 267 of file sja1000.c.
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 |
Definition at line 284 of file sja1000.c.
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 |
Definition at line 308 of file sja1000.c.
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 |
Definition at line 347 of file sja1000.c.
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 |
Definition at line 378 of file sja1000.c.
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) |
Definition at line 410 of file sja1000.c.
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 |
Definition at line 478 of file sja1000.c.
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 |
Definition at line 528 of file sja1000.c.
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.
Definition at line 576 of file sja1000.c.
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. |
Definition at line 657 of file sja1000.c.
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.