RTEMS 6.1-rc6
Loading...
Searching...
No Matches
can.h
Go to the documentation of this file.
1
9/*
10 * Copyright (c) 2014 Taller Technologies.
11 *
12 * @author Diaz Marcos (marcos.diaz@tallertechnologies.com)
13 * @author Daniel Chicco (daniel.chicco@tallertechnologies.com)
14 *
15 * The license and distribution terms for this file may be
16 * found in the file LICENSE in this distribution or at
17 * http://www.rtems.org/license/LICENSE.
18 */
19
20#ifndef LPC176X_CAN_H
21#define LPC176X_CAN_H
22
23#include <bsp.h>
24#include <bsp/io.h>
25#include <bsp/lpc176x.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif /* __cplusplus */
30
34typedef enum {
35 CAN_0,
36 CAN_1,
37 CAN_DEVICES_NUMBER
39
43typedef struct {
44 uint32_t info;
45 uint32_t id;
46 uint32_t data_a;
47 uint32_t data_b;
49
53typedef struct {
54 unsigned int reserved1 : 16;
55 unsigned int dlc : 4; /* Bits 16..19: DLC - Data Length Counter*/
56 unsigned int reserved0 : 10;
57 unsigned int rtr : 1; /* Bit 30: Set if this is a RTR message*/
58 unsigned int type : 1; /* Bit 31: Set if this is a 29-bit ID message*/
59 unsigned int id; /* CAN Message ID (11-bit or 29-bit)*/
60 unsigned char data[ 8 ]; /* CAN Message Data Bytes 0-7*/
62
66typedef union {
67 low_level_can_message low_level;
68 registers_can_message registers;
70
74typedef enum {
75 IRQ_RX = 0,
76 IRQ_TX,
77 IRQ_ERROR,
78 IRQ_OVERRUN,
79 IRQ_WAKEUP,
80 IRQ_PASSIVE,
81 IRQ_ARB,
82 IRQ_BUS,
83 IRQ_READY,
84 CAN_IRQ_NUMBER
86
92typedef void (*lpc176x_can_isr) ( lpc176x_can_number number );
93
97typedef unsigned int can_freq;
98
110
118
127 const lpc176x_can_number minor,
129);
130
139 const lpc176x_can_number minor,
140 const can_message *const message
141);
142
153 const lpc176x_can_number number,
154 const can_irq_type type,
155 const lpc176x_can_isr isr
156);
157
169 can_message *const msg,
170 const int _id,
171 const char *const _data,
172 const char _len
173);
174
175#ifdef __cplusplus
176}
177#endif /* __cplusplus */
178
179#endif /* ifndef LPC176X_CAN_H */
rtems_status_code can_read(const lpc176x_can_number minor, can_message *message)
Reads the CAN device.
Definition: can.c:415
rtems_status_code can_write(const lpc176x_can_number minor, const can_message *const message)
Writes the passed CAN message into the selected CAN device.
Definition: can.c:458
rtems_status_code can_close(lpc176x_can_number minor)
Closes the passed CAN device and shut it down.
Definition: can.c:81
can_irq_type
The possible interrupt sources for CAN.
Definition: can.h:74
rtems_status_code can_open(lpc176x_can_number minor, can_freq freq)
Opens CAN device.
Definition: can.c:332
void(* lpc176x_can_isr)(lpc176x_can_number number)
An isr for a CAN interrupt.
Definition: can.h:92
rtems_status_code can_register_isr(const lpc176x_can_number number, const can_irq_type type, const lpc176x_can_isr isr)
Registers an isr in the driver vector, and enables the interrupt in the device.
Definition: can.c:506
rtems_status_code create_can_message(can_message *const msg, const int _id, const char *const _data, const char _len)
Creates a CAN message.
Definition: can.c:523
lpc176x_can_number
The CAN devices of the board.
Definition: can.h:34
unsigned int can_freq
A CAN frequency value.
Definition: can.h:97
rtems_status_code
This enumeration provides status codes for directives of the Classic API.
Definition: status.h:85
Specific register definitions according to lpc176x family boards.
A CAN message represented with each logical parts.
Definition: can.h:53
Definition: media-server.c:46
Definition: b1553brm.c:94
A CAN message represented for the registers of the device.
Definition: can.h:43
A CAN message represented of both forms.
Definition: can.h:66