Skip to content

Commit 3284e36

Browse files
committed
Fix for arduino#295 to allow flexible bit rate either one of the 4 predefined rates or a custom rate
1 parent b5a3b9d commit 3284e36

File tree

4 files changed

+11
-4
lines changed

4 files changed

+11
-4
lines changed

libraries/Arduino_CAN/src/CanUtil.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace util
2828
**************************************************************************************/
2929

3030
std::tuple<bool, uint32_t, uint32_t, uint32_t>
31-
calc_can_bit_timing(CanBitRate const can_bitrate,
31+
calc_can_bit_timing(uint32_t const can_bitrate,
3232
uint32_t const can_clock_Hz,
3333
uint32_t const tq_min,
3434
uint32_t const tq_max,

libraries/Arduino_CAN/src/CanUtil.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ std::tuple<bool, /* valid result found */
3636
uint32_t, /* baud_rate_prescaler */
3737
uint32_t, /* time_segment_1 */
3838
uint32_t> /* time_segment_2 */
39-
calc_can_bit_timing(CanBitRate const can_bitrate, uint32_t const can_clock_Hz, uint32_t const tq_min, uint32_t const tq_max,
39+
calc_can_bit_timing(uint32_t const can_bitrate, uint32_t const can_clock_Hz, uint32_t const tq_min, uint32_t const tq_max,
4040
uint32_t const tseg1_min, uint32_t const tseg1_max, uint32_t const tseg2_min, uint32_t const tseg2_max);
4141

4242
/**************************************************************************************

libraries/Arduino_CAN/src/R7FA4M1_CAN.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ R7FA4M1_CAN::R7FA4M1_CAN(int const can_tx_pin, int const can_rx_pin)
137137
**************************************************************************************/
138138

139139
bool R7FA4M1_CAN::begin(CanBitRate const can_bitrate)
140+
{
141+
return begin(static_cast<uint32_t>(can_bitrate));
142+
}
143+
144+
bool R7FA4M1_CAN::begin(uint32_t const can_bitrate)
140145
{
141146
bool init_ok = true;
142147

@@ -156,7 +161,7 @@ bool R7FA4M1_CAN::begin(CanBitRate const can_bitrate)
156161

157162
/* Calculate the CAN bitrate based on the value of this functions parameter.
158163
*/
159-
static uint32_t const F_CAN_CLK_Hz = 24*1000*1000UL;
164+
static uint32_t const F_CAN_CLK_Hz = 24*1000*1000UL;
160165
static uint32_t const TQ_MIN = 8;
161166
static uint32_t const TQ_MAX = 25;
162167
static uint32_t const TSEG_1_MIN = 4;
@@ -167,7 +172,7 @@ bool R7FA4M1_CAN::begin(CanBitRate const can_bitrate)
167172
auto [is_valid_baudrate, baud_rate_prescaler, time_segment_1, time_segment_2] =
168173
util::calc_can_bit_timing(can_bitrate, F_CAN_CLK_Hz, TQ_MIN, TQ_MAX, TSEG_1_MIN, TSEG_1_MAX, TSEG_2_MIN, TSEG_2_MAX);
169174
init_ok &= is_valid_baudrate;
170-
175+
171176
if (is_valid_baudrate) {
172177
_can_bit_timing_cfg.baud_rate_prescaler = baud_rate_prescaler;
173178
_can_bit_timing_cfg.time_segment_1 = time_segment_1;
@@ -182,6 +187,7 @@ bool R7FA4M1_CAN::begin(CanBitRate const can_bitrate)
182187
return init_ok;
183188
}
184189

190+
////////////////////////
185191
void R7FA4M1_CAN::end()
186192
{
187193
R_CAN_Close(&_can_ctrl);

libraries/Arduino_CAN/src/R7FA4M1_CAN.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class R7FA4M1_CAN final : public HardwareCAN
5252

5353

5454
bool begin(CanBitRate const can_bitrate) override;
55+
bool begin(uint32_t const can_bitrate);
5556
void end() override;
5657

5758
void setFilterMask_Standard(uint32_t const mask);

0 commit comments

Comments
 (0)