Universelles CAN Interface
allgemeines CAN Interface für AT90CAN32/64/128, MCP2515 und SJA1000
Mehr ...
Datenstrukturen |
struct | can_t |
| Datenstruktur zum Aufnehmen von CAN Nachrichten. Mehr ...
|
struct | can_filter_t |
| Datenstruktur zur Aufnahme von CAN-Filtern. Mehr ...
|
struct | can_error_register_t |
| Inhalt der Fehler-Register. Mehr ...
|
Makrodefinitionen |
#define | CAN_ALL_FILTER 0xff |
| Symbol um auf alle Filter zuzugreifen.
|
Aufzählungen |
enum | can_bitrate_t {
BITRATE_10_KBPS = 0,
BITRATE_20_KBPS = 1,
BITRATE_50_KBPS = 2,
BITRATE_100_KBPS = 3,
BITRATE_125_KBPS = 4,
BITRATE_250_KBPS = 5,
BITRATE_500_KBPS = 6,
BITRATE_1_MBPS = 7
} |
| Bitraten fuer den CAN-Bus.
|
enum | can_mode_t { LISTEN_ONLY_MODE,
LOOPBACK_MODE,
NORMAL_MODE,
SLEEP_MODE
} |
| Modus des CAN Interfaces.
Mehr ...
|
Funktionen |
bool | can_init (can_bitrate_t bitrate) |
| Initialisierung des CAN Interfaces.
|
void | can_sleep (void) |
bool | can_set_filter (uint8_t number, const can_filter_t *filter) |
| Setzen eines Filters.
|
bool | can_disable_filter (uint8_t number) |
| Filter deaktivieren.
|
void | can_static_filter (const prog_uint8_t *filter_array) |
| Setzt die Werte für alle Filter.
|
uint8_t | can_get_filter (uint8_t number, can_filter_t *filter) |
| Filterdaten auslesen.
|
bool | can_check_message (void) |
| Ueberpruefen ob neue CAN Nachrichten vorhanden sind.
|
bool | can_check_free_buffer (void) |
| Ueberprueft ob ein Puffer zum Versenden einer Nachricht frei ist.
|
uint8_t | can_send_message (const can_t *msg) |
| Verschickt eine Nachricht über den CAN Bus.
|
uint8_t | can_get_message (can_t *msg) |
| Liest eine Nachricht aus den Empfangspuffern des CAN Controllers.
|
can_error_register_t | can_read_error_register (void) |
| Liest den Inhalt der Fehler-Register.
|
bool | can_check_bus_off (void) |
| Überprüft ob der CAN Controller im Bus-Off-Status.
|
void | can_reset_bus_off (void) |
| Setzt einen Bus-Off Status zurück und schaltet den CAN Controller wieder aktiv.
|
void | can_set_mode (can_mode_t mode) |
| Setzt den Operations-Modus.
|
Ausführliche Beschreibung
allgemeines CAN Interface für AT90CAN32/64/128, MCP2515 und SJA1000
- Autor:
- Fabian Greif <fabian.greif@rwth-aachen.de>
-
Roboterclub Aachen e.V. (http://www.roboterclub.rwth-aachen.de)
can_sleep() and can_wakeup() functions by Frédéric Lamorce.
- Version:
- Id
- can.h 8086 2009-07-14 14:08:25Z fabian
Dokumentation der Aufzählungstypen
Modus des CAN Interfaces.
- Aufzählungswerte:
LISTEN_ONLY_MODE |
der CAN Contoller empfängt nur und verhält sich völlig passiv
|
LOOPBACK_MODE |
alle Nachrichten direkt auf die Empfangsregister umleiten ohne sie zu senden
|
NORMAL_MODE |
normaler Modus, CAN Controller ist aktiv
|
Definiert in Zeile 259 der Datei can.h.
Dokumentation der Funktionen
bool can_check_bus_off |
( |
void |
|
) |
|
Überprüft ob der CAN Controller im Bus-Off-Status.
- Rückgabe:
- true wenn der Bus-Off-Status aktiv ist, false ansonsten
- Warnung:
- aktuell nur auf dem SJA1000
bool can_check_free_buffer |
( |
void |
|
) |
|
Ueberprueft ob ein Puffer zum Versenden einer Nachricht frei ist.
- Rückgabe:
- true falls ein Sende-Puffer frei ist, false ansonsten.
bool can_check_message |
( |
void |
|
) |
|
Ueberpruefen ob neue CAN Nachrichten vorhanden sind.
- Rückgabe:
- true falls neue Nachrichten verfuegbar sind, false ansonsten.
bool can_disable_filter |
( |
uint8_t |
number |
) |
|
Filter deaktivieren.
- Parameter:
-
| number | Nummer des Filters der deaktiviert werden soll, 0xff deaktiviert alle Filter. |
- Rückgabe:
- false falls ein Fehler auftrat, true ansonsten
- Warnung:
- Wird nur vom AT90CAN32/64/128 unterstuetzt.
uint8_t can_get_filter |
( |
uint8_t |
number, |
|
|
can_filter_t * |
filter | |
|
) |
| | |
Filterdaten auslesen.
- Parameter:
-
| number | Nummer des Filters dessen Daten man haben moechte |
| *filter | Pointer in den die Filterstruktur geschrieben wird |
- Rückgabe:
- 0 falls ein Fehler auftrat, \ 1 falls der Filter korrekt gelesen werden konnte, \ 2 falls der Filter im Moment nicht verwendet wird (nur AT90CAN), \ 0xff falls gerade keine Aussage moeglich ist (nur AT90CAN).
- Warnung:
- Da der SJA1000 nicht feststellen kann ob der ausgelesene Filter nun zwei 11-Bit Filter oder ein 29-Bit Filter ist werden nicht die Filter sondern die Registerinhalte direkt zurück gegeben. Der Programmierer muss dann selbst entscheiden was er mit den Werten macht.
uint8_t can_get_message |
( |
can_t * |
msg |
) |
|
Liest eine Nachricht aus den Empfangspuffern des CAN Controllers.
- Parameter:
-
| msg | Pointer auf die Nachricht die gelesen werden soll. |
- Rückgabe:
- FALSE falls die Nachricht nicht ausgelesen konnte, ansonsten Filtercode welcher die Nachricht akzeptiert hat.
Initialisierung des CAN Interfaces.
- Parameter:
-
| bitrate | Gewuenschte Geschwindigkeit des CAN Interfaces |
- Rückgabe:
- false falls das CAN Interface nicht initialisiert werden konnte, true ansonsten.
void can_reset_bus_off |
( |
void |
|
) |
|
Setzt einen Bus-Off Status zurück und schaltet den CAN Controller wieder aktiv.
- Warnung:
- aktuell nur auf dem SJA1000
uint8_t can_send_message |
( |
const can_t * |
msg |
) |
|
Verschickt eine Nachricht über den CAN Bus.
- Parameter:
-
| msg | Nachricht die verschickt werden soll |
- Rückgabe:
- FALSE falls die Nachricht nicht verschickt werden konnte,
ansonsten der Code des Puffes in den die Nachricht gespeichert wurde
bool can_set_filter |
( |
uint8_t |
number, |
|
|
const can_filter_t * |
filter | |
|
) |
| | |
Setzen eines Filters.
Für einen MCP2515 sollte die Funktion can_static_filter() bevorzugt werden.
- Parameter:
-
| number | Position des Filters |
| filter | zu setzender Filter |
- Rückgabe:
- false falls ein Fehler auftrat, true ansonsten
Setzt den Operations-Modus.
- Parameter:
-
| mode | Gewünschter Modus des CAN Controllers |
void can_static_filter |
( |
const prog_uint8_t * |
filter_array |
) |
|
Setzt die Werte für alle Filter.
prog_char can_filter[] = {
MCP2515_FILTER_EXTENDED(0),
MCP2515_FILTER_EXTENDED(0),
MCP2515_FILTER_EXTENDED(0),
MCP2515_FILTER_EXTENDED(0),
MCP2515_FILTER_EXTENDED(0),
MCP2515_FILTER_EXTENDED(0),
MCP2515_FILTER_EXTENDED(0),
MCP2515_FILTER_EXTENDED(0),
};
...
can_static_filter(can_filter);
- Parameter:
-
| *filter_array | Array im Flash des AVRs mit den Initialisierungs- werten für die Filter des MCP2515 |
- Siehe auch:
- MCP2515_FILTER_EXTENDED()
-
MCP2515_FILTER()
- Warnung:
- Wird nur vom MCP2515 unterstuetzt.