Kif u għaliex taqra datasheets jekk il-mikrokontrolluri huma l-passatemp tiegħek

Kif u għaliex taqra datasheets jekk il-mikrokontrolluri huma l-passatemp tiegħek

Il-mikroelettronika hija passatemp tal-moda f'dawn l-aħħar snin grazzi għall-Arduino maġiku. Imma hawn il-problema: b'interess biżżejjed, tista 'malajr tegħleb DigitalWrite(), iżda x'għandek tagħmel wara mhux ċar għal kollox. L-iżviluppaturi ta 'Arduino għamlu ħafna sforz biex ibaxxu l-ostaklu għad-dħul fl-ekosistema tagħhom, iżda barra minnha għad hemm foresta skura ta' ċirkwiti ħarxa li hija inaċċessibbli għad-dilettanti.

Per eżempju, datasheets. Jidher li għandhom kollox, teħodha u tużah. Iżda l-awturi tagħhom b'mod ċar ma jistabbilixxux lilhom infushom il-kompitu li jippopolalizzaw mikrokontrolluri; Kultant jidherli deliberatament jabbużaw minn termini u abbrevjazzjonijiet li ma jinftiehmux meta jiddeskrivu affarijiet sempliċi sabiex iħawdu kemm jista’ jkun lil min ma jkunx inizjat. Imma mhux kollox huwa daqshekk ħażin; jekk mixtieq, il-kaxxa tiftaħ.

F'dan l-artikolu ser naqsam l-esperjenza ta 'speċjalista fl-umanitajiet li jikkomunika ma' datasheets għal skopijiet ta 'passatemp. It-test huwa maħsub għad-dilettanti li kibru minn qliezet Arduino; jassumi xi fehim tal-prinċipji tat-tħaddim tal-mikrokontrolluri.

Nibda bit-tradizzjonali

Teptip LED fuq Arduino

U immedjatament il-kodiċi:

void setup() {
DDRB |= (1<<5);
}

void loop() {
PINB = (1<<5);
for (volatile uint32_t k=0; k<100000; k++);
}

“Dan x’inhu? – Qarrej sofistikat jistaqsi. – Għaliex qed tikteb xi ħaġa fir-reġistru tal-input tal-PINB? Huwa għall-qari biss!” Tassew, Dokumentazzjoni Arduino, bħall-biċċa l-kbira tal-artikoli edukattivi fuq l-Internet, jiddikjara li dan ir-reġistru huwa jaqra biss. Hekk ħsibt jien stess sakemm erġajt qrajtu datasheet lil Atmega328p, jipprepara dan l-artikolu. U hemm:

Kif u għaliex taqra datasheets jekk il-mikrokontrolluri huma l-passatemp tiegħek

Din hija funzjonalità relattivament ġdida, ma kinitx fuq Atmega8, mhux kulħadd jaf dwarha jew ma jissemmiex għal raġunijiet ta 'kompatibilità b'lura. Iżda huwa pjuttost adattat biex turi l-idea li l-iskedi tad-dejta ta 'min jinqraw sabiex jintużaw il-kapaċitajiet kollha taċ-ċippa, inklużi dawk li ftit li xejn magħrufa. U din mhix l-unika raġuni.

Għaliex inkella aqra datasheets?

Normalment, l-inġiniera Arduino, wara li lagħbu biżżejjed ma 'LEDs u AnalogWrites, jibdew jgħaqqdu kull xorta ta' moduli u ċipep mal-bord, li għalihom diġà hemm libreriji miktuba. Illum jew għada, tidher librerija li ma taħdimx kif suppost. Imbagħad id-dilettanti jibda jiġbor fih biex jirranġa, u mbagħad...

U hemm jiġri xi ħaġa kompletament inkomprensibbli, għalhekk trid tmur Google, taqra bosta tutorials, iġbed partijiet mill-kodiċi adattat ta 'xi ħadd u finalment tilħaq l-għan tiegħek. Dan jagħti sens qawwi ta 'tlestija, iżda fir-realtà l-proċess huwa bħal tivvinta mill-ġdid ir-rota billi tagħmel inġinerija inversa ta' mutur. Barra minn hekk, il-fehim ta 'kif taħdem din ir-rota ma jiżdiedx. Naf, għax għamilt dan jien stess għal żmien pjuttost twil.

Kieku minflok din l-attività eċċitanti kont qattajt ftit jiem nistudja d-dokumentazzjoni tal-Atmega328, kont niffranka ħafna ħin. Wara kollox, dan huwa mikrokontrollur pjuttost sempliċi.

Għalhekk, għandek bżonn taqra datasheets għall-inqas sabiex timmaġina kif il-mikrokontrollur ġeneralment jaħdem u x'jista 'jagħmel. U aktar:

  • biex jiċċekkja u jottimizza l-libreriji ta' nies oħra. Ħafna drabi jinkitbu mill-istess dilettanti li jivvintaw mill-ġdid ir-rota; jew, għall-kuntrarju, l-awturi deliberatament jagħmluhom eċċessivament foolproof. Ħalliha tkun tliet darbiet akbar u aktar bil-mod, iżda definittivament se taħdem;

  • li tkun tista' tuża ċipep fi proġett li ħadd ma kiteb librerija għalih;

  • biex tagħmilha aktar faċli għalik innifsek biex temigra minn linja MK għal oħra;

  • biex finalment tottimizza l-kodiċi l-antik tiegħek, li ma kienx jidħol f'Arduino;

  • biex titgħallem kif tikkontrolla kwalunkwe ċippa direttament permezz tar-reġistri tagħha, mingħajr ma tiddejjaq tistudja l-istruttura tal-libreriji tagħha, jekk ikun hemm.

Għaliex tikteb lir-reġistri direttament meta jkun hemm HAL u LL?

Glossarju
HAL, Saff ta 'Astrazzjoni Għolja – librerija għall-kontroll ta' mikrokontrollur b'livell għoli ta' astrazzjoni. Jekk għandek bżonn tuża l-interface SPI1, sempliċement tikkonfigura u tippermetti SPI1 mingħajr ma taħseb dwar liema reġistri huma responsabbli għal xiex.
LL, API ta' Livell Baxx – librerija li fiha macros jew strutturi b'indirizzi ta' reġistru, li tippermettilek taċċessahom bl-isem. DDRx, PORTx, PINx fuq Atmega huma LL.

Tilwim dwar is-suġġett "HAL, LL jew reġistri" iseħħ regolarment f'kummenti fuq Habré. Mingħajr ma nippretendi aċċess għall-għarfien astrali, se sempliċement naqsam l-esperjenza u l-ħsibijiet tad-dilettanti tiegħi.

Wara li ftit jew wisq dehret lil Atmega u wara li qrajt artikli dwar il-meraviljuż ta 'STM32, xtrajt nofs tużżana bordijiet differenti - Discovery, u Blue Pills, u anke ċipep biss għall-prodotti homemade tiegħi. Kollha ġabru t-trab f’kaxxa għal sentejn. Kultant għidt bejni u bejn ruħi: "dak hu, minn dan il-weekend qed nikkontrolla l-STM," nediet CubeMX, ġġenera setup għall-SPI, ħares lejn il-ħajt tat-test li jirriżulta, b'togħma ġeneruża bid-drittijiet tal-awtur tal-STM, u ddeċidiet li dan kien b'xi mod wisq ħafna.

Kif u għaliex taqra datasheets jekk il-mikrokontrolluri huma l-passatemp tiegħek

Naturalment, tista' tara dak li kiteb CubeMX hawn. Iżda fl-istess ħin jidher ċar li li wieħed jiftakar il-kliem kollu u mbagħad jiktbu bl-idejn mhuwiex realistiku. U biex niddibaggja dan, jekk aċċidentalment ninsa niċċekkja kaxxa fil-Kubu, dan huwa totalment tajjeb.

Għaddew sentejn, għadni nilgħaq xofftejja ST MCU Finder għal kull xorta ta fit-togħma, iżda lil hinn mill-fehim tiegħi, ċipep, u aċċidentalment sab artiklu mill-isbaħ, għalkemm dwar STM8. U f'daqqa waħda Irrealizzajt li dan iż-żmien kollu kont qed inħabbat bieb miftuħ: ir-reġistri tal-STM huma rranġati bl-istess mod bħal dawk ta 'kull MK ieħor, u l-Cube mhux meħtieġ li jaħdem magħhom. Saħansitra kien possibbli?...

HAL u speċifikament STM32CubeMX hija għodda għal inġiniera professjonali li jaħdmu mill-qrib maċ-ċipep STM32. Il-karatteristika ewlenija hija livell għoli ta 'estrazzjoni, il-kapaċità li jemigraw malajr minn MCU għal ieħor u anke minn qalba għal oħra, filwaqt li tibqa' fi ħdan il-linja STM32. Dilettanti rari jiltaqgħu ma' problemi bħal dawn - l-għażla tagħna ta 'mikrokontrolluri, bħala regola, hija limitata għall-assortiment ta' AliExpress, u aħna ħafna drabi jemigraw bejn ċipep radikalment differenti - nimxu minn Atmega għal STM, minn STM għal ESP, jew kwalunkwe ħaġa ġdida l-ħbieb tagħna Ċiniżi tarmi magħna. L-HAL mhux se jgħin hawn, u l-istudju tiegħu se jiekol ħafna ħin.

LL jibqa' - iżda minnha għar-reġistri hemm nofs pass. Personalment, insib li nikteb il-makros tiegħi b'indirizzi tar-reġistru utli: nistudja l-iskeda tad-dejta b'aktar attenzjoni, naħseb dak li se nkun bżonn fil-futur u dak li żgur mhux se, nistruttura l-programmi tiegħi aħjar, u b'mod ġenerali, li negħleb jgħin biex jimmemorizza.

Barra minn hekk, hemm sfumatura mal-STM32F103 popolari - hemm żewġ verżjonijiet LL inkompatibbli għaliha, uffiċjal wieħed minn STM, it-tieni minn Leaf Labs, użat fil-proġett STM32duino. Jekk tikteb librerija open-source (u kelli eżattament kompitu bħal dan), trid jew tagħmel żewġ verżjonijiet, jew taċċessa r-reġistri direttament.

Fl-aħħarnett, l-eliminazzjoni ta 'LL, fl-opinjoni tiegħi, tissimplifika l-migrazzjoni, speċjalment jekk tippjana fuqha mill-bidu nett tal-proġett. Eżempju esaġerat: ejja nikteb Arduino blink f'Atmel Studio mingħajr LL:

#include <stdint.h>

#define _REG(addr) (*(volatile uint8_t*)(addr))

#define DDR_B 0x24
#define OUT_B 0x25

int main(void)
{
    volatile uint32_t k;

    _REG(DDR_B) |= (1<<5);

    while(1)
    {
        _REG(OUT_B) |= (1<<5);
        for (k=0; k<50000; k++);
        _REG(OUT_B) &= ~(1<<5);
        for (k=0; k<50000; k++);
    } 
}

Sabiex dan il-kodiċi jteptep l-LED fuq bord Ċiniż b'STM8 (minn ST Visual Desktop), huwa biżżejjed li tbiddel żewġ indirizzi fih:

#define DDR_B 0x5007
#define OUT_B 0x5005

Iva, nuża karatteristika li tgħaqqad l-LED fuq bord speċifiku, se jteptep bil-mod ħafna, iżda jiġri!

X'tipi ta' datasheets hemm?

F'artikoli u fuq fora, kemm Russu kif ukoll Ingliż, "datasheets" tfisser kwalunkwe dokumentazzjoni teknika għaċ-ċipep, u nagħmel l-istess f'dan it-test. Formalment, huma tip wieħed biss ta' tali dokumentazzjoni:

Datasheet – Karatteristiċi tal-prestazzjoni, karatteristiċi tattiċi u tekniċi. Obbligatorju għal kull komponent elettroniku. Informazzjoni ta' sfond hija utli biex iżżommha f'idejna, iżda m'hemmx ħafna x'taqra fiha b'mod maħsub. Madankollu, ċipep aktar sempliċi ħafna drabi huma limitati għal datasheet sabiex ma jipproduċux dokumenti mhux meħtieġa; f'dan il-każ Manwal ta ’Referenza hija inkluża hawn.

Manwal ta ’Referenza – l-istruzzjonijiet infushom, ktieb b’saħħtu ta’ 1000+ paġna. Ix-xogħol ta 'dak kollu li huwa crammed fiċ-ċippa huwa deskritt fid-dettall. Id-dokument ewlieni għall-ħakma tal-mikrokontrollur. B'differenza datasheet, l-istruzzjonijiet huma miktuba għal firxa wiesgħa ta' MKs; fihom ħafna informazzjoni dwar periferali li mhumiex disponibbli fil-mudell speċifiku tiegħek.

Manwal ta 'Programmar jew Istruzzjoni Sett Manwal – struzzjonijiet għal kmandi uniċi tal-mikrokontrolluri. Iddisinjat għal dawk li jipprogrammaw bil-lingwa Assembly. L-awturi tal-kompilaturi jużawh b'mod attiv biex jottimizzaw il-kodiċi, għalhekk fil-każ ġenerali mhux se jkollna bżonnha. Imma tfittex hawn hija utli għal fehim ġenerali, għal xi kmandi speċifiċi bħall-ħruġ minn interruzzjoni, kif ukoll għall-użu attiv tad-debugger.

Nota ta 'Applikazzjoni – pariri utli għas-soluzzjoni ta' problemi speċifiċi, ħafna drabi b'eżempji ta' kodiċi.

Errata Sheet – deskrizzjoni ta' każijiet ta' mġiba ta' ċippa mhux standard b'għażliet ta' soluzzjoni, jekk ikun hemm.

X'hemm fid-datasheets

Direttament lil Datasheet nistgħu neħtieġu t-taqsimiet li ġejjin:

Sommarju tal-Apparat – l-ewwel paġna tad-datasheet tiddeskrivi fil-qosor l-apparat. Utli ħafna f'sitwazzjonijiet meta sibt ċippa x'imkien (rajtha f'maħżen, issaldjatha, iltqajt ma' aċċenn) u trid tifhem x'inhi.

Deskrizzjoni ġenerali – deskrizzjoni aktar dettaljata tal-kapaċitajiet taċ-ċipep mil-linja.

Pinouts – dijagrammi tal-pinout għall-pakketti taċ-ċippa kollha possibbli (liema pin hija fuq liema riġel).

Deskrizzjoni tal-Pin – deskrizzjoni tal-iskop u l-kapaċitajiet ta' kull pin.

Mappa tal-Memorja – x'aktarx ma neħtieġux mappa tal-indirizzi fil-memorja, iżda xi drabi tinkludi wkoll tabella tal-indirizzi tal-blokki tar-reġistru.

Irreġistra Mappa – it-tabella tal-indirizzi tal-blokki tar-reġistru, bħala regola, tinsab fid-datasheet, u fi Ref Manwal – xiftijiet biss (indirizz offsets).

Karatteristiċi elettriċi – f'din it-taqsima aħna primarjament interessati klassifikazzjonijiet massimi assoluti, li jelenka t-tagħbijiet massimi għal kull ċippa. B'differenza mill-Atmega328p indestructible, il-biċċa l-kbira tal-MKs ma jippermettux li tikkonnettja tagħbijiet serji mal-brilli, li ssir sorpriża spjaċevoli għall-Arduinists.

Pakkett ta 'Informazzjoni – tpinġijiet tal-każijiet disponibbli, utli meta tfassal il-bordijiet tiegħek.

Manwal ta ’Referenza strutturalment tikkonsisti f'taqsimiet iddedikati għal periferali speċifiċi indikati fit-titolu tagħhom. Kull kapitlu jista’ jinqasam fi tliet partijiet:

Ħarsa ġenerali, introduzzjoni, Karatteristiċi – ħarsa ġenerali tal-kapaċitajiet periferali;

Deskrizzjoni funzjonali, Gwida dwar l-Użu jew sempliċement il-blokka prinċipali tat-taqsima - deskrizzjoni dettaljata tat-test tal-prinċipji tal-apparat periferali u kif tużah;

Reġistri – deskrizzjoni tar-reġistri ta' kontroll. F'każijiet sempliċi bħal GPIO jew SPI, dan jista 'jkun pjuttost biżżejjed biex tibda tuża l-periferali, iżda ħafna drabi xorta trid taqra l-partijiet preċedenti.

Kif taqra datasheets

Datasheets, bi drawwa, ibeżżgħuk bil-volum tagħhom u bl-abbundanza ta 'kliem inkomprensibbli. Fil-fatt, kollox mhux daqshekk tal-biża' jekk taf xi ftit hacks tal-ħajja.

Set qarrej PDF tajjeb. Il-folji tad-dejta huma miktuba fit-tradizzjoni glorjuża tal-istruzzjonijiet tal-karti; huma tajbin biex jiġu stampati, daħħal ma 'bookmarks tal-plastik u ħit. Ipertest fihom huwa osservat fi kwantitajiet traċċi. Fortunatament, għall-inqas l-istruttura tad-dokument hija mfassla bil-bookmarks, għalhekk qarrej adattat b'navigazzjoni faċli huwa meħtieġ ħafna.

Id-datasheet mhix il-ktieb tat-test ta’ Stroustrup; fiha m'hemmx għalfejn taqra kollox. Jekk użajt il-parir preċedenti, sib biss it-taqsima mixtieqa fil-bar tal-bookmarks.

Datasheets, speċjalment Manwali ta' Referenza, jistgħu jiddeskrivu l-kapaċitajiet ta ' mhux ċippa speċifika, iżda il-linja kollha. Dan ifisser li nofs, jew saħansitra żewġ terzi tal-informazzjoni mhix rilevanti għaċ-ċippa tiegħek. Qabel ma tistudja r-reġistri TIM7, iċċekkja Deskrizzjoni ġenerali, għandek?

Kun af Ingliż biżżejjed għal livell bażiku. Datasheets jikkonsistu nofs termini mhux familjari għall-kelliem nattiv medju, u nofs strutturi ta 'konnessjoni sempliċi. Hemm ukoll datasheets eċċellenti Ċiniżi bl-Ingliż Ċiniż, fejn nofshom huma wkoll termini, u t-tieni nofs huma sett każwali ta 'kliem.

Jekk tiltaqa' kelma mhux familjari, tippruvax tittraduċiha billi tuża dizzjunarju Ingliż-Russu. Jekk inti konfuż isteresi, allura t-traduzzjoni "istereżi" ma tagħmlekx tisħon. Uża Google, Stack Overflow, Wikipedia, forums, fejn se jkun il-kunċett meħtieġ spjegat fi kliem sempliċi b’eżempji.

L-aħjar mod biex tifhem dak li taqra hu iċċekkja fl-azzjoni. Għalhekk, żomm f'idejn il-bord tad-debug li qed tiffamiljarizza ruħek miegħu, jew aħjar tnejn, f'każ li għadek fhimt ħażin xi ħaġa u rajt duħħan maġiku.

Huwa vizzju tajjeb li żżomm id-datasheet tiegħek handy meta inti qari tutorja ta 'xi ħadd jew tistudja l-librerija ta’ xi ħadd ieħor. Huwa pjuttost possibbli li inti ssib soluzzjoni aktar ottimali għall-problema tiegħek fiha. U viċi versa - jekk ma tistax tifhem mid-datasheet kif jaħdem ir-reġistru fil-fatt, iċċekkjah fuq Google: x'aktarx, xi ħadd diġà ddeskriva kollox fi kliem sempliċi jew ħalla kodiċi ċar fuq GitHub.

Glossarju

Xi kliem u simboli utli biex jgħinuk tidra malajr id-datasheets. Dak li ftakart fl-aħħar ftit jiem, żidiet u korrezzjonijiet huma milqugħa.

Elettriku
VDC, Veru – “plus”, ikel
Vss, Vee – “minus”, earth
kurrenti – kurrenti
vultaġġ - vultaġġ
biex jegħreq il-kurrent – taħdem bħala “art” għal tagħbija esterna
għall-kurrent sors – tagħbija esterna tal-enerġija
sink għoli / pin tas-sors – pin b'“tolleranza” miżjuda għat-tagħbija

