Skip to content

Commit 18a59a5

Browse files
authored
Merge branch 'arduino:main' into main
2 parents c6f564e + bd6a5c5 commit 18a59a5

File tree

38 files changed

+36574
-45
lines changed

38 files changed

+36574
-45
lines changed

.github/workflows/compile-examples.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ jobs:
6868
- libraries/Arduino_CAN/examples/CAN1Write
6969
- libraries/RTC/examples/RTC_NTPSync
7070
- libraries/RTC/examples/RTC_Alarm
71+
- libraries/SFU
7172
- board:
7273
fqbn: "arduino-git:renesas:portenta_c33"
7374
additional-sketch-paths: |
@@ -82,6 +83,7 @@ jobs:
8283
- libraries/Arduino_CAN/examples/CAN1Write
8384
- libraries/RTC/examples/RTC_NTPSync
8485
- libraries/RTC/examples/RTC_Alarm
86+
- libraries/SFU
8587
- board:
8688
fqbn: "arduino:renesas_uno:unor4wifi"
8789
additional-sketch-paths: |

cores/arduino/FspTimer.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,13 @@ bool FspTimer::begin(timer_mode_t mode, uint8_t tp, uint8_t channel, float freq_
185185

186186
init_ok = true;
187187
/* AGT timer is always 16 bit */
188-
if(channel < TIMER_16_BIT_OFFSET && type == GPT_TIMER) {
188+
if(channel < TIMER_16_BIT_OFFSET && tp == GPT_TIMER) {
189189
/* timer a 32 BIT */
190-
set_period_counts(1.0 / freq_hz, CH32BIT_MAX);
190+
set_period_counts(tp, 1.0 / freq_hz, CH32BIT_MAX);
191191
}
192192
else {
193193
/* timer a 16 BIT */
194-
set_period_counts(1.0 / freq_hz, CH16BIT_MAX);
194+
set_period_counts(tp, 1.0 / freq_hz, CH16BIT_MAX);
195195
}
196196

197197
if(duty_perc >= 0 && duty_perc <= 100) {
@@ -215,11 +215,11 @@ void FspTimer::set_irq_callback(GPTimerCbk_f cbk , void *ctx /*= nullptr*/ ) {
215215
}
216216

217217
/* -------------------------------------------------------------------------- */
218-
void FspTimer::set_period_counts(float period, uint32_t _max) {
218+
void FspTimer::set_period_counts(uint8_t tp, float period, uint32_t _max) {
219219
/* -------------------------------------------------------------------------- */
220220

221221
uint32_t freq_hz = 0;
222-
if(type == GPT_TIMER) {
222+
if(tp == GPT_TIMER) {
223223
freq_hz = R_FSP_SystemClockHzGet(FSP_PRIV_CLOCK_PCLKD);
224224
if(period * (float) freq_hz / 1.0 < _max) {
225225
_period_counts = (uint32_t) (period * (float) freq_hz / 1.0);
@@ -249,7 +249,7 @@ void FspTimer::set_period_counts(float period, uint32_t _max) {
249249
init_ok = false;
250250
}
251251
}
252-
else if(type == AGT_TIMER) {
252+
else if(tp == AGT_TIMER) {
253253
freq_hz = R_FSP_SystemClockHzGet(FSP_PRIV_CLOCK_PCLKB);
254254
if(period * (float) freq_hz / 1.0 < _max) {
255255
_period_counts = (uint32_t) (period * (float) freq_hz / 1.0);
@@ -418,11 +418,11 @@ bool FspTimer::set_period_ms(double ms) {
418418
close();
419419
if(timer_cfg.channel < TIMER_16_BIT_OFFSET && type == GPT_TIMER) {
420420
/* timer a 32 BIT */
421-
set_period_counts(period_sec, CH32BIT_MAX);
421+
set_period_counts(type, period_sec, CH32BIT_MAX);
422422
}
423423
else {
424424
/* timer a 16 BIT */
425-
set_period_counts(period_sec, CH16BIT_MAX);
425+
set_period_counts(type, period_sec, CH16BIT_MAX);
426426
}
427427

428428
timer_cfg.period_counts = _period_counts;

cores/arduino/FspTimer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ class FspTimer {
9595
uint32_t _duty_cycle_counts;
9696
timer_source_div_t _sd;
9797
uint8_t type;
98-
void set_period_counts(float period, uint32_t max);
98+
void set_period_counts(uint8_t tp, float period, uint32_t max);
9999
TimerIrqCfg_t get_cfg_for_irq();
100100
static bool force_pwm_reserved;
101101
static TimerAvail_t gpt_used_channel[GPT_HOWMANY];

cores/arduino/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,4 @@ extern "C" __attribute__((weak)) void __cxa_pure_virtual(void);
145145
extern "C" __attribute__((weak)) void __cxa_pure_virtual(void)
146146
{
147147
exit(1);
148-
}
148+
}

extras/e2studioProjects/portenta_h33_lib/configuration.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,8 +1060,8 @@
10601060
<property id="config.driver.canfd.rxfifo.7.int_threshold" value="enum.driver.canfd.fifo.int_threshold.1_2"/>
10611061
<property id="config.driver.canfd.rxfifo.7.payload" value="enum.driver.canfd.fifo.payload.8"/>
10621062
<property id="config.driver.canfd.rxfifo.7.depth" value="enum.driver.canfd.fifo.depth.16"/>
1063-
<property id="config.driver.canfd.afl.ch0_num" value="1"/>
1064-
<property id="config.driver.canfd.afl.ch1_num" value="1"/>
1063+
<property id="config.driver.canfd.afl.ch0_num" value="2"/>
1064+
<property id="config.driver.canfd.afl.ch1_num" value="2"/>
10651065
</config>
10661066
<config id="config.driver.gpt">
10671067
<property id="config.driver.gpt.param_checking_enable" value="config.driver.gpt.param_checking_enable.bsp"/>

libraries/Arduino_CAN/examples/CAN1Write/CAN1Write.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ void loop()
5454
*/
5555
uint8_t const msg_data[] = {0xCA,0xFE,0,0,0,0,0,0};
5656
memcpy((void *)(msg_data + 4), &msg_cnt, sizeof(msg_cnt));
57-
CanMsg msg(CAN_ID, sizeof(msg_data), msg_data);
57+
CanMsg const msg(CanStandardId(CAN_ID), sizeof(msg_data), msg_data);
5858

5959
/* Transmit the CAN message, capture and display an
6060
* error core in case of failure.

libraries/Arduino_CAN/examples/CANWrite/CANWrite.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ void loop()
4444
*/
4545
uint8_t const msg_data[] = {0xCA,0xFE,0,0,0,0,0,0};
4646
memcpy((void *)(msg_data + 4), &msg_cnt, sizeof(msg_cnt));
47-
CanMsg msg(CAN_ID, sizeof(msg_data), msg_data);
47+
CanMsg const msg(CanStandardId(CAN_ID), sizeof(msg_data), msg_data);
4848

4949
/* Transmit the CAN message, capture and display an
5050
* error core in case of failure.

libraries/Arduino_CAN/keywords.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ CAN KEYWORD1
1010
CAN1 KEYWORD1
1111
CanMsg KEYWORD1
1212
CanBitRate KEYWORD1
13+
CanStandardId KEYWORD2
14+
CanExtendedId KEYWORD2
1315

1416
#######################################
1517
# Methods and Functions (KEYWORD2)
@@ -25,6 +27,11 @@ read KEYWORD2
2527
isError KEYWORD2
2628
clearError KEYWORD2
2729

30+
getStandardId KEYWORD2
31+
getExtendedId KEYWORD2
32+
isStandardId KEYWORD2
33+
isExtendedId KEYWORD2
34+
2835
#######################################
2936
# Constants (LITERAL1)
3037
#######################################

libraries/Arduino_CAN/src/R7FA4M1_CAN.cpp

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ R7FA4M1_CAN::R7FA4M1_CAN(int const can_tx_pin, int const can_rx_pin)
5656
CAN_DEFAULT_MASK,
5757
CAN_DEFAULT_MASK,
5858
CAN_DEFAULT_MASK,
59-
0, /* Use no id filtering -> a CAN frame with any ID will be stored in receive mailbox #0. */
60-
CAN_DEFAULT_MASK,
59+
0, /* Use no id filtering -> a CAN frame with any ID will be stored in receive mailbox group #0. */
6160
CAN_DEFAULT_MASK,
61+
0, /* Use no id filtering -> a CAN frame with any ID will be stored in receive mailbox group #2. */
6262
CAN_DEFAULT_MASK
6363
}
6464
, _can_mailbox
@@ -74,15 +74,15 @@ R7FA4M1_CAN::R7FA4M1_CAN(int const can_tx_pin, int const can_rx_pin)
7474
{ .mailbox_id = 6, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
7575
{ .mailbox_id = 7, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
7676
/* Mailbox Group #2 */
77-
{ .mailbox_id = 8, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
78-
{ .mailbox_id = 9, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
79-
{ .mailbox_id = 10, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
80-
{ .mailbox_id = 11, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
77+
{ .mailbox_id = 8, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
78+
{ .mailbox_id = 9, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
79+
{ .mailbox_id = 10, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
80+
{ .mailbox_id = 11, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
8181
/* Mailbox Group #3 */
82-
{ .mailbox_id = 12, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
83-
{ .mailbox_id = 13, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
84-
{ .mailbox_id = 14, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
85-
{ .mailbox_id = 15, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
82+
{ .mailbox_id = 12, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
83+
{ .mailbox_id = 13, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
84+
{ .mailbox_id = 14, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
85+
{ .mailbox_id = 15, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
8686
/* We only use the very first receive mailbox for receiving. */
8787
/* Mailbox Group #4 */
8888
{ .mailbox_id = 0, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
@@ -95,22 +95,22 @@ R7FA4M1_CAN::R7FA4M1_CAN(int const can_tx_pin, int const can_rx_pin)
9595
{ .mailbox_id = 6, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
9696
{ .mailbox_id = 7, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
9797
/* Mailbox Group #6 */
98-
{ .mailbox_id = 8, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
99-
{ .mailbox_id = 9, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
100-
{ .mailbox_id = 10, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
101-
{ .mailbox_id = 11, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
98+
{ .mailbox_id = 8, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
99+
{ .mailbox_id = 9, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
100+
{ .mailbox_id = 10, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
101+
{ .mailbox_id = 11, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
102102
/* Mailbox Group #7 */
103-
{ .mailbox_id = 12, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
104-
{ .mailbox_id = 13, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
105-
{ .mailbox_id = 14, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
106-
{ .mailbox_id = 15, .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE }
103+
{ .mailbox_id = 12, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
104+
{ .mailbox_id = 13, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
105+
{ .mailbox_id = 14, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
106+
{ .mailbox_id = 15, .id_mode = CAN_ID_MODE_STANDARD, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE }
107107
}
108108
, _can_extended_cfg
109109
{
110110
.clock_source = CAN_CLOCK_SOURCE_PCLKB,
111111
.p_mailbox_mask = _can_mailbox_mask,
112112
.p_mailbox = _can_mailbox,
113-
.global_id_mode = CAN_GLOBAL_ID_MODE_EXTENDED,
113+
.global_id_mode = CAN_GLOBAL_ID_MODE_MIXED,
114114
.mailbox_count = CAN_MAX_NO_MAILBOXES,
115115
.message_mode = CAN_MESSAGE_MODE_OVERWRITE,
116116
.p_fifo_int_cfg = nullptr,
@@ -205,17 +205,21 @@ int R7FA4M1_CAN::disableInternalLoopback()
205205

206206
int R7FA4M1_CAN::write(CanMsg const & msg)
207207
{
208+
bool const is_standard_id = msg.isStandardId();
209+
208210
can_frame_t can_msg = {
209-
/* id = */ msg.id,
210-
/* id_mode = */ CAN_ID_MODE_EXTENDED,
211+
/* id = */ is_standard_id ? msg.getStandardId() : msg.getExtendedId(),
212+
/* id_mode = */ is_standard_id ? CAN_ID_MODE_STANDARD : CAN_ID_MODE_EXTENDED,
211213
/* type = */ CAN_FRAME_TYPE_DATA,
212214
/* data_length_code = */ min(msg.data_length, CAN_DATA_BUFFER_LENGTH),
213215
/* options = */ 0
214216
};
215217

216218
memcpy(can_msg.data, msg.data, can_msg.data_length_code);
217219

218-
if(fsp_err_t const rc = R_CAN_Write(&_can_ctrl, CAN_MAILBOX_ID_0, &can_msg); rc != FSP_SUCCESS)
220+
if(fsp_err_t const rc = R_CAN_Write(&_can_ctrl,
221+
is_standard_id ? CAN_MAILBOX_ID_0 : CAN_MAILBOX_ID_16,
222+
&can_msg); rc != FSP_SUCCESS)
219223
return -rc;
220224

221225
return 1;
@@ -241,7 +245,7 @@ void R7FA4M1_CAN::onCanCallback(can_callback_args_t * p_args)
241245
/* Extract the received CAN message. */
242246
CanMsg const msg
243247
(
244-
p_args->frame.id,
248+
(p_args->frame.id_mode == CAN_ID_MODE_STANDARD) ? CanStandardId(p_args->frame.id) : CanExtendedId(p_args->frame.id),
245249
p_args->frame.data_length_code,
246250
p_args->frame.data
247251
);

libraries/Arduino_CAN/src/R7FA6M5_CAN.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,11 @@ int R7FA6M5_CAN::disableInternalLoopback()
190190

191191
int R7FA6M5_CAN::write(CanMsg const & msg)
192192
{
193+
bool const is_standard_id = msg.isStandardId();
194+
193195
can_frame_t can_msg = {
194-
/* id = */ msg.id,
195-
/* id_mode = */ CAN_ID_MODE_EXTENDED,
196+
/* id = */ is_standard_id ? msg.getStandardId() : msg.getExtendedId(),
197+
/* id_mode = */ is_standard_id ? CAN_ID_MODE_STANDARD : CAN_ID_MODE_EXTENDED,
196198
/* type = */ CAN_FRAME_TYPE_DATA,
197199
/* data_length_code = */ min(msg.data_length, CAN_DATA_BUFFER_LENGTH),
198200
/* options = */ 0 /* This ensures that CAN Classic is used. */
@@ -221,7 +223,7 @@ size_t R7FA6M5_CAN::available()
221223
/* Extract the received CAN message. */
222224
CanMsg const msg
223225
(
224-
frame.id,
226+
(frame.id_mode == CAN_ID_MODE_STANDARD) ? CanStandardId(frame.id) : CanExtendedId(frame.id),
225227
frame.data_length_code,
226228
frame.data
227229
);
@@ -247,7 +249,7 @@ void R7FA6M5_CAN::onCanFDCallback(can_callback_args_t * p_args)
247249
/* Extract the received CAN message. */
248250
CanMsg const msg
249251
(
250-
p_args->frame.id,
252+
(p_args->frame.id_mode == CAN_ID_MODE_STANDARD) ? CanStandardId(p_args->frame.id) : CanExtendedId(p_args->frame.id),
251253
p_args->frame.data_length_code,
252254
p_args->frame.data
253255
);

0 commit comments

Comments
 (0)