@@ -24,119 +24,115 @@ SCENARIO("calc_can_bit_timing", "[calc_can_bit_timing]")
24
24
{
25
25
GIVEN (" Santiago" )
26
26
{
27
- static uint32_t const F_CAN_CLK_Hz = 20 *1000 *1000UL ;
28
- static uint32_t const CAN_TIME_QUANTA_per_Bit = 32 ; /* TQ */
27
+ static uint32_t const F_CAN_CLK_Hz = 20 *1000 *1000UL ;
28
+ static uint32_t const TQ_MIN = 8 ;
29
+ static uint32_t const TQ_MAX = 25 ;
30
+ static uint32_t const SYNC_JUMP_WIDTH = 4 ;
29
31
30
- WHEN (" CanBitRate::BR_125k" )
31
- {
32
- auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2, synchronization_jump_width] =
33
- util::calc_can_bit_timing (CanBitRate::BR_125k, F_CAN_CLK_Hz, CAN_TIME_QUANTA_per_Bit);
34
- THEN (" " )
32
+ WHEN (" CanBitRate::BR_125k" )
35
33
{
36
- REQUIRE (is_valid_baudrate == true );
37
- REQUIRE (baud_rate_prescaler == 5 );
38
- REQUIRE (time_segment_1 == 23 );
39
- REQUIRE (time_segment_2 == 8 );
40
- REQUIRE (synchronization_jump_width == 1 );
41
- };
42
- }
43
- WHEN (" CanBitRate::BR_250k" )
44
- {
45
- auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2, synchronization_jump_width] =
46
- util::calc_can_bit_timing (CanBitRate::BR_250k, F_CAN_CLK_Hz, CAN_TIME_QUANTA_per_Bit);
47
- THEN (" " )
34
+ auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2] =
35
+ util::calc_can_bit_timing (CanBitRate::BR_125k, F_CAN_CLK_Hz, TQ_MIN, TQ_MAX, SYNC_JUMP_WIDTH);
36
+ THEN (" " )
37
+ {
38
+ REQUIRE (is_valid_baudrate == true );
39
+ REQUIRE (baud_rate_prescaler == 8 );
40
+ REQUIRE (time_segment_1 == 11 );
41
+ REQUIRE (time_segment_2 == 4 );
42
+ }
43
+ }
44
+ WHEN (" CanBitRate::BR_250k" )
48
45
{
49
- REQUIRE (is_valid_baudrate == true );
50
- REQUIRE (baud_rate_prescaler == 4 );
51
- REQUIRE (time_segment_1 == 14 );
52
- REQUIRE (time_segment_2 == 5 );
53
- REQUIRE (synchronization_jump_width == 1 );
54
- };
55
- }
56
- WHEN (" CanBitRate::BR_500k" )
57
- {
58
- auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2, synchronization_jump_width] =
59
- util::calc_can_bit_timing (CanBitRate::BR_500k, F_CAN_CLK_Hz, CAN_TIME_QUANTA_per_Bit);
60
- THEN (" " )
46
+ auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2] =
47
+ util::calc_can_bit_timing (CanBitRate::BR_250k, F_CAN_CLK_Hz, TQ_MIN, TQ_MAX, SYNC_JUMP_WIDTH);
48
+ THEN (" " )
49
+ {
50
+ REQUIRE (is_valid_baudrate == true );
51
+ REQUIRE (baud_rate_prescaler == 4 );
52
+ REQUIRE (time_segment_1 == 11 );
53
+ REQUIRE (time_segment_2 == 4 );
54
+ }
55
+ }
56
+ WHEN (" CanBitRate::BR_500k" )
61
57
{
62
- REQUIRE (is_valid_baudrate == true );
63
- REQUIRE (baud_rate_prescaler == 2 );
64
- REQUIRE (time_segment_1 == 14 );
65
- REQUIRE (time_segment_2 == 5 );
66
- REQUIRE (synchronization_jump_width == 1 );
67
- };
68
- }
69
- WHEN (" CanBitRate::BR_1000k" )
70
- {
71
- auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2, synchronization_jump_width] =
72
- util::calc_can_bit_timing (CanBitRate::BR_1000k, F_CAN_CLK_Hz, CAN_TIME_QUANTA_per_Bit);
73
- THEN (" " )
58
+ auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2] =
59
+ util::calc_can_bit_timing (CanBitRate::BR_500k, F_CAN_CLK_Hz, TQ_MIN, TQ_MAX, SYNC_JUMP_WIDTH);
60
+ THEN (" " )
61
+ {
62
+ REQUIRE (is_valid_baudrate == true );
63
+ REQUIRE (baud_rate_prescaler == 2 );
64
+ REQUIRE (time_segment_1 == 11 );
65
+ REQUIRE (time_segment_2 == 4 );
66
+ }
67
+ }
68
+ WHEN (" CanBitRate::BR_1000k" )
74
69
{
75
- REQUIRE (is_valid_baudrate == true );
76
- REQUIRE (baud_rate_prescaler == 1 );
77
- REQUIRE (time_segment_1 == 14 );
78
- REQUIRE (time_segment_2 == 5 );
79
- REQUIRE (synchronization_jump_width == 1 );
80
- };
70
+ auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2] =
71
+ util::calc_can_bit_timing (CanBitRate::BR_1000k, F_CAN_CLK_Hz, TQ_MIN, TQ_MAX, SYNC_JUMP_WIDTH);
72
+ THEN (" " )
73
+ {
74
+ REQUIRE (is_valid_baudrate == true );
75
+ REQUIRE (baud_rate_prescaler == 1 );
76
+ REQUIRE (time_segment_1 == 11 );
77
+ REQUIRE (time_segment_2 == 4 );
78
+ }
81
79
}
82
80
}
83
81
84
82
GIVEN (" Portenta H33" )
85
83
{
86
84
static uint32_t const F_CAN_CLK_Hz = 24 *1000 *1000UL ;
87
- static uint32_t const CAN_TIME_QUANTA_per_Bit = 32 ; /* TQ */
85
+ static uint32_t const TQ_MIN = 5 ;
86
+ static uint32_t const TQ_MAX = 49 ;
87
+ static uint32_t const SYNC_JUMP_WIDTH = 1 ;
88
88
89
89
WHEN (" CanBitRate::BR_125k" )
90
90
{
91
- auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2, synchronization_jump_width ] =
92
- util::calc_can_bit_timing (CanBitRate::BR_125k, F_CAN_CLK_Hz, CAN_TIME_QUANTA_per_Bit );
91
+ auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2] =
92
+ util::calc_can_bit_timing (CanBitRate::BR_125k, F_CAN_CLK_Hz, TQ_MIN, TQ_MAX, SYNC_JUMP_WIDTH );
93
93
THEN (" " )
94
94
{
95
- REQUIRE (is_valid_baudrate == true );
96
- REQUIRE (baud_rate_prescaler == 6 );
97
- REQUIRE (time_segment_1 == 23 );
98
- REQUIRE (time_segment_2 == 8 );
99
- REQUIRE (synchronization_jump_width == 1 );
100
- };
95
+ REQUIRE (is_valid_baudrate == true );
96
+ REQUIRE (baud_rate_prescaler == 4 );
97
+ REQUIRE (time_segment_1 == 35 );
98
+ REQUIRE (time_segment_2 == 11 );
99
+ }
101
100
}
102
101
WHEN (" CanBitRate::BR_250k" )
103
102
{
104
- auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2, synchronization_jump_width ] =
105
- util::calc_can_bit_timing (CanBitRate::BR_250k, F_CAN_CLK_Hz, CAN_TIME_QUANTA_per_Bit );
103
+ auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2] =
104
+ util::calc_can_bit_timing (CanBitRate::BR_250k, F_CAN_CLK_Hz, TQ_MIN, TQ_MAX, SYNC_JUMP_WIDTH );
106
105
THEN (" " )
107
106
{
108
107
REQUIRE (is_valid_baudrate == true );
109
- REQUIRE (baud_rate_prescaler == 3 );
110
- REQUIRE (time_segment_1 == 23 );
111
- REQUIRE (time_segment_2 == 8 );
112
- REQUIRE (synchronization_jump_width == 1 );
113
- };
108
+ REQUIRE (baud_rate_prescaler == 2 );
109
+ REQUIRE (time_segment_1 == 35 );
110
+ REQUIRE (time_segment_2 == 11 );
111
+ }
114
112
}
115
113
WHEN (" CanBitRate::BR_500k" )
116
114
{
117
- auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2, synchronization_jump_width ] =
118
- util::calc_can_bit_timing (CanBitRate::BR_500k, F_CAN_CLK_Hz, CAN_TIME_QUANTA_per_Bit );
115
+ auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2] =
116
+ util::calc_can_bit_timing (CanBitRate::BR_500k, F_CAN_CLK_Hz, TQ_MIN, TQ_MAX, SYNC_JUMP_WIDTH );
119
117
THEN (" " )
120
118
{
121
119
REQUIRE (is_valid_baudrate == true );
122
- REQUIRE (baud_rate_prescaler == 2 );
123
- REQUIRE (time_segment_1 == 17 );
124
- REQUIRE (time_segment_2 == 6 );
125
- REQUIRE (synchronization_jump_width == 1 );
126
- };
120
+ REQUIRE (baud_rate_prescaler == 1 );
121
+ REQUIRE (time_segment_1 == 35 );
122
+ REQUIRE (time_segment_2 == 11 );
123
+ }
127
124
}
128
125
WHEN (" CanBitRate::BR_1000k" )
129
126
{
130
- auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2, synchronization_jump_width ] =
131
- util::calc_can_bit_timing (CanBitRate::BR_1000k, F_CAN_CLK_Hz, CAN_TIME_QUANTA_per_Bit );
127
+ auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2] =
128
+ util::calc_can_bit_timing (CanBitRate::BR_1000k, F_CAN_CLK_Hz, TQ_MIN, TQ_MAX, SYNC_JUMP_WIDTH );
132
129
THEN (" " )
133
130
{
134
131
REQUIRE (is_valid_baudrate == true );
135
132
REQUIRE (baud_rate_prescaler == 1 );
136
133
REQUIRE (time_segment_1 == 17 );
137
- REQUIRE (time_segment_2 == 6 );
138
- REQUIRE (synchronization_jump_width == 1 );
139
- };
134
+ REQUIRE (time_segment_2 == 5 );
140
135
}
136
+ }
141
137
}
142
138
}
0 commit comments