Nut/OS  4.10.3
API Reference
SJA1000

CAN Bus Controller. More...

Collaboration diagram for SJA1000:

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.

Detailed Description

CAN Bus Controller.


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.

Referenced by SJAInit().

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

Referenced by SJAInit().

#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, _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, _CANBuffer::empty, _CANBuffer::full, NutHeapAlloc, NutSemInit(), and _CANBuffer::size.

Referenced by SJAInit().

Here is the call graph for this function:

CANFRAME CANBufferGetMutex ( CANBuffer buffer)

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

Here is the call graph for this function:

void CANBufferPutMutex ( CANBuffer buffer,
CANFRAME data 
)

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

Here is the call graph for this function:

CANFRAME CANBufferGet ( CANBuffer buffer)

Definition at line 210 of file sja1000.c.

References _CANBuffer::dataindex, _CANBuffer::datalength, _CANBuffer::dataptr, and _CANBuffer::size.

Referenced by SJAInput().

void CANBufferPut ( CANBuffer buffer,
CANFRAME data 
)
uint16_t CANBufferFree ( CANBuffer buffer)

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

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

Parameters:
devPointer to the device structure

Definition at line 267 of file sja1000.c.

References CANBufferFree().

Here is the call graph for this function:

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:
devPointer to the device structure
framePointer to the receive frame

Definition at line 284 of file sja1000.c.

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

Here is the call graph for this function:

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:
devPointer to the device structure
framePointer to the receive frame
Returns:
1 if timeout, 0 otherwise

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.

Here is the call graph for this function:

SJASetAccCode ( NUTDEVICE dev,
uint8_t ac 
)

Sets the acceptance code.

Parameters:
devPointer to the device structure
ac4 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.

Here is the call graph for this function:

SJASetAccMask ( NUTDEVICE dev,
uint8_t am 
)

Sets the acceptance mask.

Parameters:
devPointer to the device structure
am4 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.

Here is the call graph for this function:

SJASetBaudrate ( NUTDEVICE dev,
uint32_t  baudrate 
)

Sets the baudrate.

Parameters:
devPointer to the device structure
baudrateBaudrate (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 _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().

Here is the call graph for this function:


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.

Definition at line 153 of file sja1000.c.

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.