RE: Queries on CAN frame work

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi marc,

> -----Original Message-----
> From: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>
> Sent: Friday, March 18, 2022 2:45 PM
> To: Srinivas Neeli <sneeli@xxxxxxxxxx>
> Cc: Srinivas Goud <sgoud@xxxxxxxxxx>; Naveen Kumar Gaddipati
> <naveenku@xxxxxxxxxx>; Prasad Beer Prasad <prasadbe@xxxxxxxxxx>; linux-
> can <linux-can@xxxxxxxxxxxxxxx>; Stefan Mätje <stefan.maetje@xxxxxx>;
> Vincent MAILHOL <mailhol.vincent@xxxxxxxxxx>
> Subject: Re: Queries on CAN frame work
> 
> On 18.03.2022 06:55:56, Srinivas Neeli wrote:
> > > I've updated the algorithm to prefer lower brp values. Can you check
> > > if these values make sense to you?
> >
> > Thanks for update.
> > Few more changes need to update in algorithm.
> > 1) Choose SJW as large as possible (we can assign " tseg2")
> 
> ACK - changes to SJW needs still to be done.
Already we are assigning sjw = tseg2 in manual mode. Automatic we are assigning 1.
https://elixir.bootlin.com/linux/latest/source/drivers/net/can/dev/bittiming.c#L158

> 
> >  For CANFD CIA recommendations :
> >  Recommendation 1:
> >     Choose the highest available CAN clock frequency (20 MHz, 40 MHz,
> > 80 MHz) Recommendation 2:
> >     Set the BRPA bit-rate pre-scaler equal BRPD Recommendation 3:
> >     Choose BRPA and BRPD as low as possible.
> > Recommendation 4:
> >     Configure all CAN FD nodes to have the same arbitration phase
> > Sample point (SP) and the same data phase SP Recommendation 5:
> >     Choose SJWD and SJWA as large as possible (best is the max
> > possible value) Recommendation 6:
> >     Enable TDC when needed
> >      If we enable TDC feature ,please try to configure brp value 1 in
> algorithm(TDC feature support brp 1/2 but observed good results with 1).
> > >
> > > | $ ./can-calc-bit-timing --alg=can-next xilinx_dwnstrm -c 79999999
> > > | Bit timing parameters for xilinx_dwnstrm with 79.999999 MHz ref
> > > | clock (cmd-
> > > line) using algo 'can-next'
> > > |  nominal                                  real  Bitrt    nom   real  SampP
> > > |  Bitrate TQ[ns] PrS PhS1 PhS2 SJW BRP  Bitrate  Error  SampP  SampP
> Error
> > > |  1000000     12  29   30   20   1   1   999999   0.0%  75.0%  75.0%   0.0%
> >
> > Observed different BRP values for 1Mbps in here and below list for
> > same sampling point.
> 
> Yes. Seems I should update the table to clarify what they output.
> 
> The 1st table uses the CAN-2.0 bit timing constants, the 2nd table is using
> the CAN-FD data bit timing constants.
> 
> > > |   800000     12  39   40   20   1   1   799999   0.0%  80.0%  80.0%   0.0%
> > > |   666666     12  47   48   24   1   1   666666   0.0%  80.0%  80.0%   0.0%
> > > |   500000     12  69   70   20   1   1   499999   0.0%  87.5%  87.5%   0.0%
> > > |   250000     25  69   70   20   1   2   249999   0.0%  87.5%  87.5%   0.0%
> > > |   125000     50  69   70   20   1   4   124999   0.0%  87.5%  87.5%   0.0%
> > > |   100000     50  87   87   25   1   4    99999   0.0%  87.5%  87.5%   0.0%
> > > |    83333     50 104  105   30   1   4    83333   0.0%  87.5%  87.5%   0.0%
> > > |    50000    100  87   87   25   1   8    49999   0.0%  87.5%  87.5%   0.0%
> > > |    33333    125 104  105   30   1  10    33333   0.0%  87.5%  87.5%   0.0%
> > > |    20000    250  87   87   25   1  20    19999   0.0%  87.5%  87.5%   0.0%
> > > |    10000    500  87   87   25   1  40     9999   0.0%  87.5%  87.5%   0.0%
> > > |
> > > | Bit timing parameters for xilinx_dwnstrm with 79.999999 MHz ref
> > > | clock
> > > (cmd-line) using algo 'can-next'
> > > |  nominal                                  real  Bitrt    nom   real  SampP
> > > |  Bitrate TQ[ns] PrS PhS1 PhS2 SJW BRP  Bitrate  Error  SampP  SampP
> Error
> > > | 12000000     12   2    2    2   1   1 11428571   4.8%  75.0%  71.4%   4.8%
> > > | 10000000     12   2    3    2   1   1  9999999   0.0%  75.0%  75.0%   0.0%
> > > |  8000000     12   3    3    3   1   1  7999999   0.0%  75.0%  70.0%   6.7%
> > > |  5000000     12   5    6    4   1   1  4999999   0.0%  75.0%  75.0%   0.0%
> > > |  4000000     12   7    7    5   1   1  3999999   0.0%  75.0%  75.0%   0.0%
> > > |  2000000     12  14   15   10   1   1  1999999   0.0%  75.0%  75.0%   0.0%
> > > |  1000000     25  14   15   10   1   2   999999   0.0%  75.0%  75.0%   0.0%
> >
> > Here brp =2 and in above list brp =1.
> 
> According to the "ip" command's output, these are you timing parameters:
> 
> | 		.bittiming_const = {
> | 			.name = "xilinx_dwnstrm",
> | 			.tseg1_min = 1,
> | 			.tseg1_max = 256,
> | 			.tseg2_min = 1,
> | 			.tseg2_max = 128,
> | 			.sjw_max = 128,
> | 			.brp_min = 1,
> | 			.brp_max = 256,
> | 			.brp_inc = 1,
> | 		},
> | 		.data_bittiming_const = {
> | 			.name = "xilinx_dwnstrm",
> | 			.tseg1_min = 1,
> | 			.tseg1_max = 32,
> | 			.tseg2_min = 1,
> | 			.tseg2_max = 16,
> | 			.sjw_max = 16,
> | 			.brp_min = 1,
> | 			.brp_max = 256,
> | 			.brp_inc = 1,
> | 		},
> 
> Note that for the data bit timing the tseg1_max is 32.
> 
> > > |  nominal                                  real  Bitrt    nom   real  SampP
> > > |  Bitrate TQ[ns] PrS PhS1 PhS2 SJW BRP  Bitrate  Error  SampP  SampP
> Error
> > > |  1000000     12  29   30   20   1   1   999999   0.0%  75.0%  75.0%   0.0%
> <-- CAN-2.0
> > > |  1000000     25  14   15   10   1   2   999999   0.0%  75.0%  75.0%   0.0%
> <-- CAN-FD (data)
>                        \_____/
>                         tseg1
> 
> tseg1 = 14 + 15 = 29
> 
> With brp == 1 the tseg1 would be 29 + 30 = 59, which means it's too large.
Accepted, Thanks for clear explanation.
 
> 
> regards,
> Marc
> 
> --
> Pengutronix e.K.                 | Marc Kleine-Budde           |
> Embedded Linux                   | https://www.pengutronix.de  |
> Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
> Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |




[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux