Auteur Sujet: Librairie CAN pour ESP32  (Lu 14843 fois)

Jean-Paul

  • Newbie
  • *
  • Messages: 29
  • Z
    • Voir le profil
Librairie CAN pour ESP32
« le: janvier 16, 2021, 05:01:41 pm »
Bonjour,

Il y a-t-il une librairie recommandée / préférée pour utiliser le CAN sur ESP32 via le controleur intégré (comme LaBox)

Pour les montages avec MCP2515 (2517), connectés sur Arduino classique Nano/Uno/Mega, j'utilise la librairie ACAN (https://www.locoduino.org/spip.php?article268 ou https://github.com/pierremolinaro/acan2515) qui me parait la meilleure solution actuellement.

Une version ACAN utilisant les mêmes concepts / méthodes serait l'idéal mais je n'ai pas trouvé...
(Je sais que ACAN2515 permet d'utiliser un MCP2515 externe connecté à un ESP32 mais cela n'aide pas vraiment)

Merci de votre aide.

Amicalement.
Jean-Paul.
« Modifié: janvier 16, 2021, 11:58:36 pm par Jean-Paul »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3038
  • 100% Arduino et N
    • Voir le profil
Re : Librairie CAN pour ESP32
« Réponse #1 le: janvier 16, 2021, 05:20:56 pm »
Boujour Jean-Paul,

Une discussion a eu lieu sur ce sujet dans le forum en bas de l'article sur le Bibliothèque ACAN (1)
https://www.locoduino.org/spip.php?article268

Je suis à la recherche des différentes bibliothèques qui existent pour l'ESP32 sachant que LaBox utilise seulement un driver de ligne externe CCMCU230 et son controleur CAN interne.

Je reviens sur ce sujet un peu plus tard
Cordialement
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3038
  • 100% Arduino et N
    • Voir le profil
Re : Librairie CAN pour ESP32
« Réponse #2 le: janvier 16, 2021, 08:13:47 pm »
Après recherches et comparaison des 3 bibliothèques présentes sur le Oueb, je préconise en première approximation celle-ci (de miwagner) :

https://github.com/miwagner/ESP32-Arduino-CAN
qui est la plus récente (2019)

Elle ressemble à celle de nhatuan84 qui contient les même éléments mais datés de 2017,

https://github.com/nhatuan84/esp32-can-protocol-demo

avec une article genre tuto :http://www.iotsharing.com/2017/09/how-to-use-arduino-esp32-can-interface.html


Elles diffèrent aussi par les exemples. Les exemples de la 2ème se compilent bien avec la première.

Elle(s) permettent notamment de déclarer une file d'attente configurable comme la bibliothèque ACAN, ce qui est important. Elle permettent aussi de configurer des masques et des filtres.

On peut se procurer une note d'application du SJA1000 qui est le controleur CAN intégré dans l'ESP32 :
https://www.nxp.com/docs/en/application-note/AN97076.pdf
et la datasheet du SJA1000 de NXP :
https://www.nxp.com/docs/en/data-sheet/SJA1000.pdf

Je vous tiendrai au courant de mes prochains tests

« Modifié: janvier 16, 2021, 11:06:50 pm par Dominique »
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3038
  • 100% Arduino et N
    • Voir le profil
Re : Librairie CAN pour ESP32
« Réponse #3 le: janvier 17, 2021, 06:07:00 pm »
Comme promis, voici un petit programme de test du bus CAN.
avec la bibliothèque https://github.com/miwagner/ESP32-Arduino-CAN
J'utilise un Satellite V1 (donc à base de Nano) et un cordon téléphonique (4 fils du commerce, droit ou croisé, ça marche).
Sur le Nano je charge le programme Test_ACAN_Send-Receive_ID7 (qui utilise la bibliothèque ACAN).

Sur LaBox, je charge le programme Can-test-Jan-21.

Sur le moniteur on doit voir :
standard frame  from 0x00000007, DLC 8
0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80
« Modifié: janvier 17, 2021, 06:11:35 pm par Dominique »
Cordialement,
Dominique

Jean-Paul

  • Newbie
  • *
  • Messages: 29
  • Z
    • Voir le profil
Re : Librairie CAN pour ESP32
« Réponse #4 le: janvier 18, 2021, 02:11:16 pm »
Bonjour,

Tout d'abord un grand merci pour ces messages complets, détaillés et très clairs. J'imagine le travail de recherche et de préparation préalable ...

L'installation des exemples sur Labox d'un coté et un Nano + interface CAN MCP2515 de l'autre côté, est sans problème et les messages passent du premier coup.
Ceci permet de confirmer le fonctionnement de l'interface CAN de LaBox en particulier vu l'utilisation, dans mon cas, d'une carte MCU-230 en peu 'spéciale' (cf https://forum.locoduino.org/index.php?topic=922.msg12212#msg12212)

Je vais à présent me plonger dans le bibliothèque de miwagner et peut-être dans les documents du SJA1000.
Il me semble en tout cas qu'il faudra avoir un équivalent du 'tryToSend' de ACAN pour essayer d'envoyer des messages sans bloquer si le bus est déconnecté.

Amicalement

Jean-Paul

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3038
  • 100% Arduino et N
    • Voir le profil
Re : Librairie CAN pour ESP32
« Réponse #5 le: janvier 18, 2021, 06:02:52 pm »
Jean-Paul,

On me dit qu'une version ACAN pour l'ESP32/SJA1000 pourrait voir le jour prochainement (mais je n'ai aucune date et je ne garanti rien).
Donc ce n'est pas perdre du temps que d'utiliser la biblio ci-dessus pour développer et tester sachant que ce sera certainement assez simple de migrer vers la biblio définitive par la suite.

Effectivement ce serait bien d'avoir un compte-rendu de ESP32Can.CANWriteFrame(&tx_frame);
En fait dans la bibliothèque c'est déclaré : int ESP32Can.CANWriteFrame(&tx_frame);
donc il y a bien un compte-rendu comme trytoSend :
c'est "-1" en cas d'échec
c'est "0" en cas de succès

int CAN_write_frame(const CAN_frame_t *p_frame) {
if (sem_tx_complete == NULL) {
return -1;
}

// Write the frame to the controller
CAN_write_frame_phy(p_frame);

// wait for the frame tx to complete
xSemaphoreTake(sem_tx_complete, portMAX_DELAY);

return 0;
}

à vérifier en débranchant le  ??? ;D
« Modifié: janvier 18, 2021, 06:13:03 pm par Dominique »
Cordialement,
Dominique

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : Librairie CAN pour ESP32
« Réponse #6 le: mai 04, 2021, 09:07:56 am »
Cordialement