Discussions Générales > Bus CAN

Les cartes CAN en 8MHz

<< < (2/2)

Jean-Luc:
J'avance sur ma bibliothèque.

Plutôt que de calculer des configurations à la main, j'ai, en m'inspirant de ce qui est fait dans la bibliothèque FlexCAN pour le Teensy, implémenté un algo qui calcule automatiquement la configuration.

À partir de la fréquence du quartz du 2515 et de la vitesse demandée pour le bus, une config de bit timing est engendrée de manière à respecter les contraintes et minimiser l'erreur de vitesse.

Voici quelques unes des vitesses possibles avec une erreur nulle pour un quartz à 16MHz (j'ai fait varier la vitesse de 100 en 100). De gauche à droite on a le découpage de la transmission d'un bit : Sync segment, Propagation Segment, Phase segment 1, Phase Segment 2. La vitesse du bus, le Baud Rate Prescaler, le nombre de Time Quanta, le positionnement du sample point (en pour 1000) sachant qu'il doit être compris entre 60 et 70% d'après la datasheet, l'erreur de vitesse en absolu, l'erreur en parties par million (PPM). Il existe évidemment d'autre configs pour lesquelles l'erreur n'est pas nulle. La tolérance est de 600 PPM.

Je n'ai pas tout mis car il y a 636 configurations possibles avec un PPM plus petit que 1.


--- Code: ---+-+--------+--------+--------+
| |        |        |        | Baud=5000 BRP=64 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=6400 BRP=50 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+-------+-------+--------+
| |       |       |        | Baud=7400 BRP=47 TQCount=23 SamplePoint=652 error=0 PPM=0
+-+-------+-------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=8000 BRP=40 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+-------+-------+--------+
| |       |       |        | Baud=9400 BRP=37 TQCount=23 SamplePoint=652 error=0 PPM=0
+-+-------+-------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=10000 BRP=32 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=12500 BRP=32 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+--------+--------+--------+
| |        |        |        | Baud=12800 BRP=25 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=16000 BRP=20 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=20000 BRP=16 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=25000 BRP=16 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+--------+--------+--------+
| |        |        |        | Baud=32000 BRP=10 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=40000 BRP=8 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=50000 BRP=8 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+-----+-----+-----+
| |     |     |     | Baud=62500 BRP=8 TQCount=16 SamplePoint=687 error=0 PPM=0
+-+-----+-----+-----+
+-+--------+--------+--------+
| |        |        |        | Baud=64000 BRP=5 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=80000 BRP=4 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=100000 BRP=4 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+-----+-----+-----+
| |     |     |     | Baud=125000 BRP=4 TQCount=16 SamplePoint=687 error=0 PPM=0
+-+-----+-----+-----+
+-+--------+--------+--------+
| |        |        |        | Baud=160000 BRP=2 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=200000 BRP=2 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+-----+-----+-----+
| |     |     |     | Baud=250000 BRP=2 TQCount=16 SamplePoint=687 error=0 PPM=0
+-+-----+-----+-----+
+-+--------+--------+--------+
| |        |        |        | Baud=320000 BRP=1 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=400000 BRP=1 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+-----+-----+-----+
| |     |     |     | Baud=500000 BRP=1 TQCount=16 SamplePoint=687 error=0 PPM=0
+-+-----+-----+-----+
+-+---+---+---+
| |   |   |   | Baud=800000 BRP=1 TQCount=10 SamplePoint=700 error=0 PPM=0
+-+---+---+---+
+-+---+-+---+
| |   | |   | Baud=1000000 BRP=1 TQCount=8 SamplePoint=625 error=0 PPM=0
+-+---+-+---+

--- Fin du code ---

Même chose avec un quartz à 8MHz. Il existes 639 configurations avec le PPM < 1.


--- Code: ---+-+--------+--------+--------+
| |        |        |        | Baud=2500 BRP=64 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=3200 BRP=50 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+-------+-------+--------+
| |       |       |        | Baud=3700 BRP=47 TQCount=23 SamplePoint=652 error=0 PPM=0
+-+-------+-------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=4000 BRP=40 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+-------+-------+--------+
| |       |       |        | Baud=4700 BRP=37 TQCount=23 SamplePoint=652 error=0 PPM=0
+-+-------+-------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=5000 BRP=32 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=6400 BRP=25 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=8000 BRP=20 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=10000 BRP=16 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=12500 BRP=16 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+--------+--------+--------+
| |        |        |        | Baud=16000 BRP=10 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=20000 BRP=8 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=25000 BRP=8 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+--------+--------+--------+
| |        |        |        | Baud=32000 BRP=5 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+--------+--------+--------+
| |        |        |        | Baud=40000 BRP=4 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=50000 BRP=4 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+-----+-----+-----+
| |     |     |     | Baud=62500 BRP=4 TQCount=16 SamplePoint=687 error=0 PPM=0
+-+-----+-----+-----+
+-+--------+--------+--------+
| |        |        |        | Baud=80000 BRP=2 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=100000 BRP=2 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+-----+-----+-----+
| |     |     |     | Baud=125000 BRP=2 TQCount=16 SamplePoint=687 error=0 PPM=0
+-+-----+-----+-----+
+-+--------+--------+--------+
| |        |        |        | Baud=160000 BRP=1 TQCount=25 SamplePoint=680 error=0 PPM=0
+-+--------+--------+--------+
+-+------+------+-------+
| |      |      |       | Baud=200000 BRP=1 TQCount=20 SamplePoint=650 error=0 PPM=0
+-+------+------+-------+
+-+-----+-----+-----+
| |     |     |     | Baud=250000 BRP=1 TQCount=16 SamplePoint=687 error=0 PPM=0
+-+-----+-----+-----+
+-+---+---+---+
| |   |   |   | Baud=400000 BRP=1 TQCount=10 SamplePoint=700 error=0 PPM=0
+-+---+---+---+
+-+---+-+---+
| |   | |   | Baud=500000 BRP=1 TQCount=8 SamplePoint=625 error=0 PPM=0
+-+---+-+---+
+-+-+-+--+
| | | |  | Baud=800000 BRP=1 TQCount=5 SamplePoint=600 error=0 PPM=0
+-+-+-+--+

--- Fin du code ---

La plus haute vitesse possible de communication entre une carte à 16MHz et une carte à 8MHz est de 800000 (vitesse maximum de la carte à MHz). La config CAN_1000KBPS de la lib mcp_can pour une carte 8MHz est incorrecte.

Navigation

[0] Index des messages

[*] Page précédente

Utiliser la version classique