Kepiye lan kenapa maca lembar data yen mikrokontroler minangka hobi sampeyan

Kepiye lan kenapa maca lembar data yen mikrokontroler minangka hobi sampeyan

Microelectronics minangka hobi modis ing taun-taun pungkasan amarga Arduino sing magis. Nanging iki masalah: karo kapentingan cukup, sampeyan bisa cepet outgrow DigitalWrite (), nanging apa sabanjuré ora sakabehe cetha. Pangembang Arduino wis akeh gaweyan kanggo ngedhunake alangan kanggo mlebu menyang ekosistem, nanging ing njaba isih ana alas peteng sirkuit sing ora bisa diakses dening amatir.

Contone, lembar data. Iku misale jek kaya padha duwe kabeh, njupuk lan nggunakake. Nanging penulis sing cetha ora nyetel dhewe tugas popularizing mikrokontroler; Kadhangkala misale jeksing sengaja nyalahake istilah lan singkatan sing ora dingerteni nalika nerangake bab-bab sing prasaja supaya bisa mbingungake wong sing durung ngerti. Nanging ora kabeh dadi ala; yen dikarepake, peti mati mbukak.

Ing artikel iki aku bakal nuduhake pengalaman spesialis kamanungsan sing komunikasi karo lembar data kanggo tujuan hobi. Teks kasebut ditujokake kanggo para amatir sing wis tuwuh saka celana Arduino; iki nganggep sawetara pangerten babagan prinsip operasi mikrokontroler.

Aku bakal miwiti karo tradisional

Nguripake LED ing Arduino

Lan langsung kode:

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

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

“Apa iki? – A maca canggih bakal takon. – Apa sampeyan nulis soko menyang ndhaftar input PINB? Iku mung kanggo maca!” tenan, Dokumentasi Arduino, kaya umume artikel pendidikan ing Internet, nyatakake yen register iki mung diwaca. Aku mikir kaya ngono nganti aku maca maneh lembar data menyang Atmega328p, nyiapake artikel iki. Lan ana:

Kepiye lan kenapa maca lembar data yen mikrokontroler minangka hobi sampeyan

Iki minangka fungsi sing relatif anyar, ora ana ing Atmega8, ora kabeh wong ngerti utawa ora kasebut amarga kompatibilitas mundur. Nanging cukup cocok kanggo nuduhake idea sing lembar data worth maca kanggo nggunakake kabeh kemampuan chip, kalebu sethitik-dikenal. Lan iki ora mung alesan.

Apa maneh maca lembar data?

Biasane, insinyur Arduino, sing wis cukup main karo LED lan AnalogWrites, wiwit nyambungake kabeh jinis modul lan chip menyang papan, sing wis ana perpustakaan sing wis ditulis. Cepet utawa mengko, perpustakaan katon sing ora bisa digunakake minangka ngirim. Banjur amatir wiwit milih kanggo ndandani, lan banjur ...

Lan ana kedadeyan sing ora bisa dingerteni, mula sampeyan kudu pindhah menyang Google, maca akeh tutorial, narik bagean kode sing cocog kanggo wong liya lan pungkasane entuk target sampeyan. Iki menehi rasa prestasi sing kuat, nanging nyatane proses kasebut kaya reinventing setir kanthi mbalikke motor. Kajaba iku, pangerten babagan cara kerja sepeda iki ora mundhak. Aku ngerti, amarga aku nindakake iki dhewe kanggo dangu.

Yen tinimbang kegiatan sing nyenengake iki, aku wis ngentekake sawetara dina kanggo sinau dokumentasi Atmega328, aku bakal ngirit wektu akeh. Sawise kabeh, iki minangka mikrokontroler sing cukup prasaja.

