Collaboration diagram for SJA1000:
Data Structures | |
struct | _CANBuffer |
Defines | |
#define | SJA1000_MODECTRL (*(volatile u_char*) (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 u_char*) (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 u_char*) (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 u_char*) (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 u_char*) (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 u_char*) (sja_base+6)) |
#define | SJA1000_BT1 (*(volatile u_char*) (sja_base+7)) |
#define | SAM_Bit 0x80 |
#define | SJA1000_OUTCTRL (*(volatile u_char*) (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 u_char*) (sja_base+16)) |
#define | SJA1000_AC1 (*(volatile u_char*) (sja_base+17)) |
#define | SJA1000_AC2 (*(volatile u_char*) (sja_base+18)) |
#define | SJA1000_AC3 (*(volatile u_char*) (sja_base+19)) |
#define | SJA1000_AM0 (*(volatile u_char*) (sja_base+20)) |
#define | SJA1000_AM1 (*(volatile u_char*) (sja_base+21)) |
#define | SJA1000_AM2 (*(volatile u_char*) (sja_base+22)) |
#define | SJA1000_AM3 (*(volatile u_char*) (sja_base+23)) |
#define | SJA1000_RxFrameInfo (*(volatile u_char*) (sja_base+16)) |
#define | SJA1000_Rx1 (*(volatile u_char*) (sja_base+17)) |
#define | SJA1000_Rx2 (*(volatile u_char*) (sja_base+18)) |
#define | SJA1000_Rx3 (*(volatile u_char*) (sja_base+19)) |
#define | SJA1000_Rx4 (*(volatile u_char*) (sja_base+20)) |
#define | SJA1000_Rx5 (*(volatile u_char*) (sja_base+21)) |
#define | SJA1000_Rx6 (*(volatile u_char*) (sja_base+22)) |
#define | SJA1000_Rx7 (*(volatile u_char*) (sja_base+23)) |
#define | SJA1000_Rx8 (*(volatile u_char*) (sja_base+24)) |
#define | SJA1000_Rx9 (*(volatile u_char*) (sja_base+25)) |
#define | SJA1000_Rx10 (*(volatile u_char*) (sja_base+26)) |
#define | SJA1000_Rx11 (*(volatile u_char*) (sja_base+27)) |
#define | SJA1000_Rx12 (*(volatile u_char*) (sja_base+28)) |
#define | TestReg (*(volatile u_char*) (sja_base+9)) |
#define | SJA1000_TxFrameInfo (*(volatile u_char*) (sja_base+16)) |
#define | SJA1000_Tx1 (*(volatile u_char*) (sja_base+17)) |
#define | SJA1000_Tx2 (*(volatile u_char*) (sja_base+18)) |
#define | SJA1000_Tx3 (*(volatile u_char*) (sja_base+19)) |
#define | SJA1000_Tx4 (*(volatile u_char*) (sja_base+20)) |
#define | SJA1000_Tx5 (*(volatile u_char*) (sja_base+21)) |
#define | SJA1000_Tx6 (*(volatile u_char*) (sja_base+22)) |
#define | SJA1000_Tx7 (*(volatile u_char*) (sja_base+23)) |
#define | SJA1000_Tx8 (*(volatile u_char*) (sja_base+24)) |
#define | SJA1000_Tx9 (*(volatile u_char*) (sja_base+25)) |
#define | SJA1000_Tx10 (*(volatile u_char*) (sja_base+26)) |
#define | SJA1000_Tx11 (*(volatile u_char*) (sja_base+27)) |
#define | SJA1000_Tx12 (*(volatile u_char*) (sja_base+28)) |
#define | SJA1000_TxFrameInfoRd (*(volatile u_char*) (sja_base+96)) |
#define | SJA1000_TxRd1 (*(volatile u_char*) (sja_base+97)) |
#define | SJA1000_TxRd2 (*(volatile u_char*) (sja_base+98)) |
#define | SJA1000_TxRd3 (*(volatile u_char*) (sja_base+99)) |
#define | SJA1000_TxRd4 (*(volatile u_char*) (sja_base+100)) |
#define | SJA1000_TxRd5 (*(volatile u_char*) (sja_base+101)) |
#define | SJA1000_TxRd6 (*(volatile u_char*) (sja_base+102)) |
#define | SJA1000_TxRd7 (*(volatile u_char*) (sja_base+103)) |
#define | SJA1000_TxRd8 (*(volatile u_char*) (sja_base+104)) |
#define | SJA1000_TxRd9 (*(volatile u_char*) (sja_base+105)) |
#define | SJA1000_TxRd10 (*(volatile u_char*) (sja_base+106)) |
#define | SJA1000_TxRd11 (*(volatile u_char*) (sja_base+107)) |
#define | SJA1000_TxRd12 (*(volatile u_char*) (sja_base+108)) |
#define | SJA1000_ArbLostCap (*(volatile u_char*) (sja_base+11)) |
#define | SJA1000_ErrCodeCap (*(volatile u_char*) (sja_base+12)) |
#define | SJA1000_ErrWarnLimit (*(volatile u_char*) (sja_base+13)) |
#define | SJA1000_RxErrCount (*(volatile u_char*) (sja_base+14)) |
#define | SJA1000_TxErrCount (*(volatile u_char*) (sja_base+15)) |
#define | SJA1000_RxMsgCount (*(volatile u_char*) (sja_base+29)) |
#define | SJA1000_RxBufStartAdr (*(volatile u_char*) (sja_base+30)) |
#define | SJA1000_CLK_DIV (*(volatile u_char*) (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 | CAN_BufSize 64 |
Typedefs | |
typedef _CANBuffer | CANBuffer |
Functions | |
void | CANBufferInit (CANBuffer *buffer, u_short size) |
CANFRAME | CANBufferGetMutex (CANBuffer *buffer) |
void | CANBufferPutMutex (CANBuffer *buffer, CANFRAME *data) |
CANFRAME | CANBufferGet (CANBuffer *buffer) |
void | CANBufferPut (CANBuffer *buffer, CANFRAME *data) |
u_short | CANBufferFree (CANBuffer *buffer) |
u_char | SJARxAvail (NUTDEVICE *dev) |
checks if data is available in input buffer | |
u_char | 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. | |
void | SJAInput (NUTDEVICE *dev, CANFRAME *frame) |
Reads a frame from input buffer. | |
void | SJASetAccCode (NUTDEVICE *dev, u_char *ac) |
Sets the acceptance code. | |
void | SJASetAccMask (NUTDEVICE *dev, u_char *am) |
Sets the acceptance mask. | |
u_char | SJASetBaudrate (NUTDEVICE *dev, u_long 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 u_short | sja_base = 0x0000 |
CANBuffer | CAN_RX_BUF |
CANBuffer | CAN_TX_BUF |
IFCAN | ifc_sja1000 |
Interface information structure. | |
NUTDEVICE | devSJA1000 |
Device information structure. |
|
checks if data is available in input buffer
|
|
checks if there's still space in output buffer
|
|
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.
|
|
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.
|
|
Sets the acceptance code.
|
|
Sets the acceptance mask.
|
|
Sets the baudrate.
|
|
Sends a CAN Frane.
|
|
Receives a CAN Frane.
|
|
CAN transmitter thread. This thread transmits data if there's some in the output buffer. It runs with high priority. |
|
Initialize SJA1000 Canbus interface. Applications typically do not use this function, but call NutRegisterDevice().
|
|
Device information structure. Applications must pass this structure to NutRegisterDevice() to bind this CAN device driver to the Nut/OS kernel. |
|
Initial value: { CAN_IF_2B, CAN_SPEED_500K, {0xFF, 0xFF, 0xFF, 0xFF} , {0x00, 0x00, 0x00, 0x00} , SJARxAvail, SJATxFree, SJAInput, SJAOutput, SJASetAccCode, SJASetAccMask, SJASetBaudrate } This struct stores some interface parameters like bautdate and acceptance mask / code. Beside this Callback handlers are registered. |
|
Initial value: { 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 } Applications must pass this structure to NutRegisterDevice() to bind this CAN device driver to the Nut/OS kernel. |