i.MX95 EVK (19x19): CAN1 on M7 core not working

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX95 EVK (19x19): CAN1 on M7 core not working

324 Views
sarvesh_n
Contributor I

I am trying to use CAN1 on the M7 core of the i.MX95 19x19 EVK to receive/transmit CAN messages. 

I am using the i.MX95 EVK (19x19) with the M7 core, while Yocto Linux runs on the A-core with SW9:3 set to ON for CAN routing.

I used the FlexCAN SDK example on the M7 core. Through the system manager I granted M7 access to these pins using 'mm 0x443c01e0 0x6' and 'mm 0x443c01e4 0x6', but it still does not work.

How should FlexCAN1 be properly enabled on the M7 core for i.MX95? Are there any additional configurations required?

 

 

0 Kudos
Reply
1 Reply

286 Views
yipingwang
NXP TechSupport
NXP TechSupport

Ensure the M7 really owns the FlexCAN1 peripheral

On i.MX95, every peripheral is owned by SCMI/System Manager by default.
You must explicitly grant ownership of:

FlexCAN1 Registers

PER: CAN1 (AIPSTZ / peripheral ID)

FlexCAN1 Message RAM

CAN1_MR (separate peripheral range)

CAN1 I/O pads

  • GPIO_IOxx pins corresponding to CAN1_TX and CAN1_RX

Your commands:

mm 0x443c01e0 0x6

mm 0x443c01e4 0x6

only modify the pin mode—they do not grant the M7 permissions.

You must request ownership via SCFW (System Controller Firmware).

In Cortex‑M7 SDK examples, this is done via: 

sc_err_t err;

err = sc_rm_get_partition(&ptn);

err = sc_rm_assign_resource(ptn, SC_R_CAN_1);

err = sc_rm_assign_resource(ptn, SC_R_CAN_1_MEM);

 

Show more lines

If this step is missing, CAN1 registers appear to “work” but nothing actually happens.