SJA1000
[Special Hardware]

Collaboration diagram for SJA1000:

Detailed Description

CAN Bus Controller.


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 SJA_BASE   0x8800
#define CAN_BufSize   64

Typedefs

typedef struct _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.
u_char 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.


Define Documentation

#define SJA1000_MODECTRL   (*(volatile u_char*) (sja_base+0))

Definition at line 57 of file sja1000.h.

Referenced by SJAInit(), SJASetAccCode(), SJASetAccMask(), and SJASetBaudrate().

#define RM_RR_Bit   0x01

Definition at line 58 of file sja1000.h.

Referenced by SJAInit(), SJASetAccCode(), SJASetAccMask(), and SJASetBaudrate().

#define LOM_Bit   0x02

Definition at line 60 of file sja1000.h.

#define STM_Bit   0x04

Definition at line 61 of file sja1000.h.

#define AFM_Bit   0x08

Definition at line 62 of file sja1000.h.

Referenced by SJAInit(), SJASetAccCode(), and SJASetAccMask().

#define SM_Bit   0x10

Definition at line 63 of file sja1000.h.

#define SJA1000_IEN   (*(volatile u_char*) (sja_base+4))

Definition at line 66 of file sja1000.h.

Referenced by SJAInit(), and SJAInput().

#define RIE_Bit   0x01

Definition at line 67 of file sja1000.h.

Referenced by SJAInit(), and SJAInput().

#define TIE_Bit   0x02

Definition at line 68 of file sja1000.h.

Referenced by SJAInit().

#define EIE_Bit   0x04

Definition at line 69 of file sja1000.h.

Referenced by SJAInit().

#define DOIE_Bit   0x08

Definition at line 70 of file sja1000.h.

Referenced by SJAInit().

#define WUIE_Bit   0x10

Definition at line 71 of file sja1000.h.

#define EPIE_Bit   0x20

Definition at line 72 of file sja1000.h.

#define ALIE_Bit   0x40

Definition at line 73 of file sja1000.h.

#define BEIE_Bit   0x80

Definition at line 74 of file sja1000.h.

#define SJA1000_CMD   (*(volatile u_char*) (sja_base+1))

Definition at line 77 of file sja1000.h.

Referenced by SJARxFrame(), and SJATxFrame().

#define TR_Bit   0x01

Definition at line 78 of file sja1000.h.

Referenced by SJATxFrame().

#define AT_Bit   0x02

Definition at line 79 of file sja1000.h.

#define RRB_Bit   0x04

Definition at line 80 of file sja1000.h.

Referenced by SJARxFrame().

#define CDO_Bit   0x08

Definition at line 81 of file sja1000.h.

#define SRR_Bit   0x10

Definition at line 82 of file sja1000.h.

#define SJA1000_STATUS   (*(volatile u_char*) (sja_base+2))

Definition at line 85 of file sja1000.h.

Referenced by CAN_Tx().

#define RBS_Bit   0x01

Definition at line 86 of file sja1000.h.

#define DOS_Bit   0x02

Definition at line 87 of file sja1000.h.

#define TBS_Bit   0x04

Definition at line 88 of file sja1000.h.

Referenced by CAN_Tx().

#define TCS_Bit   0x08

Definition at line 89 of file sja1000.h.

#define RS_Bit   0x10

Definition at line 90 of file sja1000.h.

#define TS_Bit   0x20

Definition at line 91 of file sja1000.h.

#define ES_Bit   0x40

Definition at line 92 of file sja1000.h.

#define BS_Bit   0x80

Definition at line 93 of file sja1000.h.

#define SJA1000_INT   (*(volatile u_char*) (sja_base+3))

Definition at line 96 of file sja1000.h.

Referenced by SJAInit().

#define RI_Bit   0x01

Definition at line 97 of file sja1000.h.

#define TI_Bit   0x02

Definition at line 98 of file sja1000.h.

#define EI_Bit   0x04

Definition at line 99 of file sja1000.h.

#define DOI_Bit   0x08

Definition at line 100 of file sja1000.h.

#define WUI_Bit   0x10

