Kouman ak poukisa yo li datasheets si mikrokontwolè se plezi ou

Kouman ak poukisa yo li datasheets si mikrokontwolè se plezi ou

Mikwoelektwonik se yon plezi alamòd nan dènye ane yo gras a Arduino majik la. Men, isit la nan pwoblèm nan: ak enterè ase, ou ka byen vit depase DigitalWrite (), men kisa pou w fè pwochen pa totalman klè. Devlopè Arduino yo te fè anpil efò nan bese baryè a pou antre nan ekosistèm yo, men deyò li toujou gen yon forè nwa nan sikwi piman bouk ki pa aksesib pou amatè a.

Pa egzanp, datasheets. Li sanble ke yo gen tout bagay, pran li epi sèvi ak li. Men, otè yo klèman pa mete tèt yo travay la nan popilarize mikrokontwolè; Pafwa li sanbleke yo fè espre abize tèm enkonpreyansib ak abrevyasyon lè yo dekri bagay ki senp yo nan lòd yo konfonn moun ki pa inisye otank posib. Men, se pa tout bagay tèlman mal; si ou vle, sèkèy la louvri.

Nan atik sa a mwen pral pataje eksperyans nan yon espesyalis imanite kominike ak datasheets pou rezon plezi. Tèks la fèt pou amatè ki te grandi nan pantalon Arduino; li sipoze kèk konpreyansyon sou prensip operasyon mikrokontwolè yo.

Mwen pral kòmanse ak tradisyonèl la

Kliche yon dirije sou Arduino

Epi imedyatman kòd la:

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

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

"Kisa sa ye? – Yon lektè sofistike pral mande. – Poukisa w ap ekri yon bagay nan rejis antre PINB la? Se pou lekti sèlman!" Vrèman, Arduino dokiman, tankou pifò atik edikatif sou entènèt la, deklare ke rejis sa a se li sèlman. Mwen te panse sa jiskaske mwen reli l datasheet atmega328p, prepare atik sa a. Epi la:

Kouman ak poukisa yo li datasheets si mikrokontwolè se plezi ou

Sa a se yon fonksyonalite relativman nouvo, li pa t 'sou Atmega8, se pa tout moun konnen sou li oswa li pa mansyone pou rezon konpatibilite bak. Men, li se byen apwopriye pou demontre lide ke fichye done yo vo lekti yo nan lòd yo sèvi ak tout kapasite yo nan chip la, ki gen ladan yo ki pa konnen. E sa se pa sèl rezon.

Poukisa lòt bagay li datasheets?

Anjeneral, enjenyè Arduino, yo te jwe ase ak LED ak AnalogWrites, kòmanse konekte tout kalite modil ak chips nan tablo a, pou ki gen bibliyotèk deja ekri. Talè oswa pita, yon bibliyotèk parèt ki pa travay jan li ta dwe. Lè sa a, amatè a kòmanse chwazi nan li pou ranje li, epi answit...

Ak yon bagay konplètman enkonpreyansib k ap pase la, kidonk, ou dwe ale nan Google, li leson patikilye anpil, rale soti pati nan kòd apwopriye yon moun epi finalman reyalize objektif ou. Sa a bay yon sans pwisan nan akonplisman, men an reyalite pwosesis la se tankou reenvante volan an pa ranvèse jeni yon motosiklèt. Anplis, konpreyansyon sou ki jan bisiklèt sa a ap travay pa ogmante. Mwen konnen, paske mwen te fè sa poukont mwen pou yon bon bout tan.

Si olye pou yo aktivite enteresan sa a mwen te pase yon koup la jou etidye dokiman Atmega328 la, mwen ta sove yon gwo kantite tan. Apre yo tout, sa a se yon mikrokontwolè san patipri senp.

