3 #include "driverlib/sysctl.h"
4 #include "driverlib/gpio.h"
5 #include "driverlib/pin_map.h"
6 #include "driverlib/interrupt.h"
8 #include "inc/hw_memmap.h"
9 #include "inc/hw_can.h"
24 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
26 GPIOPinConfigure(GPIO_PB4_CAN0RX);
27 GPIOPinConfigure(GPIO_PB5_CAN0TX);
28 GPIOPinTypeCAN(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_5);
34 CANBitRateSet(
base, SysCtlClockGet(), 500000);
63 sCANMessage.ui32Flags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER;
77 tCANBitClkParms psClkParms;
78 psClkParms.ui32SyncPropPhase1Seg = 5;
79 psClkParms.ui32Phase2Seg = 2;
80 psClkParms.ui32QuantumPrescaler = 1;
81 psClkParms.ui32SJW = 2;
82 CANBitTimingSet(
base, &psClkParms);
87 CANIntEnable(
base, CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
93 CANIntDisable(
base, CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
111 void can::pack(uint8_t* dest, uint32_t data, uint8_t offset) {
114 for(i=0; i<
sizeof(data); ++i) {
116 *(dest+offset) = (uint8_t) (data & (0xFF << (i*4)));
149 uint32_t ui32Status = CANIntStatus(
base, CAN_INT_STS_CAUSE);
150 CANIntClear(
base, ui32Status);
uint32_t memory_address_t
virtual uint32_t ack(void)
void transmit(uint8_t *data, uint32_t length, uint32_t id=1)
tCANMsgObject sCANMessage
void pack(uint8_t *dest, uint32_t data, uint8_t offset=0)
uint32_t count_message(void)
uint32_t messages_received
static void enable_periph(uint32_t sys_periph)