Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

STM32 - UART - mauvaise configuration mot de 9 bits ?



  1. #1
    Vicolo

    STM32 - UART - mauvaise configuration mot de 9 bits ?


    ------

    Salut,

    me revoilà pour des questions sur les microcontroleurs de chez ST.

    je travaille sur le STM32f303k8 et voilà mon problème :

    Je dois faire une transmission UART, RX/TX sur mon micro, j'arrive bien à envoyer un mot toutes les 'x' millisecondes. (ici x sera 2 ms pour moi, avec un timer prédefini)

    alors voilà ma configuration de mon UART :
    On remarquera bien la ligne :
    huart1.Init.WordLength = UART_WORDLENGTH_9B;

    qui dit donc que mon mot envoyé sera en 9 bits
    Code:
    void MX_USART1_UART_Init(void)
    {
    
      huart1.Instance = USART1;
      huart1.Init.BaudRate = 9600;
      huart1.Init.WordLength = UART_WORDLENGTH_9B;
      huart1.Init.StopBits = UART_STOPBITS_1;
      huart1.Init.Parity = UART_PARITY_NONE;
      huart1.Init.Mode = UART_MODE_TX_RX;
      huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
      huart1.Init.OverSampling = UART_OVERSAMPLING_16;
      huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
      huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
      HAL_UART_Init(&huart1);
    }

    Voilà les lignes de codes qui me permettent d'envoyer sur TX le mot : (j'ai pas mis toute la fonction pour pas vous perdre)

    Code:
    rxBuffer = 0b000101011;
    HAL_UART_Transmit_DMA(&huart1, &rxBuffer, 1);
    Mais quand je regarde à l'oscilloscope, je vois que le mot qui devrait avoir 11 bits( 1 Bit de Start+ 9 bit DATA + 1 bit de stop) je remarque qu'il en a que 10.
    Il manque le dernier bit du DATA, soit le MSB (dans l'exemple MSB = 0).

    Un screen de l'oscillo en pièce jointes avec le mot : 0b000101011

    J'ai besoin pour mon projet, de pouvoir toggle le 9eme bit à 0 ou à 1. Et j'aimerais savoir ce que j'ai loupé ? Ai-je mal configuré quelque chose ?

    J'ai fait des calculs :

    à 9600 bauds : (1/9600) * 9 bits = 940µs
    et (1/9600) * 11 bits = 1,14 ms

    J'ai donc les 9 bits, mais je ne comprend vraiment pas pourquoi ma DATA n'utilise pas 9 bits.

    -----
    Images attachées Images attachées  

  2. Publicité
  3. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  4. #2
    jiherve

    Re : STM32 - UART - mauvaise configuration mot de 9 bits ?

    Bonsoir,
    De ce que j'en comprends le 9eme bit c'est la parité , voir ici chapitre 29 :http://www2.st.com/content/ccc/resou...DM00043574.pdf
    page 950 en particulier.
    Toujours faire l'effort de chercher le manuel utilisateur , l'imprimer et le lire.
    JR
    l'électronique c'est pas du vaudou!

  5. #3
    vincent66

    Re : STM32 - UART - mauvaise configuration mot de 9 bits ?

    Bonsoir,
    Outre le bit de parité un neuvième bit peut être ajouté pour transmettre une adresse de périphérique sur une connexion en étoile...
    Et il n'est à priori pas possible de transmettre neuf bits de data...
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  6. #4
    Vicolo

    Re : STM32 - UART - mauvaise configuration mot de 9 bits ?

    Bonsoir,

    @jihervé : Je ne parlais pas du bit de parité, mais du 9ème bit. J'ai bien parcouru le reference manual, je ne serais pas venu ici sans me documenter avant. La taille du mot et le registre comprenait 8 bits, alors que je l'avais configuré en 9 bits, là était mon problème?

    @vincent66 : J'ai finalement réussi en bidouillant un peu. J'utilisais une transmission DMA (cf le code de mon premier message), et apparemment, avec une DMA, on ne peut pas envoyer 9 bits (ou il faudrait le configurer). J'ai donc enlever le DMA, et cela marchait correctement,
    en envoyant bien 1 bit de start + 9 bits de DATA + 1 bit de stop. = 11 bits en total.

    Merci pour vos réponses.

  7. A voir en vidéo sur Futura

Discussions similaires

  1. Configuration UART pic24fj128ga010
    Par jules38410 dans le forum Électronique
    Réponses: 4
    Dernier message: 12/07/2014, 00h11
  2. configuration du UART pour le mode Motorola
    Par CAPUCIN123 dans le forum Électronique
    Réponses: 22
    Dernier message: 05/06/2013, 00h49
  3. Problème bits de configuration PIC16F1519
    Par waghh dans le forum Électronique
    Réponses: 1
    Dernier message: 13/01/2013, 10h46
  4. Réponses: 1
    Dernier message: 02/03/2011, 20h53
  5. [PIC18 / Copilateur C18] - Configuration des bits
    Par jorg1n dans le forum Électronique
    Réponses: 3
    Dernier message: 30/08/2010, 11h34
Découvrez nos comparatifs produits sur l'informatique et les technologies.