[Programmation] STM32 - UART - mauvaise configuration mot de 9 bits ?
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

STM32 - UART - mauvaise configuration mot de 9 bits ?



  1. #1
    invitedf7cca36

    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. #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!

  3. #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...

  4. #4
    invitedf7cca36

    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.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Configuration UART pic24fj128ga010
    Par invite1ae0a8ed dans le forum Électronique
    Réponses: 4
    Dernier message: 12/07/2014, 00h11
  2. configuration du UART pour le mode Motorola
    Par invite53de7e28 dans le forum Électronique
    Réponses: 22
    Dernier message: 05/06/2013, 00h49
  3. Problème bits de configuration PIC16F1519
    Par invitec5337bc1 dans le forum Électronique
    Réponses: 1
    Dernier message: 13/01/2013, 10h46
  4. URGENT : Impossible dialogue UART avec 2 bits Stop sous CCS C (PIC)
    Par inviteafbffaf9 dans le forum Électronique
    Réponses: 1
    Dernier message: 02/03/2011, 20h53
  5. [PIC18 / Copilateur C18] - Configuration des bits
    Par invite3c35244f dans le forum Électronique
    Réponses: 3
    Dernier message: 30/08/2010, 11h34
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...