Kidonk, ou bezwen li datasheets omwen yo nan lòd yo imajine ki jan mikrokontwolè a jeneralman travay ak sa li ka fè. Ak pi lwen:

  • pou tcheke ak optimize bibliyotèk lòt moun. Yo souvan ekri pa menm amatè ki reenvante wou an; oswa, okontrè, otè yo fè espre fè yo twòp enfay. Se pou li twa fwa pi gwo ak pi dousman, men li pral definitivman travay;

  • pou kapab itilize chips nan yon pwojè ki pa gen moun ki ekri yon bibliyotèk;

  • pou fè li pi fasil pou tèt ou emigre soti nan yon liy MK nan yon lòt;

  • finalman optimize ansyen kòd ou a, ki pa t 'anfòm nan Arduino;

  • pou aprann kijan pou kontwole nenpòt chip dirèkteman atravè rejis li yo, san yo pa deranje ak etidye estrikti bibliyotèk li yo, si genyen.

Poukisa ekri nan rejis dirèkteman lè gen HAL ak LL?

Vokabilè
HAL, Kouch Abstraksyon segondè - yon bibliyotèk pou kontwole yon mikrokontwolè ak yon wo nivo de abstraksyon. Si ou bezwen sèvi ak koòdone SPI1, ou tou senpleman konfigirasyon ak pèmèt SPI1 san yo pa reflechi sou ki anrejistreman ki responsab pou sa.
LL, Low Level API – yon bibliyotèk ki gen makro oswa estrikti ak adrès anrejistre, ki pèmèt ou jwenn aksè nan yo pa non. DDRx, PORTx, PINx sou Atmega se LL.

Diskisyon sou sijè "HAL, LL oswa enskri" yo fèt regilyèman nan kòmantè sou Habré. San yo pa reklame aksè nan konesans astral, mwen pral tou senpleman pataje eksperyans amatè mwen ak panse.

Èske w gen plis oswa mwens kalkile Atmega ak li atik sou bèl bagay nan STM32, mwen te achte yon demi douzèn ankadreman diferan - Dekouvèt, ak grenn ble, e menm jis bato pou pwodwi endijèn mwen yo. Yo tout ranmase pousyè nan yon bwat pou dezan. Pafwa mwen te di tèt mwen: "Se li, mwen metrize STM nan wikenn sa a," te lanse CubeMX, te jenere yon konfigirasyon pou SPI, te gade miray tèks la ki te lakòz, san gad dèyè aromatize ak copyright STM, epi te deside ke sa a te yon jan kanmenm twòp. .

Kouman ak poukisa yo li datasheets si mikrokontwolè se plezi ou

Natirèlman, ou ka konnen ki sa CubeMX te ekri isit la. Men, an menm tan li klè ke sonje tout mo yo epi ekri yo alamen se ireyèl. Ak debogaj sa a, si mwen aksidantèlman bliye tcheke yon bwat nan kib la, sa a totalman amann.

Dezan pase, mwen toujou ap niche bouch mwen ST MCU Chèche pou tout kalite bon gou, men pi lwen pase konpreyansyon mwen, chips, ak aksidantèlman te vin atravè bèl atik, kwake sou STM8. AK toudenkou Mwen reyalize ke pandan tout tan sa a mwen te frape sou yon pòt louvri: rejis STM yo ranje menm jan ak sa yo ki nan nenpòt lòt MK, ak Kib la pa nesesè yo travay avèk yo. Èske li te menm posib?...

HAL ak espesyalman STM32CubeMX se yon zouti pou enjenyè pwofesyonèl ki travay kole kole ak chips STM32. Karakteristik prensipal la se yon wo nivo de abstraksyon, kapasite nan byen vit imigre soti nan yon MCU nan yon lòt e menm soti nan yon nwayo nan yon lòt, pandan y ap rete nan liy lan STM32. Amater raman rankontre pwoblèm sa yo - chwa mikwo-kontwolè nou an, an jeneral, limite nan varyete AliExpress, epi nou souvan imigre ant chips radikalman diferan - nou deplase soti nan Atmega a STM, soti nan STM a ESP, oswa kèlkeswa bagay nouvo zanmi Chinwa nou yo. voye jete sou nou. HAL pa pral ede isit la, epi etidye li pral manje anpil tan.

LL rete - men soti nan li nan rejis yo gen mwatye yon etap. Pèsonèlman, mwen jwenn ekri makro mwen yo ak adrès anrejistre yo itil: mwen etidye fichye a plis ak anpil atansyon, mwen panse sou sa mwen pral bezwen alavni ak sa mwen definitivman pa pral, mwen estriktire pwogram mwen yo pi byen, epi an jeneral, simonte ede memorize. .