Definition at line 101 of file sja1000.h.

#define EPI_Bit   0x20

Definition at line 103 of file sja1000.h.

#define ALI_Bit   0x40

Definition at line 104 of file sja1000.h.

#define BEI_Bit   0x80

Definition at line 105 of file sja1000.h.

#define SJA1000_BT0   (*(volatile u_char*) (sja_base+6))

Definition at line 108 of file sja1000.h.

Referenced by SJAInit(), and SJASetBaudrate().

#define SJA1000_BT1   (*(volatile u_char*) (sja_base+7))

Definition at line 109 of file sja1000.h.

Referenced by SJAInit(), and SJASetBaudrate().

#define SAM_Bit   0x80

Definition at line 110 of file sja1000.h.

#define SJA1000_OUTCTRL   (*(volatile u_char*) (sja_base+8))

Definition at line 115 of file sja1000.h.

Referenced by SJAInit().

#define BiPhaseMode   0x00

Definition at line 117 of file sja1000.h.

#define NormalMode   0x02

Definition at line 118 of file sja1000.h.

Referenced by SJAInit().

#define ClkOutMode   0x03

Definition at line 208 of file sja1000.h.

#define ClkOutMode   0x03

Definition at line 208 of file sja1000.h.

#define OCPOL1_Bit   0x20

Definition at line 211 of file sja1000.h.

#define OCPOL1_Bit   0x20

Definition at line 211 of file sja1000.h.

#define Tx1Float   0x00

Definition at line 212 of file sja1000.h.

Referenced by SJAInit().

#define Tx1Float   0x00

Definition at line 212 of file sja1000.h.

#define Tx1PullDn   0x40

Definition at line 213 of file sja1000.h.

#define Tx1PullDn   0x40

Definition at line 213 of file sja1000.h.

#define Tx1PullUp   0x80

Definition at line 214 of file sja1000.h.

#define Tx1PullUp   0x80

Definition at line 214 of file sja1000.h.

#define Tx1PshPull   0xC0

Definition at line 215 of file sja1000.h.

#define Tx1PshPull   0xC0

Definition at line 215 of file sja1000.h.

#define OCPOLO_Bit   0x04

Definition at line 127 of file sja1000.h.

#define Tx0Float   0x00

Definition at line 219 of file sja1000.h.

#define Tx0Float   0x00

Definition at line 219 of file sja1000.h.

#define Tx0PullDn   0x08

Definition at line 220 of file sja1000.h.

#define Tx0PullDn   0x08

Definition at line 220 of file sja1000.h.

#define Tx0PullUp   0x10

Definition at line 130 of file sja1000.h.

#define Tx0PshPull   0x18

Definition at line 131 of file sja1000.h.

Referenced by SJAInit().

#define SJA1000_AC0   (*(volatile u_char*) (sja_base+16))

Definition at line 134 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccCode().

#define SJA1000_AC1   (*(volatile u_char*) (sja_base+17))

Definition at line 135 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccCode().

#define SJA1000_AC2   (*(volatile u_char*) (sja_base+18))

Definition at line 136 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccCode().

#define SJA1000_AC3   (*(volatile u_char*) (sja_base+19))

Definition at line 137 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccCode().

#define SJA1000_AM0   (*(volatile u_char*) (sja_base+20))

Definition at line 138 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccMask().

#define SJA1000_AM1   (*(volatile u_char*) (sja_base+21))

Definition at line 139 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccMask().

#define SJA1000_AM2   (*(volatile u_char*) (sja_base+22))

Definition at line 140 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccMask().

#define SJA1000_AM3   (*(volatile u_char*) (sja_base+23))

Definition at line 141 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccMask().

#define SJA1000_RxFrameInfo   (*(volatile u_char*) (sja_base+16))

Definition at line 144 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx1   (*(volatile u_char*) (sja_base+17))

Definition at line 145 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx2   (*(volatile u_char*) (sja_base+18))

Definition at line 146 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx3   (*(volatile u_char*) (sja_base+19))

Definition at line 147 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx4   (*(volatile u_char*) (sja_base+20))