Mangkono, sampeyan kudu maca lembar data paling sethithik kanggo mbayangno carane mikrokontroler umume bisa digunakake lan apa sing bisa ditindakake. Lan luwih:

  • kanggo mriksa lan ngoptimalake perpustakaan wong liya. Padha asring ditulis dening amatir padha reinvent setir; utawa, ing nalisir, penulis sengaja nggawe wong banget foolproof. Ayo dadi telu luwih gedhe lan luwih alon, nanging mesthi bakal bisa;

  • bisa nggunakake Kripik ing proyek sing ora ana sing nulis perpustakaan;

  • kanggo nggawe luwih gampang kanggo dhewe migrasi saka siji baris MK liyane;

  • kanggo pungkasanipun ngoptimalake kode lawas, kang ora pas karo Arduino;

  • kanggo sinau carane ngontrol chip sembarang langsung liwat ndhaftar sawijining, tanpa ngganggu sinau struktur perpustakaan sawijining, yen ana.

Apa nulis kanggo ndhaftar langsung nalika ana HAL lan LL?

Kosa Kata
HAL, Lapisan Abstraksi Dhuwur - perpustakaan kanggo ngontrol mikrokontroler kanthi tingkat abstraksi sing dhuwur. Yen sampeyan kudu nggunakake antarmuka SPI1, sampeyan mung ngatur lan ngaktifake SPI1 tanpa mikir bab kang ndhaftar tanggung jawab kanggo apa.
LL, Low Level API - perpustakaan sing ngemot makro utawa struktur kanthi alamat registrasi, ngidini sampeyan ngakses kanthi jeneng. DDRx, PORTx, PINx ing Atmega yaiku LL.

Sengketa ing topik "HAL, LL utawa ndhaftar" ajeg dumadi ing komentar ing Habré. Tanpa ngaku akses menyang kawruh astral, aku mung bakal nuduhake pengalaman lan pikirane amatir.

Duwe luwih utawa kurang figured metu Atmega lan wis maca artikel bab wonderness STM32, Aku tuku setengah rolas Papan beda - Discovery, lan Pil Biru, lan malah mung Kripik kanggo produk krasan. Kabeh padha nglumpukake bledug ing kothak kanggo rong taun. Kadhangkala aku kandha dhewe: "Iki, aku nguwasani STM akhir minggu iki," diluncurake CubeMX, nggawe persiyapan kanggo SPI, ndeleng tembok teks sing diasilake, kanthi bebas roso karo hak cipta STM, lan mutusake manawa iki akeh banget. .

Kepiye lan kenapa maca lembar data yen mikrokontroler minangka hobi sampeyan

Mesthi, sampeyan bisa ngerteni apa sing ditulis CubeMX ing kene. Nanging ing wektu sing padha cetha yen ngelingi kabeh tembung banjur ditulis nganggo tangan ora nyata. Lan kanggo debug iki, yen aku ora sengaja lali mriksa kothak ing Kubus, iku pancene apik.

Wis rong taun, aku isih ndilati lambe ST MCU Finder kanggo kabeh limo sedhep, nanging ngluwihi pangerten, Kripik, lan sengaja teka tengen artikel apik, sanajan babagan STM8. LAN dumadakan Aku temen maujud sing kabeh wektu iki aku wis nuthuk ing lawang mbukak: ndhaftar saka STM disusun ing cara sing padha karo sembarang MK liyane, lan Kubus ora perlu kanggo bisa karo wong-wong mau. Apa malah bisa? ..

HAL lan khusus STM32CubeMX minangka alat kanggo insinyur profesional sing kerja bareng karo chip STM32. Fitur utama yaiku tingkat abstraksi sing dhuwur, kemampuan kanggo migrasi kanthi cepet saka siji MCU menyang liyane lan malah saka siji inti menyang liyane, nalika isih ana ing garis STM32. Penggemar jarang nemoni masalah kasebut - pilihan mikrokontroler kita, minangka aturan, diwatesi ing macem-macem AliExpress, lan kita asring migrasi ing antarane chip sing beda banget - kita pindhah saka Atmega menyang STM, saka STM menyang ESP, utawa apa wae sing anyar karo kanca-kanca Cina. uncalan ing kita. HAL ora bakal mbantu ing kene, lan sinau babagan iki bakal entuk akeh wektu.

LL tetep - nanging saka iku kanggo ndhaftar ana setengah langkah. Secara pribadi, aku nemokake nulis macro karo alamat registrasi migunani: Aku sinau lembar data kanthi luwih teliti, aku mikir apa sing bakal aku butuhake ing mangsa ngarep lan apa sing ora bakal dakkarepake, aku nggawe program luwih apik, lan ing umum, ngatasi mbantu ngeling-eling.

Kajaba iku, ana nuansa karo STM32F103 sing populer - ana rong versi LL sing ora kompatibel, siji resmi saka STM, sing nomer loro saka Leaf Labs, digunakake ing proyek STM32duino. Yen sampeyan nulis perpustakaan sumber terbuka (lan aku duwe persis tugas kuwi), sampeyan kudu nggawe rong versi, utawa ngakses ndhaftar langsung.

Pungkasan, ngilangi LL, miturut pendapatku, nyederhanakake migrasi, utamane yen sampeyan ngrancang saka wiwitan proyek kasebut. Conto exaggerated: ayo nulis Arduino blink ing Atmel Studio tanpa 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++);
    } 
}

Supaya kode iki kedhip LED ing papan Cina karo STM8 (saka ST Visual Desktop), cukup kanggo ngganti rong alamat ing kono:

#define DDR_B 0x5007
#define OUT_B 0x5005

Ya, aku nggunakake fitur nyambungake LED ing papan tartamtu, bakal kedhip alon banget, nanging bakal kelakon!

Apa jinis lembar data sing ana?

Ing artikel lan forum, loro Rusia lan Inggris, "datasheets" tegese dokumentasi teknis kanggo chip, lan aku uga nindakake ing teks iki. Secara resmi, mung siji jinis dokumentasi kasebut:

Datasheet - Karakteristik kinerja, karakteristik taktik lan teknis. Wajib kanggo komponen elektronik apa wae. Informasi latar mburi migunani kanggo tetep ing tangan, nanging ana ora akeh kanggo maca ing thoughtfully. Nanging, Kripik sing luwih prasaja asring diwatesi ing lembar data supaya ora ngasilake dokumen sing ora perlu; ing kasus iki Manual Referensi klebu kene.

Manual Referensi – instruksi dhewe, buku sehat 1000+ kaca. Karya kabeh sing crammed menyang chip diterangake ing rinci. Dokumen utama kanggo nguwasani mikrokontroler. Boten kados datasheet, instruksi ditulis kanggo sawetara saka sudhut MKs, padha ngemot akèh informasi bab peripheral sing ora kasedhiya ing model tartamtu.

Manual Pemrograman utawa Manual Set Instruksi – instruksi kanggo printah mikrokontroler unik. Dirancang kanggo sing program ing basa Assembly. Penulis kompiler kanthi aktif nggunakake kode kasebut kanggo ngoptimalake kode, saengga ing kasus umum kita ora butuh. Nanging nggoleki kene migunani kanggo pangerten umum, kanggo sawetara printah tartamtu kayata metu interrupt, uga kanggo aktif nggunakake debugger.

Cathetan Aplikasi - tips migunani kanggo ngatasi masalah tartamtu, asring karo conto kode.

Lembar Salah – gambaran saka kasus prilaku chip non-standar karo opsi workaround, yen ana.

Apa sing ana ing lembar data

Langsung menyang Datasheet kita bisa uga mbutuhake bagean ing ngisor iki:

Ringkesan piranti – kaca pisanan lembar data kanthi ringkes nggambarake piranti kasebut. Banget migunani ing kahanan nalika sampeyan nemokake chip nang endi wae (weruh ing nyimpen, soldered, teka tengen sebutno) lan pengin ngerti apa iku.

Gambaran Umum – gambaran luwih rinci saka Kapabilitas Kripik saka baris.

Pinouts – diagram pinout kanggo kabeh paket chip bisa (pin kang ing wentis).

Katrangan Pin - katrangan babagan tujuan lan kemampuan saben pin.

Peta Memori - kita ora mbutuhake peta alamat ing memori, nanging kadhangkala uga kalebu tabel alamat pemblokiran ndhaptar.

Register Peta – Tabel alamat pamblokiran registrasi, minangka aturan, dumunung ing lembar data, lan ing Ref Manual - mung ngalih (alamat offsets).

