marți, 17 martie 2020

Functionare corecta comunicatie pe i2c la placile de dezvoltare cu STM32F103

   Dupa ce m-am tot chinuit cateva ore cu rezolvarea problemei de comunicare bidirectionala prin i2c, am zis sa incerc si varianta sa inlocuiesc libraria Wire cu una care se indica ca functioneaza bine.
   Libraria Wire pentru STM32F1xx vine separat de cea clasica, la mine ea este in subdirectorul C:\Users\niq_ro\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries.
   Am gasit pe Github o librarie de parea ok, adresa ei fiind https://github.com/stm32duino/Arduino_Core_STM32/tree/master/libraries/Wire
dar pentru a putea o putea descarca usor, luat toate librariile modificate de la https://github.com/stm32duino/Arduino_Core_STM32
   Am descarcat arhiva, am mutat libraria Wire, pentru cazul ca nu merge cea noua, apoi am copiat noua librarie.
   Am testat apoi sketch-ul clasic de cautare adrese/dispozitive pe i2c numit i2c_scanner ce se gaseste in materialul de pe site-ul Arduino.
avand doar afisajul cu adaptor
   Am incarcat si am gasit adresa adaptorului pentru afisajul LCD1602, ce il testasem in articol precedent.

   Rezultatul mi-a dat sperante, asa ca am conectat receptorul TEF6686 si afisajul LCD2004 cu nterfata i2 si am dat scanare:
   Ulterior, am facut mici modificari si am un radio functional cu TEF6686 controlat cu o placa cu STM32F103
   Curand o postez si articolul cu acest radio, dar mai am de lucru pentru a fi sigur ca e in regula si e foarte stabil.

2 comentarii:

  1. In ceea ce priveste placile de dezvoltare STM32 exista doua "kit-uri" de dezvoltare pentru Arduino IDE, intre care se face confuzie:
    - https://github.com/stm32duino/Arduino_Core_STM32 dezvoltat oficial de STMicroelectronics, se bazeaza pe bibliotecile oficiale HAL si LL pentru STM32;
    - https://github.com/rogerclarkmelbourne/Arduino_STM32 este derivat din libmaple de catre Roger Clark. Aceasta biblioteca (https://github.com/leaflabs/libmaple) este una veche, ce nu mai este actualizata.

    Din ce vad in articol, se pare ca folositi kitul Boards de la Roger Clark si ati inlocuit biblioteca Wire din acesta cu biblioteca Wire din kitul oficial. Si eu am avut mai demult probleme cu I2C-ul folosind acelasi kit de dezvoltare. Am trecut insa la celalalt (Boards Manager URL: https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json) care vine cu biblioteca Wire cea buna. Folosesc ST-Link pentru upload, dar exista si optiune pentru upload prin port serial. Necesita instalarea software-ului STM32CubeProgrammer.

    Eu am scris (in engleza) despre configurarea Arduino IDE aici: https://www.onetransistor.eu/2020/01/stm32-bluepill-arduino-support.html .

    RăspundețiȘtergere
    Răspunsuri

    1. multumesc mult pentru informatii... o sa testez si va tin la curent (y)

      Ștergere