Definition at line 148 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx5   (*(volatile u_char*) (sja_base+21))

Definition at line 149 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx6   (*(volatile u_char*) (sja_base+22))

Definition at line 150 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx7   (*(volatile u_char*) (sja_base+23))

Definition at line 151 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx8   (*(volatile u_char*) (sja_base+24))

Definition at line 152 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx9   (*(volatile u_char*) (sja_base+25))

Definition at line 153 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx10   (*(volatile u_char*) (sja_base+26))

Definition at line 154 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx11   (*(volatile u_char*) (sja_base+27))

Definition at line 155 of file sja1000.h.

Referenced by SJARxFrame().

#define SJA1000_Rx12   (*(volatile u_char*) (sja_base+28))

Definition at line 156 of file sja1000.h.

Referenced by SJARxFrame().

#define TestReg   (*(volatile u_char*) (sja_base+9))

Definition at line 160 of file sja1000.h.

#define SJA1000_TxFrameInfo   (*(volatile u_char*) (sja_base+16))

Definition at line 162 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx1   (*(volatile u_char*) (sja_base+17))

Definition at line 163 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx2   (*(volatile u_char*) (sja_base+18))

Definition at line 164 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx3   (*(volatile u_char*) (sja_base+19))

Definition at line 165 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx4   (*(volatile u_char*) (sja_base+20))

Definition at line 166 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx5   (*(volatile u_char*) (sja_base+21))

Definition at line 167 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx6   (*(volatile u_char*) (sja_base+22))

Definition at line 168 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx7   (*(volatile u_char*) (sja_base+23))

Definition at line 169 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx8   (*(volatile u_char*) (sja_base+24))

Definition at line 170 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx9   (*(volatile u_char*) (sja_base+25))

Definition at line 171 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx10   (*(volatile u_char*) (sja_base+26))

Definition at line 172 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx11   (*(volatile u_char*) (sja_base+27))

Definition at line 173 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_Tx12   (*(volatile u_char*) (sja_base+28))

Definition at line 174 of file sja1000.h.

Referenced by SJATxFrame().

#define SJA1000_TxFrameInfoRd   (*(volatile u_char*) (sja_base+96))

Definition at line 177 of file sja1000.h.

#define SJA1000_TxRd1   (*(volatile u_char*) (sja_base+97))

Definition at line 178 of file sja1000.h.

#define SJA1000_TxRd2   (*(volatile u_char*) (sja_base+98))

Definition at line 179 of file sja1000.h.

#define SJA1000_TxRd3   (*(volatile u_char*) (sja_base+99))

Definition at line 180 of file sja1000.h.

#define SJA1000_TxRd4   (*(volatile u_char*) (sja_base+100))

Definition at line 181 of file sja1000.h.

#define SJA1000_TxRd5   (*(volatile u_char*) (sja_base+101))

Definition at line 182 of file sja1000.h.

#define SJA1000_TxRd6   (*(volatile u_char*) (sja_base+102))

Definition at line 183 of file sja1000.h.

#define SJA1000_TxRd7   (*(volatile u_char*) (sja_base+103))

Definition at line 184 of file sja1000.h.

#define SJA1000_TxRd8   (*(volatile u_char*) (sja_base+104))

Definition at line 185 of file sja1000.h.

#define SJA1000_TxRd9   (*(volatile u_char*) (sja_base+105))

Definition at line 186 of file sja1000.h.

#define SJA1000_TxRd10   (*(volatile u_char*) (sja_base+106))

Definition at line 187 of file sja1000.h.

#define SJA1000_TxRd11   (*(volatile u_char*) (sja_base+107))

Definition at line 188 of file sja1000.h.

#define SJA1000_TxRd12   (*(volatile u_char*) (sja_base+108))

Definition at line 189 of file sja1000.h.

#define SJA1000_ArbLostCap   (*(volatile u_char*) (sja_base+11))

Definition at line 192 of file sja1000.h.

#define SJA1000_ErrCodeCap   (*(volatile u_char*) (sja_base+12))

Definition at line 193 of file sja1000.h.

