Search the Community
Showing results for tags 'canbus'.
Found 3 results
I am going through UG585 document and trying to understand the formulas for the can bus baud rate. I am using the example from SDK (xcanps_intr_example). I am trying to understand how they are arriving at those numbers. Ultimately I would like to set up the baud rate at 1 megabit per second. /* * The Baud Rate Prescaler Register (BRPR) and Bit Timing Register (BTR) * are setup such that CAN baud rate equals 40Kbps, assuming that the * the CAN clock is 24MHz. The user needs to modify these values based on * the desired baud rate and the CAN clock frequency. For more information * see the CAN 2.0A, CAN 2.0B, ISO 11898-1 specifications. */ /* * Timing parameters to be set in the Bit Timing Register (BTR). * These values are for a 40 Kbps baudrate assuming the CAN input clock * frequency is 24 MHz. */ #define TEST_BTR_SYNCJUMPWIDTH 3 #define TEST_BTR_SECOND_TIMESEGMENT 2 #define TEST_BTR_FIRST_TIMESEGMENT 15 /* * The Baud rate Prescalar value in the Baud Rate Prescaler Register * needs to be set based on the input clock frequency to the CAN core and * the desired CAN baud rate. * This value is for a 40 Kbps baudrate assuming the CAN input clock frequency * is 24 MHz. */ #define TEST_BRPR_BAUD_PRESCALAR 29 Formulas from the UG585: tTQ_CLK = tCAN_REF_CLK * (can.BRPR[BRP] + 1) freqTQ_CLK = freqCAN_REF_CLK / (can.BRPR[BRP] + 1) tSYNC_SEGMENT = 1 * tTQ_CLK tTIME_SEGMENT1 = tTQ_CLK * (can.BTR[TS1] + 1) tTIME_SEGMENT2 = tTQ_CLK * (can.BTR[TS2] + 1) tBIT_RATE = tSYNC_SEGMENT + tTIME_SEGMENT1 + tTIME_SEGMENT2 freqBIT_RATE = freqCAN_REF_CLK / ((can.BRPR[BRP] + 1) * (3 + can.BTR[TS1] + can.BTR[TS2])) How are they deriving those numbers? How do I choose BRP? How are they getting TEST_BTR_SYNCJUMPWIDTH, TEST_BTR_SECOND_TIMESEGMENT and TEST_BTR_FIRST_TIMESEGMENT.
I am looking at the DMC60c CAN protocol guide and also the software API reference manual. What are the API numbers needed in the CAN message to communicate with the DMC60c. For example if I wanted to send a voltage command using the function driveVoltage, what should go in the API field (Byte 1) of the message identifier? Thanks, matt
Hello, I have the Zynq 7000 board (Z-7010). I'm trying to build a Vhdl Program that receives a Canbus Frame. I saw in the tutorial that There is a builtin Canbus Controller, where is the canbus Interface?should i use the standard interface? Is there a simple example of such a program? - I use the 2017.1 Vivado and the Z-7010 Board. Thanks.