Anplis de sa, gen yon nuans ak STM32F103 popilè a - gen de vèsyon LL enkonpatib pou li, yon ofisyèl nan STM, dezyèm lan soti nan Leaf Labs, yo itilize nan pwojè a STM32duino. Si ou ekri yon bibliyotèk sous louvri (e mwen te gen egzakteman yon travay konsa), ou dwe swa fè de vèsyon, oswa jwenn aksè nan rejis yo dirèkteman.

Finalman, elimine LL, nan opinyon mwen, senplifye migrasyon, espesyalman si ou planifye sou li depi nan kòmansman an nan pwojè a. Egzanp ekzajere: ann ekri Arduino blink nan Atmel Studio san 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++);
    } 
}

Nan lòd pou kòd sa a bat dirije ki ap dirije sou yon tablo Chinwa ak STM8 (ki soti nan ST Visual Desktop), li ase yo chanje de adrès nan li:

#define DDR_B 0x5007
#define OUT_B 0x5005

Wi, mwen sèvi ak yon karakteristik konekte ki ap dirije a sou yon tablo espesifik, li pral bat byen dousman, men li pral rive!

Ki kalite fich done ki genyen?

Nan atik ak sou fowòm, tou de Ris ak angle, "datasheets" vle di nenpòt dokiman teknik pou chips, epi mwen fè menm bagay la nan tèks sa a. Fòmèlman, yo se jis yon kalite dokiman sa yo:

Mode – Karakteristik pèfòmans, karakteristik taktik ak teknik. Obligatwa pou nenpòt eleman elektwonik. Enfòmasyon sou background yo itil pou kenbe nan men, men pa gen anpil pou li nan li avèk reflechi. Sepandan, chips ki pi senp yo souvan limite a yon fich done pou yo pa pwodwi dokiman ki pa nesesè; nan ka sa Manyèl referans enkli isit la.

Manyèl referans – enstriksyon yo tèt yo, yon liv ki an sante ki gen plis pase 1000 paj. Travay la nan tout bagay ki anpile nan chip la dekri an detay. Dokiman prensipal la pou metrize mikrokontwolè a. Kontrèman ak Mode, enstriksyon yo ekri pou yon pakèt MK yo; yo genyen anpil enfòmasyon sou periferik ki pa disponib nan modèl espesifik ou a.

Manyèl pwogramasyon oswa Manyèl seri enstriksyon - enstriksyon pou kòmand inik mikrokontroleur. Ki fèt pou moun ki pwograme nan lang asanble. Otè konpilatè aktivman itilize li pou optimize kòd, kidonk nan ka jeneral nou pa pral bezwen li. Men, gade isit la itil pou yon konpreyansyon jeneral, pou kèk kòmandman espesifik tankou sòti nan yon entèwonp, osi byen ke pou aktivman itilize debogaj la.

Remak aplikasyon an – konsèy itil pou rezoud pwoblèm espesifik, souvan ak egzanp kòd.

Fèy Errata – deskripsyon ka konpòtman chip ki pa estanda ak opsyon solisyon, si genyen.

Ki sa ki nan fichye yo

Dirèkteman pou Mode nou ka bezwen seksyon sa yo:

Rezime Aparèy – premye paj fich la dekri aparèy la yon ti tan. Trè itil nan sitiyasyon lè ou jwenn yon chip yon kote (wè li nan yon magazen, soude li, te vin atravè yon mansyone) epi ou vle konprann ki sa li ye.

Jeneral Deskripsyon - yon deskripsyon pi detaye sou kapasite chips yo soti nan liy lan.

Pinouts – dyagram pinout pou tout pake chip posib (ki zepeng sou ki janm).

PIN Deskripsyon – deskripsyon objektif ak kapasite chak peny.

Kat memwa – nou pa gen anpil chans bezwen yon kat adrès nan memwa, men pafwa li gen ladan tou yon tablo nan adrès blòk anrejistre.

Anrejistre Map – Tablo adrès blòk anrejistre yo, kòm yon règ, sitiye nan fichye a, ak nan Ref Manyèl - sèlman chanjman (adrès konpanse).