Karakteristik Listrik – ing bagean iki kita utamané kasengsem ing ratings maksimum Absolute, listing beban maksimum saben chip. Ora kaya Atmega328p sing ora bisa dirusak, umume MK ora ngidini sampeyan nyambungake beban serius menyang pin, sing dadi kejutan sing ora nyenengake kanggo Arduinists.

Informasi Paket - gambar kasus sing kasedhiya, migunani nalika ngrancang papan sampeyan.

Manual Referensi struktural kasusun saka bagean pengabdian kanggo peripherals tartamtu dituduhake ing judhul. Saben bab bisa dipérang dadi telung bagéan:

Ringkesan, Pambuka, fitur - ringkesan kapabilitas periferal;

Katrangan Fungsional, Pandhuan panggunaan utawa mung blok utama bagean kasebut - deskripsi teks rinci babagan prinsip piranti periferal lan cara nggunakake;

Ndhaptar - katrangan saka register kontrol. Ing kasus-kasus prasaja kayata GPIO utawa SPI, iki bisa uga cukup kanggo miwiti nggunakake peripheral, nanging asring sampeyan isih kudu maca bagean sadurunge.

Cara maca lembar data

Datasheets, metu saka pakulinan, wedi karo volume lan turah mbrawah saka tembung sing ora dingerteni. Nyatane, kabeh ora medeni yen sampeyan ngerti sawetara hacks urip.

Instal maca PDF apik. Lembar data ditulis kanthi tradhisi instruksi kertas sing mulya, apik kanggo dicithak, dilebokake nganggo tetenger plastik lan jahitan. Hypertext ing wong-wong mau diamati ing jumlah tilak. Untunge, paling ora struktur dokumen kasebut dirancang kanthi tetenger, mula maca sing cocog karo navigasi sing gampang dibutuhake.

Lembar data dudu buku teks Stroustrup; isine ora perlu maca kabeh. Yen sampeyan nggunakake saran sadurunge, goleki bagean sing dikarepake ing garis tetenger.

Lembar data, utamane Referensi Manual, bisa njlèntrèhaké kabisan ora chip tartamtu, nanging kabeh baris. Iki tegese setengah, utawa malah loro-thirds saka informasi ora related kanggo chip Panjenengan. Sadurunge sinau registrasi TIM7, mlebu Gambaran Umum, sampeyan duwe?

Kanggo ngerti Inggris cukup kanggo tingkat dhasar. Lembar data kalebu setengah saka istilah sing ora pati ngerti karo penutur asli rata-rata, lan setengah saka struktur sambungan sing prasaja. Ana uga lembar data Cina sing apik banget ing basa Inggris Cina, sing setengah uga istilah, lan separo kapindho minangka kumpulan tembung acak.

Yen ketemu tembung sing ora pati ngerti, aja nyoba nerjemahake nganggo kamus Inggris-Rusia. Yen sampeyan bingung histerisis, banjur terjemahan "histeresis" ora bakal nggawe sampeyan luwih anget. Gunakake Google, Stack Overflow, Wikipedia, forum, ing ngendi konsep sing dibutuhake dijlentrehake nganggo tembung prasaja kanthi tuladha.

Cara sing paling apik kanggo ngerti apa sing diwaca yaiku mriksa ing tumindak. Mula, tetepake papan debug sing sampeyan kenal, utawa luwih apik loro, yen sampeyan isih salah paham lan ndeleng asap sihir.

Iku pakulinan apik kanggo nyimpen lembar data nalika sampeyan maca tutorial wong utawa sinau perpustakaan wong liya. Sampeyan bisa uga bisa nemokake solusi sing luwih optimal kanggo masalah sampeyan. Lan kosok balene - yen sampeyan ora ngerti saka lembar data carane ndhaftar bener bisa digunakake, google: paling kamungkinan, ana wong wis diterangake kabeh ing tembung prasaja utawa ninggalake kode cetha ing GitHub.

Kosa Kata

Sawetara tembung lan simbol sing migunani kanggo mbantu sampeyan cepet sinau babagan lembar data. Apa aku eling ing sawetara dina pungkasan, tambahan lan koreksi olèh.

Listrik
VDC, Bener - "plus", panganan
Vss, Vee - "minus", bumi
saiki – saiki
voltase - voltase
kanggo nglelebke saiki - bisa minangka "lemah" kanggo mbukak njaba
kanggo sumber saiki - daya beban njaba
sink dhuwur / sumber pin - pin karo tambah "toleransi" kanggo mbukak

