[Programmation] Liaison série entre 2 stm32
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Liaison série entre 2 stm32



  1. #1
    pimpan

    Liaison série entre 2 stm32


    ------

    Bonjour,

    Je souhaiterai communiquer entre deux cartes stm32 f042k6, l'une envoyant un message à l'autre et vice-versa. Mon programme fonctionne déjà mais je n'arrive pas à brancher la partie "physique". J'ai donc branché mes deux cartes chacune avec un câble usb, puis les deux sont sur une plaque labtec où j'ai relié rx à tx et inverse. Donc voici mes quelques questions :

    - Mon branchement est-il juste ? Rx et Tx inversés, puis les GND reliés ensemble ?
    - Dois-je obligatoirement laisser branché les 2 ports USB sur chacune des cartes ?

    Je programme tout cela en mikropascal et je visualise sur putty les deux ports com, mais avec mon programme un seul port com fonctionne où ça affiche correctement un texte toutes les secondes, et quand j'appuie sur une touche on voit sur le port la touche sur laquelle j'ai appuyé. Mais j'aimerai que quand j'appuie sur une touche les deux ports COM me montrent la touche sur laquelle j'ai appuyé.

    Merci pour votre aide

    -----

  2. #2
    Jack
    Modérateur

    Re : Liaison série entre 2 stm32

    Que viens faire l'USB la dedans? Je ne connais pas cette carte, mais je ne vois pas comment elle pourrait ne pas disposer de pins connectées à son UART, donc de port série dit "TTL", même si les niveaux sont plus souvent en 3V3 qu'en 5V.

    Tu trouves donc les pins Rx et Tx que tu croises d'une carte à l'autre et tu relies les masses. Rien d'autre à faire matériellement.

    PS:ça y est, tu as abandonné l'idée de lazarus?
    Dernière modification par Jack ; 01/04/2020 à 14h29.

  3. #3
    pimpan

    Re : Liaison série entre 2 stm32

    Je peux les alimenter que par usb

  4. #4
    Jack
    Modérateur

    Re : Liaison série entre 2 stm32

    Citation Envoyé par pimpan Voir le message
    Je peux les alimenter que par usb
    Ok. Du coup je ne comprends pas ta question. Si l'alimentation se fait par l'USB, il faut connecter l'USB non?

  5. A voir en vidéo sur Futura
  6. #5
    pimpan

    Re : Liaison série entre 2 stm32

    Oui, mais je n'arrive pas à faire communiquer les deux cartes, j'ai fait vérifier le schéma de câblage par mon tuteur donc cette partie est OK mais maintenant dans le programme mikropascal je ne sais pas quoi modifier pour que cela communique. J'ai deux interruptions : une de l'usart1 et l'autre de l'usart2. Voici mon code actuel :
    Code:
    procedure IT_Sys(); iv IVT_INT_SysTick; ics ICS_OFF;
    begin
      inc(NbSysTick);//1 pulse = 10ms
      if NbSystick mod 100 = 99 then //1"
    
      begin
        UART2_write_text(+#13+#10+'Envoie des donnees...' +#13+#10+''+#13+#10+'test'+#13+#10);
      end;
      if NbSystick mod 500 = 499 then //5"
      begin
        STAT_LED := not STAT_LED;
        hi2c.Mode := I2C_MODE_RSTFRM;
      end;
      if NbSystick mod 1000 = 999 then //10"
      begin
        NbSystick := 0;
        hi2c.Mode := I2C_MODE_EMM;
      end;
    end;
    
    procedure IT_Usart1(); iv IVT_INT_USART1; ics ICS_AUTO;
    var
      receive : word;
    
    begin
      receive := UART1_Read();
      Uart1Presente := true;
      if Uart2Presente then
      begin
        UART2_write('-');
        UART2_write('>');
        UART2_write(receive);
        UART2_Write(13);
        UART2_Write(10);
      end;
    end;
    
    procedure IT_Can(); iv IVT_INT_CEC_CAN; ics ICS_AUTO;
    begin
    
    end;
    
    procedure IT_Usart2(); iv IVT_INT_USART2; ics ICS_AUTO;
    var
      receive : word;
    begin
      receive := UART2_Read();
      Uart2Presente := true;
      if Uart1Presente then
      begin
        UART2_write_text('Donnees recues : ' + #13 + #10);
        UART2_write_text('====>');
        UART2_write(receive);
        UART2_Write(13);
        UART2_Write(10);
      end;
    end;
    Dernière modification par Jack ; 02/04/2020 à 11h13. Motif: Ajout balises code

  7. #6
    Jack
    Modérateur

    Re : Liaison série entre 2 stm32

    Il faut placer le code entre balises code comme c'est précisé dans les règles de ce forum.

    Pour le reste, c'est trop spécifique à ce processeur pour que je puisse vérifier ton code.
    Question méthodologie en revanche, il faudrait que tu commences avec des programmes simples pour tester la liaison série:
    - Un seul processeur
    - Pas d'interruption
    - communication avec un émulateur de terminal (putty, tera term, etc.) au travers d'un adaptateur série / USB

    Dès que ça marche, tu testes le fonctionnement avec interruptions.
    Avec le programme actuel, il faudrait que tu t'assure de rentrer dans la fonction d'interruption en envoyant un ou plusieurs message sur ton terminal de debug, à priori l'USB reliée au PC

  8. #7
    umfred

    Re : Liaison série entre 2 stm32

    Question très bête mais il y a le code de la boucle principale d'implémenter aussi ? celle qui fait l'initialisation, configure les entrées/sorties utilisés, fait la boucle d'attente , ...

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/09/2015, 11h35
  2. liaison serie entre 2 pics
    Par invite639d7aaf dans le forum Électronique
    Réponses: 3
    Dernier message: 26/04/2014, 23h18
  3. Liaison série entre deux µC via IR
    Par fdamien12 dans le forum Électronique
    Réponses: 5
    Dernier message: 06/09/2011, 18h09
  4. Liaison série entre PIC...
    Par hoffmann dans le forum Électronique
    Réponses: 8
    Dernier message: 08/10/2010, 19h22
  5. liaison série entre un PC et un PIC18F4520
    Par inviteadb2df5e dans le forum Électronique
    Réponses: 11
    Dernier message: 21/05/2008, 13h12
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...