Karakteristik elektrik – nan seksyon sa a nou enterese prensipalman evalyasyon maksimòm absoli, lis chaj maksimòm yo pou chak chip. Kontrèman ak endèstruktibl Atmega328p a, pifò MK yo pa pèmèt ou konekte chay grav nan broch yo, ki vin tounen yon sipriz dezagreyab pou Arduinists.

Enfòmasyon sou pake a - desen ka ki disponib, itil lè w ap desine tablo ou yo.

Manyèl referans estriktirèl konsiste de seksyon konsakre nan periferik espesifik ki endike nan tit yo. Chak chapit ka divize an twa pati:

apèsi sou lekòl la, entwodiksyon, karakteristik - BECA de kapasite periferik;

Fonksyonèl Deskripsyon, Gid pou Itilizasyon oswa tou senpleman blòk prensipal la nan seksyon an - yon deskripsyon tèks detaye sou prensip yo nan aparèy periferik la ak kouman yo sèvi ak li;

Rejis – deskripsyon rejis kontwòl yo. Nan ka senp tankou GPIO oswa SPI, sa a ka ase yo kòmanse itilize periferik yo, men souvan ou toujou gen li pati anvan yo.

Ki jan yo li fichye done yo

Datasheets, soti nan abitid, pè ou ak volim yo ak abondans nan mo enkonpreyansib. An reyalite, tout bagay pa tèlman pè si w konnen kèk antay lavi.

Mete bon lektè PDF. Fichye yo ekri nan tradisyon bèl enstriksyon papye yo; yo bon pou enprime, mete ak makè plastik ak koud. Ipètèks nan yo obsève nan kantite tras. Erezman, omwen estrikti dokiman an fèt ak signets, kidonk yon lektè apwopriye ak navigasyon fasil trè nesesè.

Fich done a se pa liv Stroustrup la; li genyen ladan l pa bezwen li tout bagay. Si ou te itilize konsèy anvan an, jis jwenn seksyon an vle nan ba a Bookmarks.

Datasheets, espesyalman Manyèl referans, ka dekri kapasite yo nan pa yon chip espesifik, men tout liy lan. Sa vle di ke mwatye, oswa menm de tyè nan enfòmasyon an pa gen rapò ak chip ou a. Anvan w etidye rejis TIM7, tcheke Jeneral Deskripsyon, ou genyen li?

Konnen Angle ase pou nivo debaz. Fichye done yo konpoze mwatye nan tèm ki pa abitye pou moun ki pale natif natal mwayèn, ak mwatye nan estrikti ki konekte ki senp. Genyen tou ekselan fich done Chinwa nan lang Chinwa angle, kote mwatye yo tou tèm, ak dezyèm mwatye a se yon seri mo o aza.

Si ou rankontre mo pa abitye, pa eseye tradui li lè l sèvi avèk yon diksyonè angle-ris. Si ou konfonn isterèz, Lè sa a, tradiksyon "isterèz la" pa pral fè ou pi cho. Sèvi ak Google, Stack Overflow, Wikipedia, fowòm, kote konsèp ki nesesè yo pral eksplike nan mo senp ak egzanp.

Pi bon fason pou konprann sa ou li se tcheke an aksyon. Se poutèt sa, kenbe nan men tablo a debogaj ke w ap familyarize tèt ou ak, oswa pi bon ankò de, nan ka ou toujou mal konprann yon bagay epi wè yon lafimen majik.

Li se yon bon abitid kenbe fichye done ou sou la men lè ou li leson patikilye yon moun oswa etidye bibliyotèk yon lòt moun. Li se byen posib ke ou pral jwenn yon solisyon pi optimal nan pwoblèm ou nan li. Ak vis vèrsa - si ou pa ka konprann nan fèy done a ki jan rejis la aktyèlman ap travay, google li: gen plis chans, yon moun te deja dekri tout bagay nan mo senp oswa kite kòd klè sou GitHub.

Vokabilè

Kèk mo ak senbòl itil pou ede w byen vit abitye ak fich done yo. Sa mwen te sonje nan dènye de jou yo, ajoute ak koreksyon yo akeyi.

