rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Loading...
Searching...
No Matches
can_timing.h
Go to the documentation of this file.
1
26
27#ifndef RCBENCH_CAN_TIMING_H
28#define RCBENCH_CAN_TIMING_H
29
30#include <stdbool.h>
31#include <stdint.h>
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
43typedef struct {
44 uint32_t clock_hz;
45 uint16_t div_min;
46 uint16_t div_max;
47 uint16_t div_step;
48 uint8_t tseg1_min;
49 uint8_t tseg1_max;
50 uint8_t tseg2_min;
51 uint8_t tseg2_max;
52 uint8_t sjw_max;
53 uint8_t tq_min;
54 uint8_t tq_max;
56
57typedef struct {
58 uint16_t div;
59 uint8_t tseg1;
60 uint8_t tseg2;
61 uint8_t sjw;
62 uint8_t tq;
63 uint32_t bitrate_hz;
64 uint16_t sample_permille;
66
72#define CAN_SAMPLE_POINT_DEFAULT 875
73
82#define CAN_SAMPLE_POINT_LINK 750
83
91bool can_timing_solve(const can_timing_limits_t *lim, uint32_t bitrate,
92 uint16_t target_permille, can_timing_t *out);
93
96
97/* ------------------------------------------------- the two controllers */
98
100void can_timing_limits_mcp2515(can_timing_limits_t *out, uint32_t crystal_hz);
101
108
109/* --------------------------------------------------- MCP2515 registers */
110
111#define MCP2515_CNF1 0x2A
112#define MCP2515_CNF2 0x29
113#define MCP2515_CNF3 0x28
114
125bool mcp2515_encode_timing(const can_timing_t *t, uint8_t cnf[3]);
126
127#ifdef __cplusplus
128}
129#endif
130
131#endif /* RCBENCH_CAN_TIMING_H */
uint32_t can_timing_max_bitrate(const can_timing_limits_t *lim)
Definition can_timing.c:149
void can_timing_limits_mcp2515(can_timing_limits_t *out, uint32_t crystal_hz)
Definition can_timing.c:14
bool can_timing_solve(const can_timing_limits_t *lim, uint32_t bitrate, uint16_t target_permille, can_timing_t *out)
Definition can_timing.c:78
bool mcp2515_encode_timing(const can_timing_t *t, uint8_t cnf[3])
Definition can_timing.c:181
void can_timing_limits_twai(can_timing_limits_t *out)
The panel's TWAI on the ESP32-P4, off the 40MHz crystal: even prescalers from 2 to 32768.
Definition can_timing.c:41
Definition can_timing.h:43
uint8_t tseg1_min
Definition can_timing.h:48
uint32_t clock_hz
Definition can_timing.h:44
uint16_t div_step
Definition can_timing.h:47
uint8_t tseg2_min
Definition can_timing.h:50
uint16_t div_min
Definition can_timing.h:45
uint8_t tq_min
Definition can_timing.h:53
Definition can_timing.h:57
uint16_t div
Definition can_timing.h:58
uint8_t tq
Definition can_timing.h:62
uint16_t sample_permille
Definition can_timing.h:64
uint32_t bitrate_hz
Definition can_timing.h:63