SJA1000
[Special Hardware]

Collaboration diagram for SJA1000:

Detailed Description

CAN Bus Controller.


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.


Define Documentation

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

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 LOM_Bit   0x02

Definition at line 62 of file sja1000.h.

#define STM_Bit   0x04

Definition at line 63 of file sja1000.h.

#define AFM_Bit   0x08

Definition at line 64 of file sja1000.h.

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

#define SM_Bit   0x10

Definition at line 65 of file sja1000.h.

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

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().

#define TIE_Bit   0x02

Definition at line 70 of file sja1000.h.

Referenced by SJAInit().

#define EIE_Bit   0x04

Definition at line 71 of file sja1000.h.

Referenced by SJAInit().

#define DOIE_Bit   0x08

Definition at line 72 of file sja1000.h.

Referenced by SJAInit().

#define WUIE_Bit   0x10

Definition at line 73 of file sja1000.h.

#define EPIE_Bit   0x20

Definition at line 74 of file sja1000.h.

#define ALIE_Bit   0x40

Definition at line 75 of file sja1000.h.

#define BEIE_Bit   0x80

Definition at line 76 of file sja1000.h.

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

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 AT_Bit   0x02

Definition at line 81 of file sja1000.h.

#define RRB_Bit   0x04

Definition at line 82 of file sja1000.h.

Referenced by SJARxFrame().

#define CDO_Bit   0x08

Definition at line 83 of file sja1000.h.

#define SRR_Bit   0x10

Definition at line 84 of file sja1000.h.

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

Definition at line 87 of file sja1000.h.

Referenced by CAN_Tx().

#define RBS_Bit   0x01

Definition at line 88 of file sja1000.h.

#define DOS_Bit   0x02

Definition at line 89 of file sja1000.h.

#define TBS_Bit   0x04

Definition at line 90 of file sja1000.h.

Referenced by CAN_Tx().

#define TCS_Bit   0x08

Definition at line 91 of file sja1000.h.

#define RS_Bit   0x10

Definition at line 92 of file sja1000.h.

#define TS_Bit   0x20

Definition at line 93 of file sja1000.h.

#define ES_Bit   0x40

Definition at line 94 of file sja1000.h.

#define BS_Bit   0x80

Definition at line 95 of file sja1000.h.

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

Definition at line 98 of file sja1000.h.

Referenced by SJAInit().

#define RI_Bit   0x01

Definition at line 99 of file sja1000.h.

#define TI_Bit   0x02

Definition at line 100 of file sja1000.h.

#define EI_Bit   0x04

Definition at line 101 of file sja1000.h.

#define DOI_Bit   0x08

Definition at line 102 of file sja1000.h.

#define WUI_Bit   0x10

Definition at line 103 of file sja1000.h.

#define EPI_Bit   0x20

Definition at line 105 of file sja1000.h.

#define ALI_Bit   0x40

Definition at line 106 of file sja1000.h.

#define BEI_Bit   0x80

Definition at line 107 of file sja1000.h.

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

Definition at line 110 of file sja1000.h.

Referenced by SJAInit(), and SJASetBaudrate().

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

Definition at line 111 of file sja1000.h.

Referenced by SJAInit(), and SJASetBaudrate().

#define SAM_Bit   0x80

Definition at line 112 of file sja1000.h.

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

Definition at line 117 of file sja1000.h.

Referenced by SJAInit().

#define BiPhaseMode   0x00

Definition at line 119 of file sja1000.h.

#define NormalMode   0x02

Definition at line 120 of file sja1000.h.

Referenced by SJAInit().

#define ClkOutMode   0x03

Definition at line 210 of file sja1000.h.

#define ClkOutMode   0x03

Definition at line 210 of file sja1000.h.

#define OCPOL1_Bit   0x20

Definition at line 213 of file sja1000.h.

#define OCPOL1_Bit   0x20

Definition at line 213 of file sja1000.h.

#define Tx1Float   0x00

Definition at line 214 of file sja1000.h.

Referenced by SJAInit().

#define Tx1Float   0x00

Definition at line 214 of file sja1000.h.

#define Tx1PullDn   0x40

Definition at line 215 of file sja1000.h.

#define Tx1PullDn   0x40

Definition at line 215 of file sja1000.h.

#define Tx1PullUp   0x80

Definition at line 216 of file sja1000.h.

#define Tx1PullUp   0x80

Definition at line 216 of file sja1000.h.

#define Tx1PshPull   0xC0

Definition at line 217 of file sja1000.h.

#define Tx1PshPull   0xC0

Definition at line 217 of file sja1000.h.

#define OCPOLO_Bit   0x04

Definition at line 129 of file sja1000.h.

#define Tx0Float   0x00

Definition at line 221 of file sja1000.h.

#define Tx0Float   0x00

Definition at line 221 of file sja1000.h.

#define Tx0PullDn   0x08

Definition at line 222 of file sja1000.h.

#define Tx0PullDn   0x08

Definition at line 222 of file sja1000.h.

#define Tx0PullUp   0x10

Definition at line 132 of file sja1000.h.

#define Tx0PshPull   0x18

Definition at line 133 of file sja1000.h.

Referenced by SJAInit().

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

Definition at line 136 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccCode().

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

Definition at line 137 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccCode().

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

Definition at line 138 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccCode().

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

Definition at line 139 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccCode().

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

Definition at line 140 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccMask().

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

Definition at line 141 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccMask().

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

Definition at line 142 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccMask().

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

Definition at line 143 of file sja1000.h.

Referenced by SJAInit(), and SJASetAccMask().

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

Definition at line 146 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 147 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 148 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 149 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 150 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 151 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 152 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 153 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 154 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 155 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 156 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 157 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 158 of file sja1000.h.