IO
H, Għoli – fuq il-pin Vcc
L, Baxx – fuq il-pin Vss
Impedenza Għolja, Hi-Z, f'wiċċ l-ilma – m'hemm xejn fuq il-pin, "reżistenza għolja", huwa prattikament inviżibbli għad-dinja ta 'barra.
dgħajjef pull up, ġibda dgħajfa 'l isfel – resistor pull-up/pull-down integrat, bejn wieħed u ieħor ekwivalenti għal 50 kOhm (ara l-iskeda tad-dejta). Jintuża, pereżempju, biex jipprevjeni li l-pin tad-dħul ma jdumx fl-arja, u jikkawża pożittivi foloz. Dgħajfa - għax huwa faċli li "tinterrompi".
push pull – modalità tal-ħruġ tal-pin, li fiha taqleb bejnha Għoli и Baxxa – ĦRUĠ regolari minn Arduino.
drenaġġ miftuħ – isem tal-modalità tal-ħruġ li fih il-pin jista 'jkun jew BaxxaJew Impedenza Għolja/Foating. Barra minn hekk, kważi dejjem dan mhuwiex drenaġġ miftuħ "reali"; hemm dajowds protettivi, resistors, u xejn. Din hija sempliċement nomina għall-modalità art/xejn.
drenaġġ miftuħ veru - iżda dan huwa drenaġġ miftuħ reali: il-pin iwassal direttament għall-art jekk ikun miftuħ, jew jibqa 'fil-limbu jekk ikun magħluq. Dan ifisser li, jekk meħtieġ, vultaġġ akbar minn Vcc jista 'jgħaddi minnu, iżda l-massimu għadu speċifikat fid-datasheet fit-taqsima Klassifikazzjonijiet Massimu Assoluti/Vultaġġ.

Interfejs
f'serje – konnessi f'serje
għall-katina – tiġbor ċipep f'katina billi tuża konnessjoni serjali, u żżid in-numru ta 'outputs.
shift – bidla, normalment tindika bidla daqsxejn. Rispettivament, biex taqleb ġewwa и biex tiċċaqlaq barra – jirċievu u jittrasmettu data bit bit.
lukkett – lukkett li jkopri l-buffer waqt li l-bits jiġu mċaqalqa minnu. Meta t-trasferiment jitlesta, il-valv jinfetaħ u l-bits jibdew jaħdmu.
to clock in – wettaq trasferiment bit-by-bit, iċċaqlaq il-bits kollha fil-postijiet it-tajba.
buffer doppju, reġistru dell, preload register – deżinjazzjonijiet tal-istorja, meta r-reġistru għandu jkun jista' jaċċetta data ġdida, iżda jżommha sa ċertu punt. Pereżempju, biex PWM jaħdem b'mod korrett, il-parametri tiegħu (duty cycle, frekwenza) m'għandhomx jinbidlu sakemm jintemm iċ-ċiklu attwali, iżda parametri ġodda jistgħu diġà jiġu trasferiti. Għaldaqstant, dawk attwali jinżammu fuq reġistru dell, u oħrajn ġodda jaqgħu preload register, qed jinkiteb fir-reġistru taċ-ċippa korrispondenti.

Kull xorta ta’ affarijiet
prescaler – prescaler tal-frekwenza
biex tissettja daqsxejn – issettja bit għal 1
biex tnaddaf/reset daqsxejn – reset bit għal 0 (reset – Karatteristika tal-iskeda tad-dejta STM)

X'hemm Li jmiss

B'mod ġenerali, parti prattika kienet ippjanata hawnhekk b'dimostrazzjoni ta 'tliet proġetti fuq STM32 u STM8, magħmula speċifikament għal dan l-artikolu bl-użu ta' datasheets, b'bozoz tad-dawl, SPI, tajmers, PWM u interruzzjonijiet:

Kif u għaliex taqra datasheets jekk il-mikrokontrolluri huma l-passatemp tiegħek

Iżda hemm ħafna test, għalhekk il-proġetti jintbagħtu għat-tieni parti.

Il-ħila li taqra datasheets tgħinek bil-passatemp tiegħek, iżda mhux probabbli li tissostitwixxi l-komunikazzjoni diretta ma 'hobbyists sħabi fuq forums u chats. Għal dan il-għan, għad trid ittejjeb l-Ingliż tiegħek qabel kollox. Għalhekk, dawk li spiċċaw jaqraw se jirċievu premju speċjali: żewġ lezzjonijiet b'xejn fi Skyeng bl-ewwel ħlas bl-użu tal-kodiċi HABR2.

Sors: www.habr.com

Żid kumment