Accéder au contenu principal

Tribulations autour d'une pile RTC en SPI (MCP7951x) et d'un STM32

Tribulations autour d'une pile RTC en SPI (MCP7951x) et d'un

Tribulations autour d'une pile RTC en SPI (MCP7951x) et d'un STM32

Hello,

Voilà quelques jours que je galère autour d'une pile RTC (un MCP79510 monté sur une carte RTC5 click de chez Mikro) qui fonctionne en SPI avec ma carte Nucleo-L152RE. Pour l'instant, ça ne fonctionne pas, mais voici ce que j'ai fait et les idées que j'ai.

Paramètrage de la carte Nucleo STM32

J'utilise STM32CubeMX pour générer mon code. Je suis sous Mac, et j'ai utilisé ce guide pour monter ma stack de dév.

En me basant sur les conseils du livre A la découverte des cartes Nucleo au chapitre 8, j'ai paramétré ma carte avec une liaison SPI et une liaison UART pour le debug. Puis je génère mon code en mode Makefile pour coder avec Visual Studio Code.

Informations sur le MCP79510

On trouve évidemment le datasheet facilement et en plus, on trouve chez MikroElektronika des exemples de code en C (mais pour microcontrôleur PIC). Donc, on a de quoi lire, et en plus venant du constructeur, on peut se dire que ça va rouler. Bon, je précise quand même que je suis un newbie autodidacte, donc pas un professionnel du domaine. Ah, je n'ai pas trouvé en googlant de code tout fait.

Démarche

Je suis donc parti du code existant pour les PIC en adaptant au framework HAL utilisé par STM et généré par CubeMX. Ma liaison UART fonctionne, et j'ai vérifié 15 fois au moins mes connections pour le SPI.

J'ai recodé les fonctions ClearRtc, ReadTime, SetTime et Start_RTC que j'appelle dans cet ordre :

  • ReadTime,
  • ClearRtc,
  • SetTime,
  • StartRtc.

Puis j'appelle ReadTime dans la boucle while afin de voir si le temps change.

Problèmes rencontrés

Et là, c'est le drame, ça ne marche pas... 🤯 Ma variable reste à 0x00000000, parfois elle change pour quelques secondes (il y a 2 autres valeurs que la variable prend, mais je ne les ai pas noté...)

Idées de remédiation

Bien que je me sois basé sur le code source du constructeur, j'ai peut être fait des erreurs, je dois vérifier ça.

L'ordre dans lequel j'appelle les fonctions n'est peut être pas le bon, j'avais noté quelque chose dans le datasheet à propos du changement de date, il y les cristaux à gérer, pas sûr que mon code le fasse.

Conclusion (provisoire)

J'ai pas mal de souci, je suis pas une star en C (pas mal d'erreur sur les types dans l'appel des fonctions) mais j'apprends beaucoup 😋.

La suite dans un prochain épisode 😎

Commentaires

Posts les plus consultés de ce blog

Débuter avec Lopy 4

Débuter avec Lopy 4 Débuter avec Lopy 4 Je profites de cette période de confinement pour ressortir de mon placard mon Lopy4 qui trainait dans un tiroir. J'ai avec une carte d'extension Pytrack. A noter qu'il est bien pratique d'avoir une des cartes d'extension pour pouvoir s'y connecter facilement. Les barbus pourront toujours s'y connecter directement avec un adaptateur USB-série, mais ici on fait la méthode simple, on prend une des cartes d'extension.
Mettre à jour la carte d'extension Bon, comme je ne sais plus dans quel état j'ai laissé mon matos, une (re)mise à jour s'impose. On commence par le Pytrack, la page officielle est bien faite. Je résume pour tous ceux (comme moi) qui auront la flemme de tout lire, surtout si ça se passe bien.
Installer dfu-util : sudo apt install dfu-util Mettre à jour :
Débranchez le câble de la carteAppuyez et maintenez le bouton (S1 pour l'expansion board)Branchez le câble USB et attendez une seconde av…

Utiliser le ST-LINK V2 d'une carte Nucléo avec un autre STM32

Utiliser le STLINK-V2 d'une carte Nucléo avec un autre STM32Utiliser le ST-LINK V2 d'une carte Nucléo avec un autre STM32Hello,
Comme c'était Noël, je me suis offert un lot de STM32f103c8t6, également appelée Blue Pill (acheté sur Amazon pour bénéficier de la livraison Prime mais vous l'aurez pour moins cher sur eBay, à condition d'attendre le délai de livraison de plusieurs semaines...), ainsi que le livre Beginning STM32 qui explique comment mettre en oeuvre ces petites cartes avec des outils uniquement Open Source.Dès le premier chapitre, l'auteur nous explique qu'il nous faut un ST-Link V2 pour programmer la Blue Pill. Argh ! Dans ma précipitation à passer ma commande, je n'ai pas vu cette subtilité... Qu'à cela ne tienne, j'ai déjà une carte Nucleo qui, comme toute les cartes de ce type, intègre un programmateur ST-Link V2.Voyons comment mettre en oeuvre tout ça.Utiliser le ST-LINK V2 d'une carte Nucléo avec un autre STM32Présentation …

Utiliser un raspberry pi en mode headless

20191016-headless_raspberry_piUn raspberry pi sans tête 😱(C'est à dire sans écran ni clavier)Pourquoi faire ça ? En fait, parfois (ou même souvent), on a bien envie que notre petit Raspberry à tout faire soit mis dans un coin et qu'il fasse ce qu'on lui demande. Ça marche souvient bien, mais quand même, des fois, il faut bien s'y connecter pour mettre à jour le système ou voir pourquoi ça ne fait pas ce qu'on veut. Et si vous êtes un peu feignant comme moi (comme tout bon informaticien qui se respecte en fait), vous avez forcément la flemme de sortir l'écran, le câble HDMI et de tout connecter. Nous allons donc voir deux méthodes qui permettent de s'en passer.Matériel nécessaireun raspberry pi (voire un kit raspberry pi)une carte SDun adaptateur USB-TTLquatre câbles dupond (pour connecter le raspberry pi à l'adaptateur USB-TTL)Utiliser un raspberry pi en mode headlessMatériel nécessaireSSHJe connais mon adresse IPJe ne connais pas mon adresse IPConnexi…