[Programmation] bibliothèques de périphériques pour stm32
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

bibliothèques de périphériques pour stm32



  1. #1
    invite75c2964e

    bibliothèques de périphériques pour stm32


    ------

    J'ai besoin de développer des bibliothèques de périphériques comme dht11, dht22 et sht31 ... à partir de zéro (ou presque). Existe-t-il un document ou un tutoriel pouvant m'aider? La question est de savoir comment écrire une bibliothèque de périphériques en utilisant C à partir d’une datasheet et d’une plate-forme telle que STM32.

    Merci beaucoup

    J'ai essayé de lire les bibliothèques de périphériques sur Github, mais j'aimerais avoir un guide / modèle à suivre (règles générales) pour écrire les bibliothèques de périphériques appropriées à partir d'une feuille de données donnée.

    Je ne demande pas un guide complet complet, mais par où commencer, docs, méthodes.

    -----

  2. #2
    Vincent PETIT
    Animateur Électronique

    Re : bibliothèques de périphériques pour stm32

    Salut,
    Il y a plusieurs niveaux pour démarrer, je prends un exemple avec le STM32L476 RG (carte Nucléo) :

    Réutilisation
    Tu peux importer la couche CMSIS, qui est la couche ARM juste au dessus du matériel. C'est sur cette couche que ST a bâtie sa couche (LL) Low Layer et HAL (Hardware Abstract Layer). Ou importer juste LL + CMSIS ? Si tu fais ça il te faut la doc du HAL + LL de chez ST https://www.st.com/content/ccc/resou...DM00173145.pdf

    Comme les warriors
    Exemple toujours avec un STM32L476 RG (carte Nucléo), il te faut :
    - La datasheet (organisation interne du micro, les spécs électriques, etc...) https://www.st.com/resource/en/datas...tm32l476rg.pdf
    - Le reference manual (fonctionnement détaillé de chaque périphérique et des registres associés) https://www.st.com/resource/en/refer...dm00083560.pdf
    - Le programming manual (optionnel)


    Il faut jongler avec les deux ! Je te fais un exemple avec "ce bon vieux Blink" avec la LED sur PA5

    Sur les microcontrôleurs 8 et 16 bits MSP430, ATMEL, PIC, etc, on configure les périphériques et c'est partie mais sur ARM il ne faut pas oublier d'activer en plus, et de régler au besoin, l'horloge du périphérique et pour ça il faut savoir sur quel bus d'horloge est connecté le dit périphérique. Datasheet page 17

    arm1.PNG

    Le PORTA est connecté sur le bus d'horloge AHB2, note qu'il y a plusieurs bus d'horloge, AHB1, APB1 et APB2 certains bus sont limités en vitesse (ce n'est pas le cas sur ce microcontrôleur) il y a des ponts et des réglages possibles pour permettre des ajustements très fins surtout en terme de consommation puisque plus ça tourne lentement et moins ça consomme.

    Maintenant, il faut aller voir dans le Reference Manual, ce qu'on nous raconte à propose du bus AHB2. Si tu regardes l'image ci dessous tu peux voir que AHB2 est un registre classé dans la fonctionnalité RCC (Reset and Clock Control) d'où le pointeur RCC->AHB2xxx et ce registre AHB2 peut être "enable" (AHB2ENR) ou "reset" (AHB2RSTR). C'est toujours intéressant d'aller lire ce que fait la fonctionnalité RCC. Nous on le veut "enable".

    arm2.PNG

    Et ci-dessous, on voit qu'il suffit de mettre le bit 0 du registre à 1 pour activer l'horloge du port A (voir la page 252 que je ne mets pas ici.) La doc précise l'utilité de chaque bit de chaque registre.

    arm3.PNG

    Concernant le registre 32bits MODER de la fonctionnalité GPIOA, par défaut tout est à 1 c'est écrit un peu en dessous de ce que j'ai surligné en jaune et il s'agit de mettre MODE5 , correspondant à PA5, à la valeur "01" qui signifie GPIO output.

    arm4.PNG

    Et enfin on met à 1 ou à 0 le bit de PA5 via le registre ODR de la fonctionnalité GPIOA

    arm5.PNG


    Si tu te demandes comment connaitre les registres nécessaires à telle ou telle fonctionnalités, c'est écrit dans le Reference Manual, regarde le chapitre 8 General-purpose I/Os (GPIO) tout est écrit

    Voici un exemple simple :

    Code:
     /* exemple STM32L476 RG (carte Nucléo) */
    #include "stm32l4xx.h"
     
    int main(void)
    {
       unsigned int i =0;
     
       /* Activation de l'horloge du périphérique GPIOA */
       RCC->AHB2ENR |= 1 << 0;
     
       /* PA5 en sortie classique */
       GPIOA->MODER &= ~(1 << 11);
     
       while(1) /* On fait clignoter */
       {
          for (i= 0; i < 500000; i++)
    	GPIOA->ODR = (1 << 5); /* PA5 à 1 */
          for (i = 0; i < 500000; i++)
    	GPIOA->ODR = (0 << 5); /* PA5 à 0 */
       }
    }
    Bon c'est sur qu'avec cette technique, tu as beaucoup à lire mais c'est très formateur. Mais si tu arrives à faire comme ça, je te garantie que tu pourras changer de fabricant de micro du jour au lendemain sans être perdu alors que si tu utilises des outils comme STM32CubeMx, qui font gagner un temps fou, il y a peu de chance que tu sois capable de changer de fabricant un jour.
    Là où il n'y a pas de solution, il n'y a pas de problème.

  3. #3
    invite75c2964e

    Re : bibliothèques de périphériques pour stm32

    Bonjour Vincent PETIT, tout d'abord merci d'avoir pris le temps de me répondre, dans les projets universitaires nous sommes obligés d'utiliser cubemx, je veux savoir est ce que je peux combiner HAL et CMSIS pour programmer ma carte stm32, car les bibliothèques des composants (dht11/dht22, lcd...) que je trouve sur google sont écrites en CMSIS.

    P.s: je suis un débutant je ne peux pas écrire ces bibliothèques tout seul

    merci

  4. #4
    Vincent PETIT
    Animateur Électronique

    Re : bibliothèques de périphériques pour stm32

    Citation Envoyé par Leond95 Voir le message
    dans les projets universitaires nous sommes obligés d'utiliser cubemx,
    Ok

    Citation Envoyé par Leond95 Voir le message
    je veux savoir est ce que je peux combiner HAL et CMSIS pour programmer ma carte stm32, car les bibliothèques des composants (dht11/dht22, lcd...) que je trouve sur google sont écrites en CMSIS.
    Alors il n'y a pas de problèmes puisque la couche HAL dans CubeMx repose déjà sur CMSIS.

    Nom : STM32Cube_Overview.png