Elektrisite
VDC, Se vre – "plis", manje
Vss, Vee - "mwens", latè
aktyèl - aktyèl
vòltaj - vòltaj
koule kouran - travay kòm "tè" pou chaj ekstèn
pou sous kouran - pouvwa chaj ekstèn
gwo koule / sous broch – PIN ak ogmante "tolerans" nan chaj

IO
H, Segondè – sou peny Vcc la
L, ba – sou peny Vss la
Segondè enpedans, Hi-Z, k ap flote - pa gen anyen sou peny la, "segondè rezistans", li se nòmalman envizib nan mond lan deyò.
fèb rale moute, fèb rale desann – bati-an rale-up/rale-desann rezistans, apeprè ekivalan a 50 kOhm (al gade fichye). Yo itilize li, pou egzanp, pou anpeche pin D 'pandan nan lè a, sa ki lakòz fo pozitif. Fèb - paske li fasil pou "entewonp" li.
rale pouse - mòd pwodiksyon PIN, nan ki li chanje ant segondè и ba - Sòti regilye soti nan Arduino.
drenaj louvri – deziyasyon nan mòd nan pwodiksyon nan ki peny la ka swa baOswa Segondè enpedans / k ap flote. Anplis, prèske tout tan sa a se pa yon "reyèl" drenaj louvri; gen dyod pwoteksyon, rezistans, ak lòt bagay. Sa a se tou senpleman yon deziyasyon pou mòd tè / pa gen okenn.
vre drenaj louvri - men sa a se yon drenaj reyèl ouvè: peny lan mennen dirèkteman nan tè a si li louvri, oswa rete nan limbo si li fèmen. Sa vle di ke, si sa nesesè, yon vòltaj ki pi gran pase Vcc ka pase nan li, men maksimòm nan toujou espesifye nan fichye a nan seksyon an. Evalyasyon maksimòm absoli/Voltage.

Interfaces
nan seri - konekte nan seri
nan chenn – rasanble chips nan yon chèn lè l sèvi avèk yon koneksyon seri, ogmante kantite pwodiksyon an.
chanjman – chanjman, anjeneral, vle di yon chanjman ti jan. respektivman, pou chanje nan и deplase soti - resevwa ak transmèt done ti pa ti jan.
obtenir - yon seri ki kouvri tanpon an pandan y ap deplase moso nan li. Lè transfè a fini, valv la louvri epi ti moso yo kòmanse fonksyone.
revèy nan – fè yon transfè ti pa ti jan, deplase tout ti moso yo nan bon kote.
doub tanpon, enskri lonbraj, preload enskri – deziyasyon istwa, lè rejis la dwe kapab aksepte nouvo done, men kenbe li jiska yon pwen. Pou egzanp, pou PWM travay kòrèkteman, paramèt li yo (sik devwa, frekans) pa ta dwe chanje jiskaske sik aktyèl la fini, men nouvo paramèt ka deja transfere. An konsekans, sa yo aktyèl yo kenbe nan enskri lonbraj, ak nouvo tonbe nan preload enskri, yo te ekri nan rejis chip korespondan an.

Tout kalite bagay
prescaler - frekans prescaler
mete yon ti jan - mete ti jan nan 1
pou klè/reset yon ti jan - Reyajiste ti jan a 0 (Reyajiste - Karakteristik fèy done STM)

Ki sa ki nan pwochen an

An jeneral, yon pati pratik te planifye isit la ak yon demonstrasyon nan twa pwojè sou STM32 ak STM8, ki fèt espesyalman pou atik sa a lè l sèvi avèk fich done, ak anpoul limyè, SPI, timers, PWM ak entèwonp:

Kouman ak poukisa yo li datasheets si mikrokontwolè se plezi ou

Men, gen anpil tèks, kidonk pwojè yo voye nan dezyèm pati a.

Konpetans nan lekti fich done pral ede w ak plezi ou, men li se fasil ranplase kominikasyon an ap viv ak amater parèy sou fowòm ak chat. Pou rezon sa a, ou toujou bezwen amelyore angle ou an premye. Se poutèt sa, moun ki fini lekti pral resevwa yon pri espesyal: de leson gratis nan Skyeng ak premye peman an lè l sèvi avèk kòd la. HABR2.

Sous: www.habr.com

Add nouvo kòmantè