Referenced by SJARxFrame().

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

Definition at line 162 of file sja1000.h.

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

Definition at line 164 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 165 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 166 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 167 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 168 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 169 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 170 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 171 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 172 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 173 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 174 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 175 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 176 of file sja1000.h.

Referenced by SJATxFrame().

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

Definition at line 179 of file sja1000.h.

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

Definition at line 180 of file sja1000.h.

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

Definition at line 181 of file sja1000.h.

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

Definition at line 182 of file sja1000.h.

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

Definition at line 183 of file sja1000.h.

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

Definition at line 184 of file sja1000.h.

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

Definition at line 185 of file sja1000.h.

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

Definition at line 186 of file sja1000.h.

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

Definition at line 187 of file sja1000.h.

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

Definition at line 188 of file sja1000.h.

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

Definition at line 189 of file sja1000.h.

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

Definition at line 190 of file sja1000.h.

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

Definition at line 191 of file sja1000.h.

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

Definition at line 194 of file sja1000.h.

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

Definition at line 195 of file sja1000.h.

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

Definition at line 196 of file sja1000.h.

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

Definition at line 197 of file sja1000.h.

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

Definition at line 198 of file sja1000.h.

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

Definition at line 199 of file sja1000.h.

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

Definition at line 200 of file sja1000.h.

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

Definition at line 203 of file sja1000.h.

Referenced by SJAInit().

#define DivBy1   0x07

Definition at line 204 of file sja1000.h.

#define DivBy2   0x00

Definition at line 205 of file sja1000.h.

Referenced by SJAInit().

#define ClkOff_Bit   0x08

Definition at line 206 of file sja1000.h.

Referenced by SJAInit().

#define RXINTEN_Bit   0x20

Definition at line 207 of file sja1000.h.

#define CBP_Bit   0x40

Definition at line 208 of file sja1000.h.

Referenced by SJAInit().

#define CANMode_Bit   0x80

Definition at line 209 of file sja1000.h.

Referenced by SJAInit().

#define OCPOL0_Bit   0x04

Definition at line 220 of file sja1000.h.

#define Presc_MB_16   0x00

Definition at line 233 of file sja1000.h.

#define SJW_MB_16   0x00

Definition at line 234 of file sja1000.h.

#define TSEG1_MB_16   0x04

Definition at line 235 of file sja1000.h.

#define TSEG2_MB_16   0x10

Definition at line 236 of file sja1000.h.

#define errCAN_INVALID_BAUD   7

Definition at line 241 of file sja1000.h.

Referenced by SJAInit().

#define CAN_OK   0

Definition at line 242 of file sja1000.h.

#define CAN_ERR   1

Definition at line 243 of file sja1000.h.

#define CAN_INIT_SPEED_ERR   1

Definition at line 244 of file sja1000.h.

#define CAN_NOT_INITIATED   1

Definition at line 245 of file sja1000.h.

#define CAN_NOT_STARTED   1

Definition at line 246 of file sja1000.h.

#define CAN_TXBUF_FULL   2

Definition at line 247 of file sja1000.h.

Referenced by AtCanOutput(), and AtCanSendMsg().

#define CAN_RXBUF_EMPTY   2

Definition at line 248 of file sja1000.h.

#define CAN_LOST_FRAME   0x01

Definition at line 252 of file sja1000.h.

#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 ClrIntEnSJA   0x00

Definition at line 260 of file sja1000.h.

Referenced by SJAInit().

#define SJA_SIGNAL   sig_INTERRUPT7

Definition at line 117 of file sja1000.c.

#define SJA_EICR   EICRB

Definition at line 121 of file sja1000.c.

#define SJA_SIGNAL_BIT   7

Definition at line 125 of file sja1000.c.

#define SJA_BASE   0x8800

Definition at line 129 of file sja1000.c.

Referenced by SJAInit().

#define CAN_BufSize   64

Definition at line 149 of file sja1000.c.

Referenced by CANBufferInit(), and SJAInit().


Typedef Documentation

typedef struct _CANBuffer CANBuffer

Definition at line 146 of file sja1000.c.


Function Documentation

void CANBufferInit ( CANBuffer buffer,
uint16_t  size 
)

Definition at line 155 of file sja1000.c.

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

Referenced by SJAInit().

CANFRAME CANBufferGetMutex ( CANBuffer buffer  ) 

Definition at line 169 of file sja1000.c.

References NutSemPost(), and NutSemWait().

Referenced by CAN_Tx().

void CANBufferPutMutex ( CANBuffer buffer,
CANFRAME data 
)

Definition at line 192 of file sja1000.c.

References NutSemPost(), and NutSemWait().

Referenced by SJAOutput().

CANFRAME CANBufferGet ( CANBuffer buffer  ) 

Definition at line 210 of file sja1000.c.

Referenced by SJAInput().

void CANBufferPut ( CANBuffer buffer,
CANFRAME data 
)

Definition at line 229 of file sja1000.c.

uint16_t CANBufferFree ( CANBuffer buffer  ) 

Definition at line 241 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 255 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 267 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 284 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 308 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,
uint8_t ac 
)

Sets the acceptance code.

Parameters:
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.

SJASetAccMask ( NUTDEVICE dev,
uint8_t am 
)

Sets the acceptance mask.

Parameters:
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.

SJASetBaudrate ( NUTDEVICE dev,
uint32_t  baudrate 
)

Sets the baudrate.

Parameters:
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  ) 

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

Definition at line 132 of file sja1000.c.

volatile uint16_t sja_base = 0x0000

Definition at line 134 of file sja1000.c.

Referenced by SJAInit().

Definition at line 152 of file sja1000.c.

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

Definition at line 153 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 784 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 808 of file sja1000.c.


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