#define SJA1000_ErrWarnLimit   (*(volatile u_char*) (sja_base+13))

Definition at line 194 of file sja1000.h.

#define SJA1000_RxErrCount   (*(volatile u_char*) (sja_base+14))

Definition at line 195 of file sja1000.h.

#define SJA1000_TxErrCount   (*(volatile u_char*) (sja_base+15))

Definition at line 196 of file sja1000.h.

#define SJA1000_RxMsgCount   (*(volatile u_char*) (sja_base+29))

Definition at line 197 of file sja1000.h.

#define SJA1000_RxBufStartAdr   (*(volatile u_char*) (sja_base+30))

Definition at line 198 of file sja1000.h.

#define SJA1000_CLK_DIV   (*(volatile u_char*) (sja_base+31))

Definition at line 201 of file sja1000.h.

Referenced by SJAInit().

#define DivBy1   0x07

Definition at line 202 of file sja1000.h.

#define DivBy2   0x00

Definition at line 203 of file sja1000.h.

Referenced by SJAInit().

#define ClkOff_Bit   0x08

Definition at line 204 of file sja1000.h.

Referenced by SJAInit().

#define RXINTEN_Bit   0x20

Definition at line 205 of file sja1000.h.

#define CBP_Bit   0x40

Definition at line 206 of file sja1000.h.

Referenced by SJAInit().

#define CANMode_Bit   0x80

Definition at line 207 of file sja1000.h.

Referenced by SJAInit().

#define OCPOL0_Bit   0x04

Definition at line 218 of file sja1000.h.

#define Presc_MB_16   0x00

Definition at line 231 of file sja1000.h.

#define SJW_MB_16   0x00

Definition at line 232 of file sja1000.h.

#define TSEG1_MB_16   0x04

Definition at line 233 of file sja1000.h.

#define TSEG2_MB_16   0x10

Definition at line 234 of file sja1000.h.

#define errCAN_INVALID_BAUD   7

Definition at line 239 of file sja1000.h.

Referenced by SJAInit().

#define CAN_OK   0

Definition at line 240 of file sja1000.h.

#define CAN_ERR   1

Definition at line 241 of file sja1000.h.

#define CAN_INIT_SPEED_ERR   1

Definition at line 242 of file sja1000.h.

#define CAN_NOT_INITIATED   1

Definition at line 243 of file sja1000.h.

#define CAN_NOT_STARTED   1

Definition at line 244 of file sja1000.h.

#define CAN_TXBUF_FULL   2

Definition at line 245 of file sja1000.h.

Referenced by AtCanOutput(), and AtCanSendMsg().

#define CAN_RXBUF_EMPTY   2

Definition at line 246 of file sja1000.h.

#define CAN_LOST_FRAME   0x01

Definition at line 250 of file sja1000.h.

#define CAN_BUS_OFF   0x02

Definition at line 251 of file sja1000.h.

Referenced by AtCanGetBusState().

#define CAN_29   0x80

Definition at line 255 of file sja1000.h.

Referenced by SJARxFrame(), and SJATxFrame().

#define CAN_RTR   0x40

Definition at line 256 of file sja1000.h.

Referenced by SJARxFrame(), and SJATxFrame().

#define ClrIntEnSJA   0x00

Definition at line 258 of file sja1000.h.

Referenced by SJAInit().

#define SJA_SIGNAL   sig_INTERRUPT7

Definition at line 114 of file sja1000.c.

#define SJA_EICR   EICRB

Definition at line 118 of file sja1000.c.

#define SJA_SIGNAL_BIT   7

Definition at line 122 of file sja1000.c.

#define SJA_BASE   0x8800

Definition at line 126 of file sja1000.c.

Referenced by SJAInit().

#define CAN_BufSize   64

Definition at line 146 of file sja1000.c.

Referenced by CANBufferInit(), and SJAInit().


Typedef Documentation

typedef struct _CANBuffer CANBuffer

Definition at line 143 of file sja1000.c.


Function Documentation

void CANBufferInit ( CANBuffer buffer,
u_short  size 
)

Definition at line 152 of file sja1000.c.