Affichages : 662
Taille : 128,9 Ko

    J'ai un peu de mal à comprendre ce que tu veux faire ? Si tu as des bibliothèques (avec des .c et des .h) qu'est ce que tu veux faire et quel est le problème ?
    Là où il n'y a pas de solution, il n'y a pas de problème.

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

    Re : bibliothèques de périphériques pour stm32

    J'ai un peu de mal à comprendre ce que tu veux faire ? Si tu as des bibliothèques (avec des .c et des .h) qu'est ce que tu veux faire et quel est le problème ?
    je dois realiser un mini projet pour mesurer la température et l'humidité à l'aide de dht22, si pour ça je demande est ce que je peux utilisé la bibliothèque cmsis de dht22 avec cubemx sinon j’essaie d'écrire une

  7. #6
    Vincent PETIT
    Animateur Électronique

    Re : bibliothèques de périphériques pour stm32

    Comme CubeMx est basé sur CMSIS, dès que tu vas écrire #include "stm32l4xx.h" (CMSIS Core) la bibliothèque dht22 devrait être utilisable.
    Là où il n'y a pas de solution, il n'y a pas de problème.

Discussions similaires

  1. bibliothèques graphiques pour simulation en physique ?
    Par invitea0f2d7f7 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 13/03/2017, 12h09
  2. outil SWO pour STM32
    Par invite53d4ce08 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 04/06/2015, 18h06
  3. Composants minimum pour STM32
    Par invite8699d527 dans le forum Électronique
    Réponses: 14
    Dernier message: 15/10/2011, 21h54
  4. Outils pour STM32
    Par Toufinet dans le forum Électronique
    Réponses: 3
    Dernier message: 27/05/2010, 15h51
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...