rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Toggle main menu visibility
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
34
extern
"C"
{
35
#endif
36
43
typedef
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;
55
}
can_timing_limits_t
;
56
57
typedef
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
;
65
}
can_timing_t
;
66
72
#define CAN_SAMPLE_POINT_DEFAULT 875
73
82
#define CAN_SAMPLE_POINT_LINK 750
83
91
bool
can_timing_solve
(
const
can_timing_limits_t
*lim, uint32_t bitrate,
92
uint16_t target_permille,
can_timing_t
*out);
93
95
uint32_t
can_timing_max_bitrate
(
const
can_timing_limits_t
*lim);
96
97
/* ------------------------------------------------- the two controllers */
98
100
void
can_timing_limits_mcp2515
(
can_timing_limits_t
*out, uint32_t crystal_hz);
101
107
void
can_timing_limits_twai
(
can_timing_limits_t
*out);
108
109
/* --------------------------------------------------- MCP2515 registers */
110
111
#define MCP2515_CNF1 0x2A
112
#define MCP2515_CNF2 0x29
113
#define MCP2515_CNF3 0x28
114
125
bool
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 */
can_timing_max_bitrate
uint32_t can_timing_max_bitrate(const can_timing_limits_t *lim)
Definition
can_timing.c:149
can_timing_limits_mcp2515
void can_timing_limits_mcp2515(can_timing_limits_t *out, uint32_t crystal_hz)
Definition
can_timing.c:14
can_timing_solve
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
mcp2515_encode_timing
bool mcp2515_encode_timing(const can_timing_t *t, uint8_t cnf[3])
Definition
can_timing.c:181
can_timing_limits_twai
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
can_timing_limits_t
Definition
can_timing.h:43
can_timing_limits_t::tseg1_min
uint8_t tseg1_min
Definition
can_timing.h:48
can_timing_limits_t::clock_hz
uint32_t clock_hz
Definition
can_timing.h:44
can_timing_limits_t::div_step
uint16_t div_step
Definition
can_timing.h:47
can_timing_limits_t::tseg2_min
uint8_t tseg2_min
Definition
can_timing.h:50
can_timing_limits_t::div_min
uint16_t div_min
Definition
can_timing.h:45
can_timing_limits_t::tq_min
uint8_t tq_min
Definition
can_timing.h:53
can_timing_t
Definition
can_timing.h:57
can_timing_t::div
uint16_t div
Definition
can_timing.h:58
can_timing_t::tq
uint8_t tq
Definition
can_timing.h:62
can_timing_t::sample_permille
uint16_t sample_permille
Definition
can_timing.h:64
can_timing_t::bitrate_hz
uint32_t bitrate_hz
Definition
can_timing.h:63
shared
can
include
can_timing.h
Generated by
1.18.0