Jump to content
  • 0

Routing CAN to EMIO


fsasm

Question

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

Hi @fsasm,

I have not worked with the EMIO process before. With that in mind could you please take a screen shot of the setting in the zynq processor as well as your block design and post the sdk code and I will look to to see if I can reproduce the issue.

cheers,

Jon 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...