Skip to content

Commit 3483d73

Browse files
committed
canio: mimxrt10xx: Add some debug code
1 parent 1a9b7e5 commit 3483d73

1 file changed

Lines changed: 29 additions & 4 deletions

File tree

  • ports/mimxrt10xx/common-hal/canio

ports/mimxrt10xx/common-hal/canio/CAN.c

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@
3737

3838
#include "sdk/drivers/flexcan/fsl_flexcan.h"
3939

40+
41+
// Be verbose
42+
#define MIMXRT_CANIO_CAN_DEBUG(...) (void)0
43+
//#define MIMXRT_CANIO_CAN_DEBUG(...) mp_printf(&mp_plat_print, __VA_ARGS__)
44+
45+
#define MIMXRT_CANIO_CAN_CALLBACK_DEBUG(...) (void)0
46+
//#define MIMXRT_CANIO_CAN_CALLBACK_DEBUG(...) mp_printf(&mp_plat_print, __VA_ARGS__)
47+
48+
4049
static CAN_Type *const flexcan_bases[] = CAN_BASE_PTRS; // e.g.: { (CAN_Type *)0u, CAN1, CAN2, CAN3 }
4150
static canio_can_obj_t *can_objs[MP_ARRAY_SIZE(mcu_can_banks)];
4251

@@ -83,6 +92,7 @@ static uint8_t mimxrt10xx_flexcan_get_free_tx_mbid(canio_can_obj_t *self) {
8392
if (!(self->data->tx_state & tx_array_id_bit))
8493
{
8594
// Found a free tx array id. Mark it as used.
95+
MIMXRT_CANIO_CAN_DEBUG("canio: Found free Tx MB: %d\n", tx_array_id);
8696
self->data->tx_state |= tx_array_id_bit;
8797
found_free_tx_mb = true;
8898
break;
@@ -148,60 +158,75 @@ static void mimxrt10xx_flexcan_callback(CAN_Type *base, flexcan_handle_t *handle
148158

149159
// Process rx message buffer is idle event.
150160
case kStatus_FLEXCAN_RxIdle:
161+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = RxIdle\n");
151162
// We don't control any rx message buffers 'manually'. The rx fifo has control.
152163
break;
153164

154165
// Process tx message buffer is idle event.
155166
case kStatus_FLEXCAN_TxIdle:
167+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = TxIdle\n");
156168
mimxrt10xx_flexcan_set_tx_mb_free_by_mbid(self, result);
157169
break;
158170

159171
// Process tx message buffer is busy event.
160172
case kStatus_FLEXCAN_TxBusy:
173+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = TxBusy\n");
161174
mimxrt10xx_flexcan_set_tx_mb_busy_by_mbid(self, result);
162175
break;
163176

164177
// Process remote message is send out and message buffer changed to receive one event.
165178
case kStatus_FLEXCAN_TxSwitchToRx:
179+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = TxSwitchToRx\n");
166180
mimxrt10xx_flexcan_set_tx_mb_free_by_mbid(self, result);
167181
break;
168182

169183
// Process rx message buffer is busy event.
170184
case kStatus_FLEXCAN_RxBusy:
185+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = RxBusy\n");
171186
break;
172187

173188
// Process rx message buffer is overflowed event.
174189
case kStatus_FLEXCAN_RxOverflow:
190+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = RxOverflow\n");
175191
break;
176192

177193
// Process rx message fifo is busy event.
178194
case kStatus_FLEXCAN_RxFifoBusy:
195+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = RxFifoBusy\n");
179196
break;
180197

181198
// Process rx message fifo is idle event.
182199
case kStatus_FLEXCAN_RxFifoIdle:
200+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = RxFifoIdle\n");
183201
break;
184202

185203
// Process rx message fifo is overflowed event.
186204
case kStatus_FLEXCAN_RxFifoOverflow:
205+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = RxFifoOverflow\n");
187206
break;
188207

189208
// Process rx message fifo is almost overflowed event.
190209
case kStatus_FLEXCAN_RxFifoWarning:
210+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = RxFifoWarning\n");
191211
break;
192212

193213
// Process rx message fifo is disabled during reading event.
194214
case kStatus_FLEXCAN_RxFifoDisabled:
215+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = RxFifoDisabled\n");
195216
break;
196217

197218
// Process FlexCAN is waken up from stop mode event.
198219
case kStatus_FLEXCAN_WakeUp:
220+
MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = WakeUp\n");
199221
break;
200222

201223
// Process unhandled interrupt asserted event.
202224
case kStatus_FLEXCAN_UnHandled:
203225
// Process FlexCAN module error and status event.
204226
case kStatus_FLEXCAN_ErrorStatus:
227+
// This is *very* verbose when the bus is disconnected!
228+
//MIMXRT_CANIO_CAN_CALLBACK_DEBUG("canio: callback got status = UnHandled or ErrorStatus");
229+
205230
// We could do some fancy statistics update, but canio does not have.
206231
mimxrt10xx_flexcan_handle_error(self);
207232
break;
@@ -214,10 +239,10 @@ void common_hal_canio_can_construct(canio_can_obj_t *self, const mcu_pin_obj_t *
214239
const mcu_periph_obj_t *rx_periph = find_pin_function(mcu_can_rx_list, rx, &instance, MP_QSTR_rx);
215240
const mcu_periph_obj_t *tx_periph = find_pin_function(mcu_can_tx_list, tx, &instance, MP_QSTR_tx);
216241

217-
// mp_printf(&mp_plat_print, "can instance: %d\n", instance);
218-
// mp_printf(&mp_plat_print, "can loopback: %d\n", loopback ? 1 : 0);
219-
// mp_printf(&mp_plat_print, "can silent: %d\n", silent ? 1 : 0);
220-
// mp_printf(&mp_plat_print, "can baudrate: %d\n", baudrate);
242+
MIMXRT_CANIO_CAN_DEBUG("canio: init instance: %d\n", instance);
243+
MIMXRT_CANIO_CAN_DEBUG("canio: init loopback: %d\n", loopback ? 1 : 0);
244+
MIMXRT_CANIO_CAN_DEBUG("canio: init silent: %d\n", silent ? 1 : 0);
245+
MIMXRT_CANIO_CAN_DEBUG("canio: init baudrate: %d\n", baudrate);
221246

222247
self->rx_pin = rx;
223248
self->tx_pin = tx;

0 commit comments

Comments
 (0)