IO
H, Dhuwur - ing pin Vcc
L, Low - ing pin Vss
Impedansi Dhuwur, Hi-Z, ngambang - ora ana apa-apa ing pin, "resistensi dhuwur", meh ora katon ing jagad njaba.
lemah narik munggah, lemah narik mudhun – resistor pull-up/pull-mudhun dibangun, kira-kira padha karo 50 kOhm (ndeleng lembar data). Iki digunakake, contone, kanggo nyegah pin input saka dangling ing udhara, nyebabake positif palsu. Banget - amarga gampang "ngganggu" dheweke.
push narik – mode output pin, kang ngalih antarane High и kurang - OUTPUT biasa saka Arduino.
mbukak saluran – sebutan saka mode output kang pin bisa salah siji kurang, utawa Impedansi dhuwur / Ngambang. Kajaba iku, meh tansah iki dudu saluran mbukak "nyata", ana dioda protèktif, resistor, lan liya-liyane. Iki mung sebutan kanggo mode lemah / ora ana.
saluran mbukak bener - nanging iki saluran mbukak nyata: pin ndadékaké langsung menyang lemah yen mbukak, utawa tetep ing limbo yen ditutup. Iki tegese, yen perlu, voltase sing luwih gedhe tinimbang Vcc bisa dilewati, nanging maksimal isih ditemtokake ing lembar data ing bagean kasebut. Ratings maksimum Absolute / voltase.

Antarane
ing seri - disambungake ing seri
kanggo chain – Kripik klumpukne menyang chain nggunakake sambungan serial, nambah nomer output.
shift – shift, biasane nuduhake shift dicokot. masing-masing, kanggo ngalih ing и kanggo ngalih metu - nampa lan ngirim data dicokot dening dicokot.
latch - kancing sing nutupi buffer nalika bit dipindhah liwat. Nalika transfer rampung, tutup mbukak lan bit wiwit operate.
kanggo jam ing – nindakake transfer bit-by-bit, pindhah kabeh bit menyang panggonan tengen.
buffer pindho, ndhaftar bayangan, daftar preload – sebutan sajarah, nalika ndhaftar kudu bisa nampa data anyar, nanging terus nganti sawetara titik. Contone, supaya PWM bisa mlaku kanthi bener, paramèter (siklus tugas, frekuensi) ora kudu diganti nganti siklus saiki rampung, nanging paramèter anyar bisa ditransfer. Mulane, sing saiki disimpen ing ndhaftar bayangan, lan anyar tiba menyang daftar preload, kang ditulis kanggo ndhaftar chip cocog.

Kabeh jinis
prescaler - prescaler frekuensi
kanggo nyetel dicokot - nyetel bit kanggo 1
kanggo mbusak / ngreset dicokot - reset bit menyang 0 (Reset - Fitur lembar data STM)

Apa mbesuk

Umumé, bagean praktis direncanakake ing kene kanthi demonstrasi telung proyek ing STM32 lan STM8, digawe khusus kanggo artikel iki nggunakake lembar data, kanthi bolam lampu, SPI, timer, PWM lan interrupts:

Kepiye lan kenapa maca lembar data yen mikrokontroler minangka hobi sampeyan

Nanging ana akeh teks, mula proyek kasebut dikirim menyang bagean kapindho.

Katrampilan maca lembar data bakal mbantu sampeyan babagan hobi, nanging ora bisa ngganti komunikasi langsung karo kanca hobi ing forum lan obrolan. Kanggo tujuan iki, sampeyan isih kudu ngapikake basa Inggris dhisik. Mula, sing wis rampung maca bakal entuk hadiah khusus: rong pelajaran gratis ing Skyeng kanthi pembayaran pertama nggunakake kode kasebut. HABR2.

Source: www.habr.com

Tuku hosting sing dipercaya kanggo situs kanthi proteksi DDoS, server VPS VDS 🔥 Tuku hosting situs web sing bisa dipercaya nganggo proteksi DDoS, server VPS VDS | ProHoster