References CAN_BufSize, NutHeapAlloc(), and NutSemInit().

Referenced by SJAInit().

CANFRAME CANBufferGetMutex ( CANBuffer buffer  ) 

Definition at line 166 of file sja1000.c.

References NutSemPost(), and NutSemWait().

Referenced by CAN_Tx().

void CANBufferPutMutex ( CANBuffer buffer,
CANFRAME data 
)

Definition at line 189 of file sja1000.c.

References NutSemPost(), and NutSemWait().

Referenced by SJAOutput().

CANFRAME CANBufferGet ( CANBuffer buffer  ) 

Definition at line 207 of file sja1000.c.

Referenced by SJAInput().

void CANBufferPut ( CANBuffer buffer,
CANFRAME data 
)

Definition at line 226 of file sja1000.c.

u_short CANBufferFree ( CANBuffer buffer  ) 

Definition at line 238 of file sja1000.c.

Referenced by SJATxFree().

SJARxAvail ( NUTDEVICE dev  )  [inline]

checks if data is available in input buffer

Parameters:
dev Pointer to the device structure

Definition at line 252 of file sja1000.c.

References CAN_RX_BUF.

SJATxFree ( NUTDEVICE dev  )  [inline]

checks if there's still space in output buffer

Parameters:
dev Pointer to the device structure

Definition at line 264 of file sja1000.c.

References CAN_TX_BUF, and CANBufferFree().

SJAOutput ( NUTDEVICE dev,
CANFRAME frame 
)

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.

Parameters:
dev Pointer to the device structure
frame Pointer to the receive frame

Definition at line 281 of file sja1000.c.

References CAN_TX_BUF, _CANINFO::can_tx_rdy, CANBufferPutMutex(), _NUTDEVICE::dev_dcb, and NutEventPostAsync().

SJAInput ( NUTDEVICE dev,
CANFRAME frame 
)

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.

Parameters:
dev Pointer to the device structure
frame Pointer to the receive frame
Returns:
1 if timeout, 0 otherwise

Definition at line 305 of file sja1000.c.

References CAN_RX_BUF, _CANINFO::can_rx_rdy, CANBufferGet(), _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, NutEnterCritical, NutEventWait(), NutExitCritical, RIE_Bit, and SJA1000_IEN.

SJASetAccCode ( NUTDEVICE dev,
u_char ac 
)

Sets the acceptance code.

Parameters:
dev Pointer to the device structure
ac 4 byte char array with the acceptance code

Definition at line 344 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.

SJASetAccMask ( NUTDEVICE dev,
u_char am 
)

Sets the acceptance mask.

Parameters:
dev Pointer to the device structure
am 4 byte char array with the acceptance mask

Definition at line 375 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.

SJASetBaudrate ( NUTDEVICE dev,
u_long  baudrate 
)

Sets the baudrate.

Parameters:
dev Pointer to the device structure
baudrate Baudrate (One of the defined baudrates. See sja1000.h)

Definition at line 407 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  ) 

SJARxFrame ( CANFRAME CAN_frame  ) 

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 573 of file sja1000.c.

References CAN_TX_BUF, _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  ) 


Variable Documentation

Device information structure.

Applications must pass this structure to NutRegisterDevice() to bind this CAN device driver to the Nut/OS kernel.

Definition at line 805 of file sja1000.c.

Definition at line 129 of file sja1000.c.

volatile u_short sja_base = 0x0000

Definition at line 131 of file sja1000.c.

Referenced by SJAInit().

Definition at line 149 of file sja1000.c.

Referenced by SJAInit(), SJAInput(), and SJARxAvail().

Definition at line 150 of file sja1000.c.

Referenced by CAN_Tx(), SJAInit(), SJAOutput(), and SJATxFree().

Initial value:

 {
    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.

Definition at line 781 of file sja1000.c.

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                           
}
Device information structure.

Applications must pass this structure to NutRegisterDevice() to bind this CAN device driver to the Nut/OS kernel.

Definition at line 805 of file sja1000.c.


© 2000-2007 by egnite Software GmbH - visit http://www.ethernut.de/