Avtor: Brian Millier
Pri PSoC mikrokontrolerjih do vključno družine PSoC5LP se je za razvoj programske opreme uporabljal programski vmesnik PSoC Creator IDE.
Kot sem že omenil, sem postal precej spreten pri uporabi tega IDE in menim, da je to eden najbolje zasnovanih IDE/orodnih verig, ki so na voljo. Ko je bila predstavljena družina PSoC6, je podjetje Cypress Semiconductor že predstavilo Modus Toolbox (MTB), ki je bil zasnovan za delo s PSoC6 mikrokontrolerji. MTB je bil pravzaprav edini način za razvoj kode za družino PSoC6 (z uporabo orodnih verig Cypress/Infineon). Domnevam, da je bila uvedba MTB povezana tudi z dejstvom, da je postala privzeta veriga orodij za številne druge izdelke Cypress/Infineon:
AIROC Bluetooth in Wi-Fi RF modula.
PMG Module (USB EZ-PD Power Delivery krmilnik)
PSoC krmilnik MCU-jev (krmiljenje motorjev itd.)
Traveo MCUs (zmogljivi avtomotive infotaiment MCU-ji)
CYUSB4024 (USB3, USB-C zmogljivi krmilniki)
XMC MCUs (Infineon-ova lastna linija industrijskih MCU-jev)
PSoC4 družina MCU-jev (lahko razvijete tudi s programom PSoC Creator)
Ta vsebina je samo za naročnike
MTB je sestavljen iz cele vrste pripomočkov/aplikacij, ki jih je mogoče zagnati v samostojnem načinu grafičnega uporabniškega vmesnika ali iz ukazne vrstice (CLI). Tudi samo aplikacijo MTB IDE je mogoče naložiti s pomočjo ogrodja Eclipse ali kot razširitev za Visual Studio Code (VSC). Za razliko od IDE, ki so na voljo za MCU-je nekaterih drugih podjetij, je MTB mogoče zagnati iz operacijskih sistemov Windows, macOS ali Linux. Čeprav mi je bil IDE PSoC Creator zelo všeč, je bil na voljo samo za Windows, kar zame ni težava, saj je Windows moj primarni operacijski sistem. Zgoraj omenjene pripomočke/aplikacije MTB je mogoče preprosto „priklicati“ iz IDE Eclipse ali VSC in to je edini način, kako sem jih osebno uporabljal.
Za razvoj drugih družin MCU uporabljam Visual Studio Code (VSC). V bistvu VSC zagotavlja domišljijski okvir urejevalnika in je odvisen od razširitev, ki mu omogočajo, da deluje kot popoln IDE za različne programske jezike na družinah MCU različnih proizvajalcev. Na splošno naj dodajanje razširitve v VSC ne bi vplivalo na druge razširitve, ki jih že uporabljate. Prebral sem poročila o primerih, ko lahko pride do konfliktov, vendar se sam s tem še nisem srečal.
Odločil sem se, da bom MTB namestil z uporabo ogrodja Eclipse IDE, s čimer sem zagotovil, da ne bom naletel na težave z obstoječo namestitvijo VSC. To zame ni bila lahka odločitev, saj sem s težavo obvladal ogrodje Eclipse IDE, ki ga uporabljajo nekatere druge družine MCU. Namestitev MTB je potekala dokaj gladko, čeprav je precej zastrašujoče videti, koliko tisoč datotek in map je dodanih med namestitvijo. Preden boste lahko prenesli namestitvene datoteke, boste potrebovali Infineonov uporabniški račun. V preteklosti sem že namestil prejšnjo različico MTB (preden je Infineon kupil podjetje Cypress Semiconductor). Vendar nisem mogel uporabiti svojega Cypress računa in sem moral pri Infineonu ustvariti novega.
Po namestitvi sem na namizju našel številne ikone – verjetno so bile tam nameščene privzeto, morda sem pa odkljukal polje, ki dovoljuje njihovo namestitev. Te ikone so bile naslednje:
Eclipse IDE za Modus Toolbox (ni prisoten, če ste izbrali VSC za IDE.)
Modus Toolbox Setup. To je v bistvu del postopka namestitve, vendar vam omogoča, da pozneje dodate nekaj dodatnih funkcij/uporabnosti. To pomeni, da gre za pripomoček za konfiguracijo.
PSoC Programator. Nisem prepričan, ali je bila ta ikona prisotna že po namestitvi, vendar se bo pojavila takoj, ko boste posodobili pripomoček PSoC Programmer ali ugnezdeno programsko opremo naprave KitProg3 Debug na plošči CY8CKIT-062S2-AI.
Modus Toolbox Nadzorna plošča. To je nadzorna plošča, ki povezuje večino, če ne kar vse vire, ki so na voljo v zvezi z MTB IDE in strojno opremo razvojne plošče.
Modus Toolbox Edge Protect. To ni bilo pregledano, vendar zajema varnostne funkcije pri razvoju IoT naprav z Infineonovimi MCU-ji.
Če ste tako kot jaz, boste zagnali Eclipse IDE za MTB in poskušali ugotoviti, kako naložiti program in ga prenesti na ploščo CY8CKIT-062S2-AI. Predlagam, da tega ne počnete! MTB se precej razlikuje od drugih IDE, ki sem jih vajen, in na začetku nisem mogel narediti ničesar. Na sliki 1 je zaslonska slika okolja Eclipse IDE za MTB.
Čeprav sem uporabljal polno funkcionalne IDE za MCU drugih podjetij, redno uporabljam Arduino IDE zaradi:
enostavnosti uporabe,
podpore za številne MCU-je, s katerimi redno delam,
nedvomno največje število uporabnih knjižnic, ki so na voljo.
Predlagam, da najprej zaženete MTB nadzorno ploščo z ikone na namizju. Izberite Modus Toolbox Documentation. Ker to nadzorno ploščo že imate, lahko preskočite „Priročnik za namestitev paketa“, saj ste to že storili. Koristno pa je, da preberete „Pregled novosti v Modus Toolboxu“ in „Vodnik za hiter začetek“. Ko do njiju dostopate z nadzorne plošče, sta to spletna PDF dokumenta – shranil sem ju v mapo na trdem disku, da ne bi pozabil, kje na spletu sem ju dobil.
Ko prvič odprete okolje Eclipse MTB IDE, v njem seveda privzeto ni naložen noben projekt. Po tem prvem odprtju pa bo privzeto naložen zadnji projekt, s katerim ste delali. Slike zaslona prvega zagona nimam, vendar je del zaslona, na katerega se morate osredotočiti, hitra plošča (angl. Quick Panel), kot je prikazano na sliki 2.
Oglejmo si nekaj ponujenih možnosti
Nova Aplikacija. To me je sprva zavedlo. Domneval sem, da je to izbira, ki jo izberete za ustvarjanje popolnoma nove aplikacije (imenovane tudi projekt). Ker sem s ploščo CY8CKIT-062S2-AI šele začenjal, nisem mislil, da je to izbira, ki jo moram izbrati. Vendar pa je to verjetno točka, kjer želite začeti. Pri tej izbiri morate najprej izbrati razvojno ploščo, ki jo uporabljate. Nato vam je na voljo izbira Templates (Predloge). Te predloge so podobne vzorčnim skicam, ki bi jih videli v Arduino IDE, če bi izbrali meni Primeri. Naj omenim, da imate ob izbiri predloge možnost, da ta projekt preimenujete v nekaj za vas pomembnega. Ker gre za primere, ki jih boste verjetno prilagodili za svojo specifično uporabo, priporočam, da tu navedete smiselno ime, saj menim, da je pozneje zelo težko preimenovati projekt. Slika 3 prikazuje različne skupine predlog, ki so na voljo za to ploščo.
Na voljo je tudi zavihek za vnos novega imena aplikacije, kot je navedeno zgoraj.
V Arduino IDE so primeri razdeljeni v tri kategorije – ena od njih je „Primeri, ki delujejo z vašo ploščo“. Predvidevali bi, da bodo Predlogi, ki jih MTB navaja tukaj, spadali v to kategorijo, saj ste jih pravkar opremili z razvojno ploščo Infineon, ki jo uporabljate. Zato bi moral MTB poznati MCU, ki ga uporabljate, in vse periferne naprave na ploščici.
Po mojih izkušnjah z MTB in z CY8CKIT-062S2-AI ploščo sem ugotovil, da so nekatere od teh predlog delovale odlično, nekatere pa sploh niso delovale. Čeprav bom to podrobneje opisal pozneje, je tu namig. Ko izberete predlogo, se naloži celoten projekt za to predlogo – tj. vse, kar potrebujete za izgradnjo projekta, vključno z datoteko makefile. Na glavnem zaslonu urejevalnika bo najprej prikazana datoteka readme.md (ki je enaka datoteki, ki jo najdete v skladišču github za ta projekt). Pozorno si oglejte to besedilno datoteko, saj vsebuje razdelek, v katerem je opisano, s katerimi razvojnimi ploščami bo ta projekt deloval. Predvidevali bi, da bo navedena vaša ciljna razvojna plošča, saj ste MTB povedali, katero ploščo uporabljate. Pri mnogih predlogah, ki sem jih preizkusil, ni bilo tako. Kadar koli ni bilo navedene plošče CY8CKIT-062S2-AI, program ni deloval.
Izberite predlogo, ki deluje s ploščo CY8CKIT-062S2-AI. Nato bo MBT šel na internet in naložil vse, kar je potrebno za ta projekt, in to iz repozitorija github za to predlogo/projekt (ter drugih virov github v primeru odvisnosti knjižnic). To bo trajalo nekaj časa – še posebej pri prvem projektu, saj še nimate nobene od potrebnih datotek (in potrebnih je veliko datotek!). Med tem postopkom boste videli prikazan dolg tok operacij, ki se izvajajo.
Na tej točki nisem bil prepričan, ali je bil projekt zgrajen ali ne, saj so se vse operacije tako hitro pomaknile z zaslona. Ko je projekt končan, se v oknu Napredek prikaže „ni operacij za prikaz“, zgodovina opravljenega dela pa ne ostane. Ikoni za Gradnja in Čiščenje v oknu Projekt pod Hitro ploščo sta sivi. Podobno nisem našel nobenih elementov menija ali ikon za prenos kode na CY8CKIT-062S2-AI ploščo.
Na tej točki je na zaslonu urejevalnika prikazana datoteka Readme.md, kot smo že omenili. Naslednje, kar morate storiti, je, da greste v Raziskovalec projektov na levi in razširite projekt, ki ste ga pravkar naložili. Za zdaj se ne ozirajte na vse mape in kliknite samo na main.c. To bo v oknu urejevalnika prikazalo glavno datoteko kode projekta.
Zdaj se okno Project Window čudežno preimenuje v ime projekta, ikoni Build in Clean v tem oknu pa postaneta aktivni. Zdaj lahko zgradite projekt – po tem se bo prikazalo sporočilo „Build Complete“ (Gradnja končana), ki mu bo sledil pomnilniški zemljevid projekta in povzetek, koliko pomnilnika je na voljo v MCU in koliko ga je bilo porabljenega. To si lahko ogledate na sliki 4.
V praznem oknu za zagon bodo zdaj na voljo tudi izbirni elementi, kot so:
d Debug (KitProg3)
Program
Ustvarjanje lansiranja za “program name”
Izraz Launch je način, s katerim MTB opisuje izbiro, ali želite svoj projekt vnesti v Flash MCU pomnilnik ali vnesti alternativno različico, ki je konfigurirana za razhroščevanje. Nato izberete možnost Launch:
“project name” Program
Vaš projekt bo prenesen na CY8CKIT-062S2-AI ploščo in izveden. V oknu konzole se bo med brisanjem in utripanjem prikazoval preprost „stolpčni graf“. Če je postopek uspešen, se prikaže sporočilo, kot je prikazano na sliki 5.
Če vaš projekt vsebuje sporočila o stanju, poslana z uporabo funkcije printf(), lahko odprete serijski terminal, kot je Tera Term, in si jih ogledate. Morda boste morali uporabiti gumb Reset na plošči, če program za serijski terminal ni bil odprt, ko je bil postopek utripanja končan.
Omeniti moram nekaj podrobnosti o napravi KitProg3 Debug na plošči CY8CKIT-062S2-AI. Ta razhroščevalnik je izveden z enoto PSoC5LP MCU, ki je nameščena na spodnjem delu plošče. Z računalnikom se poveže prek vhoda USB-C poleg U6 (ne tistega poleg vtičnice za baterijo). KitProg3 lahko deluje v enem od dveh načinov:
DAP BULK: To deluje z Eclipse IDE za utripanje, razhroščevanje in UART/I2C povezave. To je najhitrejši način programiranja. Rdeča LED-ica UART v bližini vtičnice USBC za razhroščevanje neprekinjeno sveti.
DAPLink: To predstavlja pogon za množično shranjevanje (USB Flashdrive), na katerega lahko povlečete in spustite hex datoteke. V tem načinu LED-ica UART narašča na frekvenco 2 Hz.
Tipka na spodnjem delu plošče PSoC6S2-AI preklaplja med obema načinoma. Upoštevajte, da mora biti plošča v načinu CMSIS DAP BULK, da deluje z Eclipse IDE.
Po pomoti sem jo spravil v način DAPLink – v nekem trenutku sem pritisnil stikalo na dnu plošče in pozneje ugotovil, da je plošča v sistemu Windows priklicala Flashdrive, kar pomeni, da je bila v načinu DAPLink. Ko sem zagnal aplikacijo Modus Toolbox Programmer in sam nisem storil ničesar, se je Kitprog3 vrnil v način CMSIS DAP BULK. V načinu CMSIS DAP BULK je v Upravitelju naprav Windows viden le most Kitprog3 UART (v razdelku Ports).
Uvoz obstoječe aplikacije na mesto.
Tega nisem preizkusil, vendar domnevam, da bi lahko projekt, ki ga najdete v Githubu in uvozite v mapo v računalniku, uvozili v IDE Eclipse kot nov projekt. Nisem imel nobenega takega projekta, ki bi ga lahko preizkusil, v uporabniškem priročniku MTB pa nisem našel nobenih podrobnosti o tej hitri izbiri plošče.
Iskanje primerov kode na spletu.
To vas pripelje le do Infineon github skladišča, ki vsebuje primere programov, ki jih lahko uporabite v MTB. Ti primeri so razdeljeni v različne kategorije (Začetek, Grafika, Strojno učenje itd.). Ko izberete kategorijo, pa so vsi primeri navedeni v navidezno naključnem vrstnem redu in poleg PSoC6 vsebujejo tudi primere za številne druge Infineonove MCU-je. To po mojem mnenju ni posebej uporabno.
Drugi dve izbiri na hitri plošči sta samoumevni in ju tu ne bom opisoval.
Lokacije datotek
Ko ste sestavili svoj prvi projekt, se verjetno sprašujete, katere datoteke so vključene in kje se nahajajo. Vsi vaši projekti bodo v posameznih mapah v mapi z imenom ModusToolboxWorkspace (če ste med namestitvijo MTB izbrali privzeto lokacijo). Ta mapa se bo nahajala na naslovu C:Users\.
Morda se sprašujete, kje se nahajajo datoteke, ki jih je mogoče prenesti na PSoC MCU. Ko v hitri plošči uporabite izbiro Launch Program (Zagon programa), se programiranje izvede samodejno, zato vam tega ni treba vedeti. Vendar je lokacija hex in elf datotek podmapa v mapi vašega projekta na naslovu:
project name/build/last_config/
.elf (plus hex and d files)
(upoštevajte, da vidim last_config, v dokumentih pa sta kot mapi navedeni release in debug).
Predloge (Templates) – nekatere delujejo, nekatere pa ne
Čeprav nisem mogel preizkusiti vseh predlog, ki se prikažejo, ko izberete CY8CKIT-062S2-AI, je tu seznam tistih, ki sem jih preizkusil in so delovale:
Hello_World. Predvidevali bi, da bo vsaj ta deloval – deluje in pravilno pošlje sporočilo na serijska USB vrata.
PCM_PDM_AUDIO. Ta posluša oba vgrajena MEMS mikrofona in na serijska USB vrata izpiše grob stolpčni diagram, sestavljen iz ASCII znakov. Spremenljivki .left_gain in .right_gain je treba spremeniti s privzetih ničelnih vrednosti na celo število (do 20, v dB), da bi dosegli uporabno ojačenje zvoka.
WiFi_Scan. Ta program bo poiskal aktivne dostopne Wi-Fi točke v bližini in jih navedel na seznamu ter njihovo moč signala (RSSI).
ADC_Basic. Ta program deluje, vendar le, če ADC vhod določite na naslednji način:
#define VPLUS_CHANNEL_0 (P10_0)
Zdi se, da z ADC deluje samo Port10, na J17 pa sta na voljo samo priključka P10.0 (UART Rx) in P10.1 (UART Tx).
Upoštevajte, da so Port priključki na plošči označeni kot Px.y, vendar jih morate v svojem programu navesti kot Px_y!
HAL_adcread. Pri tem se uporabljajo HAL rutine na višji ravni. Tudi to deluje, če vhod ADC nastavite na P10_0 ali P10_1 (Vrstica 122).
DEEPCRAFT_Deploy_Model_Audio. Ta program uporablja ML model za prepoznavanje govora, ki ga je že ustvaril Imagimob. Ta model je v datotekah model.c in model.h (v mapi models). Ta program deluje in izpiše seznam vrednosti prepoznavanja za približno 20 besed. Uporabiti morate aplikacijo Tera Term monitor, hitrost prenosa podatkov nastaviti na 115200, tip terminala pa na VT100. S tem omogoči, da vgrajeni kontrolni znaki v serijskem izhodnem toku počistijo zaslon med meritvami, kar omogoča dokaj stabilen prikaz. Ta zaslon ne deluje dobro s serijskim Arduino terminalom.
Opazil sem, da je bilo ojačenje mikrofona nastavljeno na 20, kar je najvišja raven, ki jo lahko nastavite z uporabo Infineonovega primera MicroPython „PDM Audio MicroPython“ (ki sem ga omenil v razdelku MicroPython v 1. delu). V tem programu za primer MicroPython je to povzročilo signale zelo nizke ravni (tj. neuporabne). Vendar je bil v tem programu DIGITAL BOOST FACTOR nastavljen na 10. Če pogledamo datoteke z oblikami valov programa MicroPython, bi dodatno digitalno ojačenje 10 dvignilo obliko valov na uporabno raven. Vendar v primeru programa MicroPython to ni predvideno.
Prepoznavanje besed v tem vzorčnem primeru DEEPCRAFT je bilo komaj sprejemljivo. Prav tako niso bile prepoznane vse besede. Vendar moramo biti pošteni model je bil naučen na glasovih, ki niso bili moji.
DEEPCRAFT_Deploy_Model_Radar. Datoteka Readme.md za ta program vsebuje kratek videoposnetek delovanja tega programa. Prikazuje razumno prepoznavanje dveh gest: Potisni in Obkroži. Program mi je uspelo pripraviti za delovanje, vendar je bilo njegovo prepoznavanje teh dveh gest zelo nenatančno, ko sem ga preizkusil sam. V primerjavi z modulom Seeed Studio MR24HPC1, ki sem ga uporabil v nedavnem projektu, ti rezultati niso bili tako dobri. Modul Seeed Studio vsebuje MCU, ki je vnaprej programiran za upravljanje njegovega radarskega modula 24 GHz. Čeprav modul MR24HPC1 ni deloval tako dobro, kot sem upal, je dosegel boljše rezultate od rezultatov, ki sem jih dobil z modulom PSoC6S2-AI, na katerem je bil nameščen programski primer DEEPCRAFT Deploy Model Radar.
Poskusil sem z naslednjimi predlogami in ugotovil, da ne delujejo:
emFile Filesystem
Littlefs Filesystem
Serial_Flash_Read_Write
Wi-Fi_Onboarding_using_Bluetooth
I2S_Audio (na plošči ni I2S naprav ali priključkov za zunanjo napravo)
V primeru treh programov za datotečni sistem sem ugotovil, da so se definicije vrat/priključkov za vrata QSPI pomnilnika NOR Flash (navedene v uporabniškem priročniku CY8CKIT-062-AI) ujemale z definicijami vrat/priključkov v samih programih. Vendar so vsi trije programi prikazali sporočila o napakah na zelo nizki funkcijski ravni (tj. formatiranje Flash pomnilnika itd.).
Program Wi-Fi Onboarding je pravilno pregledal dostopne Wi-Fi točke. Tako IOS telefon kot Android sta prepoznala Bluetooth povezavo s ploščo CY8CKIT-062-AI, vendar nobeden od njiju ni deloval, kot je opisano v datoteki Readme.md za ta program.
Med pisanjem predhodnih opisov različnih programov sem želel, da bi lahko pri razlagi sprememb, ki jih je bilo treba vnesti v programe, navajal številke vrstic. Okno Eclipse IDE Editor privzeto ne prikazuje številk vrstic. Če ste navajeni, da so številke vrstic prikazane, je tukaj opisano, kako to storite. V menijski vrstici IDE izberite:
Window > Preferences > General >
Editors > Text Editors
in izberite “Show Line Numbers (na 1/2 poti navzdol pri spisku možnosti). Nato kliknite Apply in Close.
Nastavitev PSoC6 perifernih blokov z uporabo Device Configurator
Zelo me je navdušil način, kako PSoC Creator aplikacija omogoča konfiguriranje programabilnih blokov z desnim klikom na njih v oknu Top design. Modus Toolbox vsebuje tudi pripomoček Device Configurator. Nekaj časa sem potreboval, da sem ugotovil, kako dostopati do programa Device Configurator, saj zanj ni ne menijske postavke ne ikone. Če v IDE Eclipse z desno tipko miške kliknete na ikono projekta v Raziskovalcu projektov, boste videli ikono z oznako Modus Toolbox. Če to ikono razširite, boste videli seznam vseh razpoložljivih MTB pripomočkov, kot je prikazano na sliki 6.
Če izberete možnost Device Configurator 5.30, se zažene Device Configurator program, kot je prikazano na sliki 7.
Različni deli enote PSoC6 MCU, ki jih lahko konfigurirate, so na sliki 7 prikazani kot zavihki v modrem pravokotniku. Čeprav so vse te funkcije pomembne, bom na kratko obravnaval samo možnost Peripherals.
Na sliki 7 boste videli, da sem med analognimi perifernimi napravami izbral 12-bitni ADC SAR. Na desni strani je okno, v katerem so navedeni vsi parametri, ki jih lahko konfigurirate z uporabo drsnika na desni strani. Tukaj je prikazan le majhen del teh parametrov, vendar lahko vidite, da je vhod VPlus Ch0 nastavljen na analogni vhod P9(0). Ta je označen kot [USED] in na njem je majhna ikona, ki je videti kot verižni člen. Priznam, da sem novinec v MTB in PSoC6, vendar menim, da rumeni krog označuje, da P9.0 ni idealna izbira, saj je že vnaprej dodeljen. Ikona verižnega člena vas preusmeri v zavihek Pins, ki vam omogoča konfiguriranje tega IO pina. Poskušal sem, da bi ADC deloval s priključkom 9, saj je vseh 8 priključkov porta 9 na voljo na konektorju J18. To mi ni uspelo, uspelo pa mi ga je pripraviti za delovanje na portu 10, kot je omenjeno na drugem mestu v tej seriji člankov.
Ko končate konfiguriranje periferne naprave (ali GPIO priključka, ure itd.), lahko s klikom na zavihek Predogled kode, označen z rdečo barvo, pregledate ustvarjeno kodo. Na tej točki je ta koda namenjena le vaši izobraževalni radovednosti. Ni bila shranjena v nobeno knjižnico/odvisno datoteko(-e), shranjeno(-e) v delovni mapi vašega projekta. Ko izvedete File > Save (Datoteka > Shrani), se bodo konfiguracijske datoteke shranile v mapo delovnega prostora vašega projekta, in sicer na naslednjo lokacijo mape:
bsps > TARGET_APP_CY8CKIT-062S2-AI >
config > GeneratedSource
Če ste konfigurirali periferno napravo, se bosta ustvarili datoteki cycfg_peripherals.c & h. Če želite uporabljati periferno napravo, v main.c vstavite naslednje:
init_cycfg_peripherals();
Potrebnih bo tudi nekaj drugih vrstic kode za dejanski klic te init kode, ki jo generira konfigurator, in zagon periferije. To se razlikuje glede na periferno napravo, zato si oglejte primere v uporabniških priročnikih.
Infineon navaja, da lahko pripomoček Device Configurator zaženete tudi iz lupine Modus Shell z vnosom ukaza „make device-configurator“. To sem preizkusil tako, da sem zagnal program Modus Shell (najdete ga v meniju Windows Start > Application pod Modus Toolbox > Modus Shell). Vendar se je ob vnosu tega ukaza pojavilo sporočilo o napaki „ No rule to make target ‚device-configurator‘. Stop.“ .
Poskusil sem tudi odpreti terminalsko okno, ko sem se pomaknil v mapo, ki vsebuje enega od mojih projektov, in vnesel ta ukaz, vendar se je pojavilo še eno sporočilo o napaki „The term ‚make‘ is not recognized.“ (Izraz ‚make‘ ni prepoznan). Očitno mi tu manjka nekaj pomembnega, vendar tega nisem mogel razrešiti, ko sem pregledal različne MTB dokumente.
PSoC knjižnice periferije – PDL in HAL
PDL pomeni knjižnico perifernih gonilnikov, HAL pa strojno abstrakcijsko plast. Obe knjižnici sta na voljo za periferne bloke PSoC6. Ne da bi se spuščali v podrobnosti, so knjižnice PDL knjižnice nižje ravni, ki so tesno povezane z določenim PSoC MCU, ki ga uporabljate. HAL knjižnice so knjižnice na visoki ravni, lažje za uporabo, ki abstrahirajo od posebnih podrobnosti PSoC, ki jih uporabljate. V obeh primerih se inicializacija določene periferne enote izvede z definiranjem strukture, ki vsebuje potrebne parametre. Oglejte si sliko 8. Vidite lahko, da so rutine za inicializacijo HAL veliko preprostejše.
Za takšne stvari, kot so uporabljena ura in kateri GPIO priključki so dodeljeni periferni napravi, pregledno poskrbi HAL knjižnica, vendar je treba te stvari ročno konfigurirati pri uporabi PDL knjižnic. V aplikaciji lahko uporabite kombinacijo obeh knjižnic (za različne periferne bloke), če določena periferna naprava zahteva posebno konfiguracijo, ki je HAL knjižnica ne obravnava.
HAL knjižnice so samo zgrajene na vrhu PDL knjižnic, zato bo, če jih uporabljate, zasedla veliko več Flash pomnilnika. Pomnilnik pri PSoC6 na splošno ni velik problem, zato se HAL knjižnice rutinsko uporabljajo za PSoC6. HAL knjižnice bodo uporabljale imena na visoki ravni, kot so UART, I2C, SPI, čeprav so te funkcije implementirane s serijskimi komunikacijskimi bloki (SCB) PSoC. PDL knjižnice bodo uporabljale oznake, ki se v imenu funkcije sklicujejo na SCB. Podobno bo HAL uporabljal ADC, PDL pa SAR, saj je to tip ADC, ki se uporablja v PSoC6.
HAL objekti, ki jih uporabnik posreduje HAL gonilnikom, vsebujejo osnovni strojni naslov periferne naprave. HAL knjižnica je vključena v vaš program z ukazom #include „cyhal.h , ki se doda ob ustvarjanju aplikacije.
Iskanje dokumentacije o PDL in HAL knjižnicah ni bilo trivialno. Obiščite spletno mesto Infineon Github:
https://github.com/Infineon/modustoolbox-software
in pojdite do Libraries > Device Families > “CAT1: PSoC6”.
Pomaknite se na dno zelo dolge strani s splošnimi informacijami in izberite More Information > API Reference Guide.
V nadaljevanju je prikazanih nekaj primerov uporabe HAL knjižnic za nekaj GPIO funkcij.
GPIO izhod
Če želite uporabiti HAL knjižnico za GPIO, jo konfigurirajte na naslednji način:
/* Initialize P9.7 as output and set it high */
result=cyhal_gpio_init(P9_7, CYHAL_GPIO_
DIR_OUTPUT, CYHAL_GPIO_DRIVE_STRONG, true);
Opomba: Priključki so na plošči označeni z x.y, vendar jih morate v programu navajati kot x_y.
Nastavitev visokega nivoja na priključku za 250 ms z uporabo HAL:
cyhal_gpio_write(P9_7,true);
Cy_SysLib_Delay(250U);
cyhal_gpio_write(P9_7,false); //tests OK
Dva sosednja GPIO zapisa s preklapljanjem vrednosti omogočata širino impulza približno 55 ns.
Prav tako bo ukaz, cyhal_gpio_toggle(P9_7) na izhodu generiral pravokotni signal.
GPIO PWM
Nastavitev PWM na portu P9.6:
cyhal_pwm_t pwm_obj;
cyhal_pwm_init(&pwm_obj,P9_6,NULL);
cyhal_pwm_set_duty_cycle(&pwm_obj,50.0,10000); // 50% DC at 10 KHz
cyhal_pwm_start(&pwm_obj); // tests OK
Upoštevajte, da je v PSoC6 knjižnicah, primerih itd. veliko primerov funkcij in spremenljivk s predpono „cy“ ali „Cy“. To izvira iz časov, ko je MCU-je PSoC proizvajalo podjetje Cypress Semiconductor. Če torej poskušate uporabiti ime funkcije ali spremenljivke, za katero menite, da bi morala obstajati, vendar ne obstaja, ji poskusite dodati predpono „cy“ ali „Cy“.
DEEPCRAFT Studio
Na začetku te serije člankov sem omenil program DEEPCRAFT Studio in navedel nekaj primerov, ki so pripravljeni za zagon in jih Infineon zagotavlja kot predloge med postopkom „Ustvari novo aplikacijo“. Te predloge uporabljajo ML modele, ki so bili ustvarjeni s programom DEEPCRAFT Studio, in več senzorjev na plošči CY8CKIT-062S2-AI. Na koncu seje strojnega učenja imate z uporabo programa DEEPCRAFT Studio možnost ustvariti kodo, ki jo lahko vključite v lastno PSoC6 aplikacijo. Ta ustvarjena koda je v dveh datotekah:
model.c
model.h
V primeru zgoraj omenjenih predlog sta ti dve datoteki v mapi projekta – v mapi „models“. V projekt sta samodejno vključeni z ukazom:
include
V teh primerih je treba zbrati podatke o senzorju (z istim senzorjem, nameščenim na plošči, kot ga je uporabil model) in jih nato vnesti v ustvarjeno ML funkcijo. Rezultat te funkcije je odziv na te podatke senzorja. V primeru omenjenih primerov se ta odziv izpiše na USB serijska vrata.
Če želite prilagoditi enega od teh primerov ML programov, zaženite program DEEPCRAFT Studio, izvedite svojo lastno, prilagojeno funkcijo „učenja“ in rezultate shranite v datoteki model.c in model.h. Ti dve datoteki lahko nato kopirate v models mapo za vaš projekt – s čemer boste nadomestili tiste, ki jih je pripravil Infineon kot del predloge.
Upoštevajte, da lahko DEEPCRAFT Studio program sodeluje z vašo ploščo CY8CKIT-062S2-AI tako, da mora biti na plošči nameščena ugnezdena programska oprema za pretok podatkov DEEPCRAFT Studio. To je ugnezdena programska oprema, ki je predhodno naložena, ko prejmete ploščo CY8CKIT-062S2-AI. Kot sem omenil že prej v seriji člankov, je prvotna izvedba plošče vsebovala ugnezdeno programsko opremo, ki jo je bilo treba nadgraditi, da bi delovala s trenutno različico programa DEEPCRAFT Studio. To je opisano na začetku priročnika za začetek uporabe za razvojni komplet CY8CKIT-062S2-AI.
DEEPCRAFT Studio je zelo grafična aplikacija. Menim, da poskus dobrega opisa njegovega delovanja presega možnosti, ki jih lahko pričakujem v tej seriji člankov. Če bom nekoliko bolj vešč v njegovi uporabi, se bom morda odločil, da tej seriji dodam še tretji del. Vendar pa sta Infineon/Imagimob zagotovila navodila in videoposnetke o njegovem delovanju.
Upam, da ste uživali v seriji člankov in se naučili nekaj o Infineonovi novi razvojni plošči CY8CKIT-062S2-AI in programu DEEPCRAFT Studio.