Se afișează postările cu eticheta STM32. Afișați toate postările
Se afișează postările cu eticheta STM32. Afișați toate postările

miercuri, 18 martie 2020

Radio FM (RDS) cu TEF6686 si STM32F103

   In articolul precedent (Radio cu TEF6686) am folosit ca placa de dezvoltare modelul Arduino Mega clasic si, ulterior, Mega 2560 Pro, o varianta redusa ca dimensiuni a celei originale, dar rara ca raspandire.
   Am considerat ca implementarea pe o placa de dezvoltare cu STM32F103 este binevenita, deoarece are pret redus, usor de montat pe cablaj de test sau breadboard, etc.
   Conectarea este simpla, modulul radio cu TEF6686, care are adresa 0x64, si afisajul LCD1602 cu interfata i2c, ce are adresa 0x3F, dupa cum se vede daca cautam ce perifierice avem legate, cu programul i2c_scanner.
   Am pastrat comenzile din 6 butoane, configuratia fiind ca in sketch, doar ca am pus rezistente de 4k7 la +3,3V (rezistente de pull up), deoarece la alte teste anterioare, comanda de folosire a rezistentelor interne de pull-up nu au parut ca lucreaza. Cele 5 butoane au urmatoarea functionalitate: volum(crestere/scadere), cautatare autmata post radio (inainte/inapoi) si schimbare frecvnta cu pas de 0,1MHz (crestere/scadere).
    Pentrua putea folosi placa STM32F103 cu TEF6686, trebuie sa schimbati libraria Wire din locul unde s-a instalat acest model de placa, la mine localizarea este la C:\Users\niq_ro\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries.
cu cea de la https://github.com/stm32duino/Arduino_Core_STM32/tree/master/libraries/Wire
   Detalii se gasesc in articolul Functionare corecta comunicatie pe i2c la placile de dezvoltare cu STM32F103.
   Programul, care poate functiona si pe STM32F103, dar si pe Arduino Mega este TEF6686_1602i2c_v5 si include mai multe fisiere, cel de baza cu terminatia ino si altele ajutatoare. trebuie sa descarcati tot continutul din subdirector, pastrandu-i numele.
- github:
- local:

- in programul Arduino IDE:
   Am realizat 2 filmulete, din care se intelege mai usor ce am facut si cum functioneaza:
radio cu TEF6686 controlat cu STM32F103
RDS radio with TEF6686 and STM32F103
   Consumul mediu indicat de sursa de alimentare este de cca 240mA (variaza, in functie de modul de functionare: redare, cautare automata, reglaj manual, etc):
  Cateva poze:
   Instalarea placii STM32F103 si programarea acesteia se face cum am prezentat in articolul Placa de dezvoltare cu microcontroler STM32F103C8T6
   Deoarece am gasit in articolul STM32F103C8T6 board, alias Blue Pill o librarie pentru placa de dezvoltare, 
am desenat si schema radioului, ca e mai usor de inteles.

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.

luni, 16 martie 2020

Eroare "exec: "/bin/arm-none-eabi-g++": file does not exist"

   Vrand sa reiau testele si proiectele cu placile "blue pill" realizate cu microcontrolerul STM32F103 pe un calculator "fresh" pe care a fost instalat programul Arduino IDE versiunea 1.18.12, am urmat pasii ce ii indicasem in articolul "Placa de dezvoltare cu microcontroler STM32F103C8T6", doar ca avut neplacuta supriza sa primesc o eroare la compilare "exec: "/bin/arm-none-eabi-g++": file does not exist". 
   Am realizat ca mai trebuie instalat ceva, asa ca am "abuzat de google", vorba lui Vlad Gheorghe si am gasit artiolul STM32-Arduino -STM32f103c8t6 Programming Guide in care se mentioneaza ca mai trebuie instalate si placile de dezvoltare cu microcontrolere SAM  M3 
asa ca am dat sa se instaleze
pana am vazut
   Am compilat exemplul, care trebuia sa mearga, si am obtinut un rezultat ce il asteptam
asa ca am incarcat programul, obtinad, cum era de asteptat rezulat bun:
   Am mutat jumperul de programare, am apasat butonul de RESET si am incarcat programul de test, obtinand
am pus la loc jumperul pentru functionarea normala si ledul de pe placa palpaie
    Urmeaza sa testez diverse proiecte cu aceata placa...

vineri, 25 august 2017

Placa de dezvoltare cu microcontroler STM32F103C8T6

   In anul 2015 am achizitionat o placa de dezvoltare cu pret foarte bun (aproape 4$, la data aceea) tinand cont ca este cu un microcontroler pe 32 biti, cu frecventa de lucru de 72MHz (vedeti datasheet)... la prima vedere similara cu Arduino Due, cum ar fi Nano fata de Uno, sa zic. Din pacate, in acea perioada nu am gasit rapid informatii despre ea s-o folosesc cu programul Arduino IDE, asa ca a ramas sigilata punguta ei pana acum, cand din discutii cu Andrei Timofte, am zis s-o testez si eu.
   Am conectat placa conform indicatiilor din articolul How To Program STM32F103C8T6, dar am constatat ca nu se aprinde nici un led de pe placa de dezvoltare.
asa ca am legat ca in articolul ARDUINO GOES STM32, adica am scos firul de 3,3V de venea de la interfata USB-FTDI si am alimentat cu un cablu USB din calculator.
   Dupa ce ma urmarit schema placii prezentate in articolul mentionat anterior, am desfacut legaturile de realizate in prima faza si le-am conectat pe lateral
schema devenind
    In mod normal, cei 2 jumperi sun in pozitia O (in dreapta, cum se vede in poza de mai jos).
   Anterior, am facut sa am placile de dezvoltare cu STM32, descarcand de la https://github.com/rogerclarkmelbourne/Arduino_STM32 fisierul comprimat, l-m dezarhivat si l-am pus in subdirectorul hardware din cel in care este instalat programul Arduino IDE:

   Dupa ce se incarca sketch-ul si se configureaza programul Arduino pentru placa noastra
Board: Generic STM32F103C series
‘Variant: STM32F103C8 (20k RAM, 64k Flash)’
Upload method: Serial
‘Port: cel alocat interfetei USB-FTDI de PC’
se trece jumperul BOOT1 pe pozitia 1
si se apasa butonul REST (RESET)
   Se apasa butonul de UPLOAD (incarcare)
   Se pune jumperul BOOT1 in pozitia normala de functionare si apoi placa functioneaza cu programul incarcat.
   Deoarece led-ul intern conectat la PC13 este legat la plus, logica este inersa, adica la comanda de HIGH e stins, respectiv la LOW e aprins, am modificat sketch-ul BLINK prezentat in articolul How To Program STM32F103C8T6 realizand un efect stroboscopic, dupa cum se vede in filmuletul pe care l-am facut. Sketch-ul modificat este STM32F103C8_blink.ino. Am mai modificat si testat sketch-ul din exemplele incarcate odata cu partea de placa de dezvoltare cu STM32, cel numit BlinkNCount, am meu are definit ledul de pe placa la PC13, cum e in cazul real. Acest al doilea sketch testat este STM32F103C8_BlinkNCount.ino.
   Filmuletul de care ziceam , mai sus, se numeste STM32F103C8 Arduino IDE