• Content Count

  • Joined

  • Last visited

  1. fsasm

    Routing CAN to EMIO

    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