I'm currently working with the Zybo and until now I used both CAN controller via MIO on JF port. Now I want to route one CAN controller to the JC port. To my understanding I have to route a controller to EMIO and assign the signals to the pins with an constraints file.
I started with the following tutorial and then I enabled the CAN controllers and routed them to MIO 10 & 11 and MIO 12 & 13. With my bare-metal program I can initialise the controllers and send and receive messages without problems. In order to use the pins on port JC I configured the second CAN to EMIO and assigned the pins in the constraints file:
From the TRM I know that I have to enable the level shifter if I use the controller from the PS and route the signals to PL. I don't know where I can set this in the SDK or in Vivado. To my understanding this should do the bootloader or should be done when programming via JTAG. When I start my working bare-metal program, it hangs during the initialisation of the second CAN controller. To be precise, I can't set the controller to the normal mode, as can be seen here:
Question
fsasm
Hi all!
I'm currently working with the Zybo and until now I used both CAN controller via MIO on JF port. Now I want to route one CAN controller to the JC port. To my understanding I have to route a controller to EMIO and assign the signals to the pins with an constraints file.
I started with the following tutorial and then I enabled the CAN controllers and routed them to MIO 10 & 11 and MIO 12 & 13. With my bare-metal program I can initialise the controllers and send and receive messages without problems. In order to use the pins on port JC I configured the second CAN to EMIO and assigned the pins in the constraints file:
set_property -dict { PACKAGE_PIN V15 IOSTANDARD LVCMOS33 } [get_ports { CAN_1_tx }]; set_property -dict { PACKAGE_PIN W15 IOSTANDARD LVCMOS33 } [get_ports { CAN_1_rx }];
From the TRM I know that I have to enable the level shifter if I use the controller from the PS and route the signals to PL. I don't know where I can set this in the SDK or in Vivado. To my understanding this should do the bootloader or should be done when programming via JTAG. When I start my working bare-metal program, it hangs during the initialisation of the second CAN controller. To be precise, I can't set the controller to the normal mode, as can be seen here:
XCanPs_EnterMode(&can_drv2, XCANPS_MODE_NORMAL); while ((mode = XCanPs_GetMode(&can_drv2)) != XCANPS_MODE_NORMAL) ; // endless loop
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Archived
This topic is now archived and is closed to further replies.