อย่างไรและทำไมจึงควรอ่านเอกสารข้อมูลหากไมโครคอนโทรลเลอร์เป็นงานอดิเรกของคุณ

อย่างไรและทำไมจึงควรอ่านเอกสารข้อมูลหากไมโครคอนโทรลเลอร์เป็นงานอดิเรกของคุณ

ไมโครอิเล็กทรอนิกส์เป็นงานอดิเรกที่ทันสมัยในช่วงไม่กี่ปีที่ผ่านมา ต้องขอบคุณ Arduino ที่มีมนต์ขลัง แต่นี่คือปัญหา: เมื่อมีความสนใจเพียงพอ คุณสามารถเติบโตเร็วกว่า DigitalWrite() ได้อย่างรวดเร็ว แต่สิ่งที่ต้องทำต่อไปนั้นยังไม่ชัดเจนนัก นักพัฒนา Arduino ได้ใช้ความพยายามอย่างมากในการลดอุปสรรคในการเข้าสู่ระบบนิเวศของตน แต่ภายนอกนั้นยังมีป่ามืดแห่งวงจรที่รุนแรงซึ่งมือสมัครเล่นไม่สามารถเข้าถึงได้

ตัวอย่างเช่น เอกสารข้อมูลทางเทคนิค เหมือนมีทุกอย่างก็เอาไปใช้ แต่ผู้เขียนของพวกเขาไม่ได้กำหนดหน้าที่ของตัวเองในการเผยแพร่ไมโครคอนโทรลเลอร์อย่างชัดเจน บางครั้ง ดูเหมือนว่าพวกเขาจงใจใช้คำและคำย่อที่เข้าใจยากในทางที่ผิดเมื่ออธิบายสิ่งที่เรียบง่ายเพื่อสร้างความสับสนให้กับผู้ที่ไม่ได้ฝึกหัดให้มากที่สุด แต่ไม่ใช่ทุกอย่างจะแย่นักหากต้องการโลงศพก็จะเปิดออก

ในบทความนี้ ผมจะแบ่งปันประสบการณ์ของผู้เชี่ยวชาญด้านมนุษยศาสตร์ที่สื่อสารกับเอกสารข้อมูลเพื่อวัตถุประสงค์ในงานอดิเรก ข้อความนี้มีไว้สำหรับมือสมัครเล่นที่เติบโตจากกางเกง Arduino โดยถือว่ามีความเข้าใจหลักการทำงานของไมโครคอนโทรลเลอร์

ฉันจะเริ่มต้นด้วยแบบดั้งเดิม

กระพริบ LED บน Arduino

และรหัสทันที:

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

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

"นี่คืออะไร? – ผู้อ่านที่มีความซับซ้อนจะถาม – ทำไมคุณถึงเขียนบางสิ่งลงในการลงทะเบียนอินพุต PINB? มีไว้เพื่อการอ่านเท่านั้น!” จริงหรือ, เอกสารประกอบของ Arduinoเช่นเดียวกับบทความด้านการศึกษาส่วนใหญ่บนอินเทอร์เน็ต ระบุว่าการลงทะเบียนนี้เป็นแบบอ่านอย่างเดียว ฉันเองก็คิดแบบนั้นจนได้อ่านซ้ำ แผ่นข้อมูล ถึง Atmega328p กำลังเตรียมบทความนี้ และที่นั่น:

อย่างไรและทำไมจึงควรอ่านเอกสารข้อมูลหากไมโครคอนโทรลเลอร์เป็นงานอดิเรกของคุณ

นี่เป็นฟังก์ชันที่ค่อนข้างใหม่ ไม่ได้อยู่ใน Atmega8 ไม่ใช่ทุกคนที่รู้เกี่ยวกับมัน หรือไม่ได้กล่าวถึงเหตุผลของความเข้ากันได้แบบย้อนหลัง แต่ค่อนข้างเหมาะสมสำหรับการสาธิตแนวคิดว่าควรอ่านเอกสารข้อมูลเพื่อใช้ความสามารถทั้งหมดของชิปรวมถึงความสามารถที่ไม่ค่อยมีใครรู้จักด้วย และนี่ไม่ใช่เหตุผลเดียว

เหตุใดจึงต้องอ่านเอกสารข้อมูลทางเทคนิค

โดยปกติแล้ววิศวกร Arduino ที่เล่นกับ LED และ AnalogWrites ได้เพียงพอแล้วจะเริ่มเชื่อมต่อโมดูลและชิปทุกประเภทเข้ากับบอร์ดซึ่งมีไลบรารีที่เขียนอยู่แล้ว ไม่ช้าก็เร็วห้องสมุดก็ปรากฏขึ้นซึ่งใช้งานไม่ได้เท่าที่ควร จากนั้นมือสมัครเล่นก็เริ่มหยิบมันมาซ่อม แล้วก็...

และมีบางอย่างที่ไม่อาจเข้าใจได้เกิดขึ้นที่นั่น ดังนั้นคุณต้องไปที่ Google อ่านบทช่วยสอนมากมาย ดึงโค้ดที่เหมาะสมของใครบางคนออกมา และในที่สุดก็บรรลุเป้าหมายของคุณ สิ่งนี้ให้ความรู้สึกถึงความสำเร็จที่ทรงพลัง แต่ในความเป็นจริงแล้ว กระบวนการนี้เหมือนกับการสร้างล้อใหม่โดยวิศวกรรมย้อนกลับของรถจักรยานยนต์ ยิ่งไปกว่านั้น ความเข้าใจเกี่ยวกับวิธีการทำงานของจักรยานยนต์คันนี้ไม่ได้เพิ่มขึ้น ฉันรู้เพราะฉันทำสิ่งนี้ด้วยตัวเองมาเป็นเวลานานแล้ว

หากแทนที่จะใช้เวลาสองสามวันศึกษาเอกสาร Atmega328 แทนที่จะทำกิจกรรมที่น่าตื่นเต้นนี้ ฉันคงประหยัดเวลาได้มาก ท้ายที่สุดแล้วนี่เป็นไมโครคอนโทรลเลอร์ที่ค่อนข้างง่าย

ดังนั้น อย่างน้อยคุณต้องอ่านเอกสารข้อมูลเพื่อจินตนาการว่าโดยทั่วไปไมโครคอนโทรลเลอร์ทำงานอย่างไรและทำอะไรได้บ้าง และต่อไป:

  • เพื่อตรวจสอบและเพิ่มประสิทธิภาพไลบรารีของผู้อื่น มักเขียนโดยมือสมัครเล่นกลุ่มเดียวกันที่คิดค้นวงล้อขึ้นมาใหม่ หรือในทางกลับกัน ผู้เขียนจงใจทำให้เข้าใจผิดได้มากเกินไป ปล่อยให้มันใหญ่ขึ้นและช้าลงสามเท่า แต่มันจะได้ผลอย่างแน่นอน

  • เพื่อให้สามารถใช้ชิปในโครงการที่ไม่มีใครเขียนไลบรารี่

  • เพื่อให้ง่ายขึ้นสำหรับตัวคุณเองในการโยกย้ายจากสาย MK หนึ่งไปยังอีกสายหนึ่ง

  • เพื่อเพิ่มประสิทธิภาพโค้ดเก่าของคุณซึ่งไม่เหมาะกับ Arduino ในที่สุด

  • เพื่อเรียนรู้วิธีควบคุมชิปโดยตรงผ่านรีจิสเตอร์ โดยไม่ต้องยุ่งกับการศึกษาโครงสร้างของไลบรารี ถ้ามี

ทำไมต้องเขียนถึงการลงทะเบียนโดยตรงเมื่อมี HAL และ LL?

อภิธานศัพท์
HAL เลเยอร์นามธรรมสูง – ไลบรารีสำหรับควบคุมไมโครคอนโทรลเลอร์ที่มีนามธรรมในระดับสูง หากคุณต้องการใช้อินเทอร์เฟซ SPI1 คุณเพียงกำหนดค่าและเปิดใช้งาน SPI1 โดยไม่ต้องคำนึงว่ารีจิสเตอร์ใดต้องรับผิดชอบต่อสิ่งใด
LL, API ระดับต่ำ – ไลบรารีที่ประกอบด้วยแมโครหรือโครงสร้างพร้อมที่อยู่รีจิสเตอร์ ทำให้คุณสามารถเข้าถึงได้โดยใช้ชื่อ DDRx, PORTx, PINx บน Atmega คือ LL

ข้อพิพาทในหัวข้อ “HAL, LL หรือทะเบียน” มักเกิดขึ้นในความคิดเห็นเกี่ยวกับHabré โดยไม่ต้องอ้างสิทธิ์ในการเข้าถึงความรู้เกี่ยวกับดวงดาว ฉันจะแบ่งปันประสบการณ์และความคิดสมัครเล่นของฉัน

เมื่อเข้าใจ Atmega ไม่มากก็น้อยและเมื่อได้อ่านบทความเกี่ยวกับความมหัศจรรย์ของ STM32 ฉันจึงซื้อบอร์ดที่แตกต่างกันครึ่งโหล - Discovery และ Blue Pills และแม้แต่ชิปสำหรับผลิตภัณฑ์โฮมเมดของฉัน พวกเขาทั้งหมดเก็บฝุ่นในกล่องเป็นเวลาสองปี บางครั้งฉันก็พูดกับตัวเองว่า: “นั่นแหละ เริ่มตั้งแต่สุดสัปดาห์นี้ ฉันจะเชี่ยวชาญ STM” เปิดตัว CubeMX สร้างการตั้งค่าสำหรับ SPI ดูที่ผนังข้อความผลลัพธ์ ปรุงแต่งด้วยลิขสิทธิ์ STM อย่างไม่เห็นแก่ตัว และตัดสินใจว่าสิ่งนี้ก็เช่นกัน มาก.

อย่างไรและทำไมจึงควรอ่านเอกสารข้อมูลหากไมโครคอนโทรลเลอร์เป็นงานอดิเรกของคุณ

แน่นอน คุณสามารถเข้าใจได้ว่า CubeMX เขียนอะไรไว้ที่นี่ แต่ในขณะเดียวกันก็ชัดเจนว่าการจดจำถ้อยคำทั้งหมดแล้วเขียนด้วยมือนั้นไม่สมจริง และเพื่อแก้ไขข้อบกพร่องนี้ ถ้าฉันลืมทำเครื่องหมายในช่องใน Cube โดยไม่ได้ตั้งใจ ก็ไม่เป็นไร

สองปีผ่านไป ฉันยังคงเลียริมฝีปากอยู่ ตัวค้นหา ST MCU สำหรับของอร่อยทุกประเภท แต่เกินความเข้าใจของฉัน มันฝรั่งทอด และบังเอิญเจอ บทความที่ยอดเยี่ยมแม้ว่าจะเกี่ยวกับ STM8 ก็ตาม และ ทันใดนั้น ฉันรู้ว่าตลอดเวลานี้ฉันได้เคาะประตูที่เปิดอยู่: การลงทะเบียนของ STM นั้นถูกจัดเรียงในลักษณะเดียวกับของ MK อื่น ๆ และ Cube ไม่จำเป็นต้องทำงานร่วมกับพวกมัน มันเป็นไปได้ด้วยเหรอ?..

HAL และโดยเฉพาะ STM32CubeMX เป็นเครื่องมือสำหรับวิศวกรมืออาชีพที่ทำงานอย่างใกล้ชิดกับชิป STM32 คุณสมบัติหลักคือนามธรรมในระดับสูง ความสามารถในการโยกย้ายจาก MCU หนึ่งไปยังอีก MCU ได้อย่างรวดเร็ว และแม้แต่จากคอร์หนึ่งไปยังอีกคอร์หนึ่ง โดยที่ยังคงอยู่ในบรรทัด STM32 ผู้ที่ชื่นชอบงานอดิเรกไม่ค่อยประสบปัญหาดังกล่าว - ตามกฎแล้วตัวเลือกไมโครคอนโทรลเลอร์ของเรานั้น จำกัด อยู่ที่ประเภท AliExpress และเรามักจะย้ายระหว่างชิปที่แตกต่างกันอย่างสิ้นเชิง - เราย้ายจาก Atmega ไปยัง STM จาก STM เป็น ESP หรือสิ่งใหม่ ๆ เพื่อนชาวจีนของเรา โยนใส่เรา HAL จะไม่ช่วยอะไรที่นี่ และการศึกษามันจะกินเวลามาก

LL ยังคงอยู่ - แต่จากนี้ไปยังการลงทะเบียนจะมีอีกครึ่งขั้นตอน โดยส่วนตัวแล้ว ฉันพบว่าการเขียนมาโครด้วยที่อยู่ลงทะเบียนมีประโยชน์: ฉันศึกษาเอกสารข้อมูลอย่างละเอียดมากขึ้น ฉันคิดว่าฉันต้องการอะไรในอนาคตและไม่ต้องการอย่างแน่นอน ฉันจะจัดโครงสร้างโปรแกรมให้ดีขึ้น และโดยทั่วไปแล้ว การเอาชนะจะช่วยให้จดจำได้

นอกจากนี้ยังมีความแตกต่างเล็กน้อยกับ STM32F103 ยอดนิยม - มี LL เวอร์ชันที่เข้ากันไม่ได้สองเวอร์ชันหนึ่งเวอร์ชันอย่างเป็นทางการจาก STM และเวอร์ชันที่สองจาก Leaf Labs ที่ใช้ในโปรเจ็กต์ STM32duino หากคุณเขียนไลบรารีโอเพ่นซอร์ส (และฉันก็มี งานดังกล่าว) คุณต้องสร้างสองเวอร์ชันหรือเข้าถึงรีจิสเตอร์โดยตรง

ในความคิดของฉัน การกำจัด LL จะทำให้การย้ายข้อมูลง่ายขึ้น โดยเฉพาะอย่างยิ่งหากคุณวางแผนไว้ตั้งแต่เริ่มต้นโครงการ ตัวอย่างที่พูดเกินจริง: มาเขียน Arduino กะพริบใน Atmel Studio โดยไม่มี 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++);
    } 
}

เพื่อให้รหัสนี้กะพริบ LED บนกระดานจีนด้วย STM8 (จาก ST Visual Desktop) ก็เพียงพอที่จะเปลี่ยนที่อยู่สองแห่งในนั้น:

#define DDR_B 0x5007
#define OUT_B 0x5005

ใช่ครับ ผมใช้ฟีเจอร์เชื่อมต่อ LED กับบอร์ดเฉพาะ มันจะกระพริบช้ามากแต่ก็จะเกิดขึ้น!

เอกสารข้อมูลประเภทใดบ้างที่มี?

ในบทความและในฟอรัมทั้งภาษารัสเซียและภาษาอังกฤษ “เอกสารข้อมูล” หมายถึงเอกสารทางเทคนิคสำหรับชิป และฉันก็ทำเช่นเดียวกันในข้อความนี้ อย่างเป็นทางการเป็นเพียงเอกสารประเภทหนึ่งเท่านั้น:

แผ่นข้อมูล – ลักษณะสมรรถนะ คุณลักษณะทางยุทธวิธีและทางเทคนิค บังคับสำหรับส่วนประกอบอิเล็กทรอนิกส์ใดๆ ข้อมูลความเป็นมามีประโยชน์ในการเก็บไว้ แต่ก็ไม่มีอะไรให้อ่านอย่างละเอียดมากนัก อย่างไรก็ตาม ชิปที่เรียบง่ายกว่ามักถูกจำกัดอยู่ในแผ่นข้อมูลเพื่อไม่ให้สร้างเอกสารที่ไม่จำเป็น ในกรณีนี้ คู่มืออ้างอิง รวมอยู่ที่นี่

คู่มืออ้างอิง – คำแนะนำด้วยตนเอง หนังสือเพื่อสุขภาพมากกว่า 1000 หน้า มีการอธิบายรายละเอียดของการทำงานของทุกสิ่งที่อัดแน่นอยู่ในชิป เอกสารหลักสำหรับการควบคุมไมโครคอนโทรลเลอร์ ไม่เหมือน แผ่นข้อมูลคำแนะนำถูกเขียนขึ้นสำหรับ MK ที่หลากหลาย โดยมีข้อมูลมากมายเกี่ยวกับอุปกรณ์ต่อพ่วงที่ไม่มีในรุ่นเฉพาะของคุณ

คู่มือการเขียนโปรแกรม หรือ คู่มือชุดคำสั่ง – คำแนะนำสำหรับคำสั่งไมโครคอนโทรลเลอร์เฉพาะ ออกแบบมาสำหรับผู้ที่เขียนโปรแกรมเป็นภาษาแอสเซมบลี ผู้เขียนคอมไพเลอร์ใช้มันเพื่อเพิ่มประสิทธิภาพโค้ด ดังนั้นในกรณีทั่วไป เราก็ไม่จำเป็นต้องใช้มัน แต่การดูที่นี่มีประโยชน์สำหรับความเข้าใจทั่วไป สำหรับคำสั่งเฉพาะบางอย่าง เช่น การออกจากการขัดจังหวะ เช่นเดียวกับการใช้งานดีบักเกอร์ในเชิงรุก

แอปพลิเคชันหมายเหตุ – เคล็ดลับที่เป็นประโยชน์สำหรับการแก้ปัญหาเฉพาะ โดยมักจะมีตัวอย่างโค้ด

แผ่น Errata – คำอธิบายกรณีของพฤติกรรมชิปที่ไม่ได้มาตรฐานพร้อมตัวเลือกวิธีแก้ปัญหา ถ้ามี

มีอะไรอยู่ในเอกสารข้อมูลทางเทคนิค

โดยตรงไปยัง แผ่นข้อมูล เราอาจต้องการส่วนต่อไปนี้:

สรุปอุปกรณ์ – หน้าแรกของแผ่นข้อมูลอธิบายอุปกรณ์โดยย่อ มีประโยชน์มากในสถานการณ์เมื่อคุณพบชิปที่ไหนสักแห่ง (เห็นมันในร้านค้า บัดกรีมัน และเจอคนพูดถึง) และต้องการเข้าใจว่ามันคืออะไร

ลักษณะโดยทั่วไป – คำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับความสามารถของชิปจากบรรทัด

pinouts – แผนภาพ pinout สำหรับแพ็คเกจชิปที่เป็นไปได้ทั้งหมด (พินใดอยู่ที่ขาข้างใด)

คำอธิบายพิน – คำอธิบายวัตถุประสงค์และความสามารถของแต่ละพิน

หน่วยความจำแผนที่ – เราไม่น่าจะจำเป็นต้องมีแผนผังที่อยู่ในหน่วยความจำ แต่บางครั้งมันก็รวมตารางที่อยู่บล็อกการลงทะเบียนด้วย

ลงทะเบียนแผนที่ – ตามกฎแล้วตารางที่อยู่ของบล็อกการลงทะเบียนจะอยู่ในแผ่นข้อมูลและใน คู่มืออ้างอิง – เฉพาะกะ (การชดเชยที่อยู่).

ลักษณะไฟฟ้า – ในส่วนนี้เราสนใจเป็นหลัก เรตติ้งสูงสุดแน่นอนแสดงรายการโหลดสูงสุดต่อชิป แตกต่างจาก Atmega328p ที่ทำลายไม่ได้ MK ส่วนใหญ่ไม่อนุญาตให้คุณเชื่อมต่อโหลดที่ร้ายแรงเข้ากับพินซึ่งกลายเป็นเรื่องน่าประหลาดใจสำหรับ Arduinists

ข้อมูลแพ็คเกจ – ภาพวาดของเคสที่มีอยู่ ซึ่งมีประโยชน์เมื่อออกแบบบอร์ดของคุณ

คู่มืออ้างอิง โครงสร้างประกอบด้วยส่วนที่เกี่ยวกับอุปกรณ์ต่อพ่วงเฉพาะที่ระบุในชื่อ แต่ละบทสามารถแบ่งออกเป็นสามส่วน:

ขององค์กร, บทนำ, คุณสมบัติ – ภาพรวมของความสามารถด้านอุปกรณ์ต่อพ่วง

ลักษณะหน้าที่, คู่มือการใช้งาน หรือเพียงแค่บล็อกหลักของส่วน - คำอธิบายข้อความโดยละเอียดเกี่ยวกับหลักการของอุปกรณ์ต่อพ่วงและวิธีการใช้งาน

ลงทะเบียน – คำอธิบายของการลงทะเบียนการควบคุม ในกรณีง่ายๆ เช่น GPIO หรือ SPI การดำเนินการนี้อาจเพียงพอที่จะเริ่มใช้อุปกรณ์ต่อพ่วง แต่บ่อยครั้งคุณยังคงต้องอ่านส่วนก่อนหน้า

วิธีอ่านเอกสารข้อมูลทางเทคนิค

เอกสารข้อมูลนิสัยทำให้คุณหวาดกลัวด้วยปริมาณและคำศัพท์ที่เข้าใจยากมากมาย ที่จริงแล้วทุกสิ่งไม่ได้น่ากลัวนักหากคุณรู้จักเคล็ดลับชีวิตบางประการ

ติดตั้ง โปรแกรมอ่าน PDF ที่ดี. เอกสารข้อมูลเขียนตามประเพณีอันรุ่งโรจน์ของคำแนะนำการใช้กระดาษ เหมาะสำหรับพิมพ์ ใส่ที่คั่นหนังสือพลาสติก และเย็บ ไฮเปอร์เท็กซ์ในนั้นถูกสังเกตในปริมาณการติดตาม โชคดีที่อย่างน้อยโครงสร้างของเอกสารก็ได้รับการออกแบบให้มีบุ๊กมาร์ก ดังนั้นโปรแกรมอ่านที่เหมาะสมพร้อมการนำทางที่ง่ายดายจึงจำเป็นอย่างยิ่ง

เอกสารข้อมูลไม่ใช่ตำราเรียนของ Stroustrup แต่มี ไม่จำเป็นต้องอ่านทุกอย่าง. หากคุณใช้คำแนะนำก่อนหน้านี้ เพียงค้นหาส่วนที่ต้องการในแถบบุ๊กมาร์ก

เอกสารข้อมูลทางเทคนิคโดยเฉพาะ คู่มืออ้างอิงสามารถอธิบายความสามารถของชิปได้ไม่เจาะจงแต่ ทั้งบรรทัด. ซึ่งหมายความว่าข้อมูลครึ่งหนึ่งหรือสองในสามไม่เกี่ยวข้องกับชิปของคุณ ก่อนศึกษาการลงทะเบียน TIM7 ให้เช็คอินก่อน ลักษณะโดยทั่วไปคุณมีมันไหม?

ทราบ английский เพียงพอสำหรับ ระดับพื้นฐาน. เอกสารข้อมูลประกอบด้วยครึ่งหนึ่งของคำศัพท์ที่ไม่คุ้นเคยกับเจ้าของภาษาโดยเฉลี่ย และครึ่งหนึ่งของโครงสร้างการเชื่อมต่ออย่างง่าย นอกจากนี้ยังมีเอกสารข้อมูลภาษาจีนที่ยอดเยี่ยมในภาษาอังกฤษแบบจีน โดยครึ่งหนึ่งเป็นคำศัพท์ด้วย และครึ่งหลังเป็นชุดคำศัพท์แบบสุ่ม

ถ้าเจอ. คำที่ไม่คุ้นเคยอย่าพยายามแปลโดยใช้พจนานุกรมภาษาอังกฤษเป็นภาษารัสเซีย หากคุณกำลังสับสน ฮิสเทอรีซิสแล้วคำแปล “ฮิสเทรีซิส” จะไม่ทำให้คุณอบอุ่นขึ้น ใช้ Google, Stack Overflow, Wikipedia, ฟอรัม โดยต้องมีแนวคิดที่ต้องการ อธิบายด้วยคำง่ายๆ พร้อมตัวอย่าง.

วิธีที่ดีที่สุดในการทำความเข้าใจสิ่งที่คุณอ่านคือ ตรวจสอบการดำเนินการ. ดังนั้น ควรเตรียมบอร์ดตรวจแก้จุดบกพร่องที่คุณคุ้นเคยไว้ หรือดีกว่าสองบอร์ด เผื่อในกรณีที่คุณยังเข้าใจผิดและเห็นควันเวทย์มนตร์

เป็นนิสัยที่ดีที่จะเก็บแผ่นข้อมูลของคุณไว้ใกล้มือเมื่อคุณ กำลังอ่านบทช่วยสอนของใครบางคน หรือศึกษาห้องสมุดของคนอื่น ค่อนข้างเป็นไปได้ที่คุณจะพบวิธีแก้ปัญหาที่เหมาะสมที่สุดสำหรับปัญหาของคุณ และในทางกลับกัน - หากคุณไม่เข้าใจจากแผ่นข้อมูลว่าการลงทะเบียนทำงานอย่างไร Google it: เป็นไปได้มากว่ามีคนอธิบายทุกอย่างด้วยคำง่ายๆ หรือทิ้งโค้ดที่ชัดเจนไว้ใน GitHub

อภิธานศัพท์

คำและสัญลักษณ์ที่เป็นประโยชน์บางส่วนเพื่อช่วยให้คุณคุ้นเคยกับเอกสารข้อมูลได้อย่างรวดเร็ว สิ่งที่ฉันจำได้ในช่วงสองสามวันที่ผ่านมา ยินดีต้อนรับการเพิ่มเติมและการแก้ไข

ไฟฟ้า
vcc, จริง – “บวก” อาหาร
ปะทะ, วี – “ลบ” โลก
ปัจจุบัน - ปัจจุบัน
แรงดันไฟฟ้า - แรงดันไฟฟ้า
เพื่อจมกระแส – ทำงานเป็น "กราวด์" สำหรับภาระภายนอก
เพื่อเป็นแหล่งกระแส – กำลังโหลดภายนอก
พินซิงค์/แหล่งที่มาสูง – ปักหมุดด้วย “ความอดทน” ที่เพิ่มขึ้นในการโหลด

IO
H,สูง – บนพิน Vcc
L,ต่ำ – บนพิน Vss
ความต้านทานสูง, ไฮ-ซี, ที่ลอย – ไม่มีอะไรบนพิน “ความต้านทานสูง” มันแทบจะมองไม่เห็นจากโลกภายนอก
ดึงขึ้นอย่างอ่อนแอ, ดึงลงอย่างอ่อนแอ – ตัวต้านทานแบบดึงขึ้น/ดึงลงในตัว ประมาณเทียบเท่ากับ 50 kOhm (ดูเอกสารข้อมูล) ตัวอย่างเช่น ใช้เพื่อป้องกันพินอินพุตไม่ให้ห้อยอยู่ในอากาศ ทำให้เกิดผลบวกลวง อ่อนแอ - เพราะมันง่ายที่จะ "ขัดขวาง" เขา
ผลักดึง – โหมดเอาต์พุตพินซึ่งจะสลับไปมาระหว่าง จุดสูง и ต่ำ – เอาต์พุตปกติจาก Arduino
เปิดท่อระบายน้ำ – การกำหนดโหมดเอาท์พุตซึ่งพินสามารถเป็นได้ทั้ง ต่ำหรือ ความต้านทานสูง/ลอยตัว. ยิ่งไปกว่านั้น เกือบทุกครั้งนี่ไม่ใช่ท่อระบายน้ำแบบเปิด "ของจริง" มีไดโอดป้องกัน ตัวต้านทาน และอื่นๆ อีกมากมาย นี่เป็นเพียงการกำหนดสำหรับโหมดกราวด์/ไม่มี
ท่อระบายน้ำแบบเปิดที่แท้จริง - แต่นี่เป็นท่อระบายน้ำแบบเปิดจริงๆ: หมุดจะนำไปสู่พื้นโดยตรงหากเปิดอยู่ หรือยังคงอยู่ในบริเวณขอบรกหากปิด ซึ่งหมายความว่า หากจำเป็น สามารถส่งผ่านแรงดันไฟฟ้าที่มากกว่า Vcc ได้ แต่ค่าสูงสุดยังคงระบุไว้ในแผ่นข้อมูลในส่วนนี้ การให้คะแนน/แรงดันไฟฟ้าสูงสุดสัมบูรณ์.

อินเตอร์เฟซ
ในซีรีส์ - เชื่อมต่อกันเป็นอนุกรม
ล่ามโซ่ – ประกอบชิปเข้ากับห่วงโซ่โดยใช้การเชื่อมต่อแบบอนุกรม เพื่อเพิ่มจำนวนเอาต์พุต
เปลี่ยน – shift มักจะหมายถึงการเปลี่ยนแปลงเล็กน้อย ตามลำดับ เพื่อเปลี่ยนเข้า и เพื่อเปลี่ยนออก – รับและส่งข้อมูลทีละบิต
สลัก – สลักที่ปิดบัฟเฟอร์ในขณะที่บิตถูกเลื่อนผ่าน เมื่อการถ่ายโอนเสร็จสิ้น วาล์วจะเปิดขึ้นและบิตจะเริ่มทำงาน
เพื่อตอกบัตรเข้า – ทำการถ่ายโอนทีละบิต เลื่อนบิตทั้งหมดไปยังตำแหน่งที่ถูกต้อง
บัฟเฟอร์คู่, ทะเบียนเงา, โหลดลงทะเบียนล่วงหน้า – การกำหนดประวัติเมื่อรีจิสเตอร์ต้องสามารถรับข้อมูลใหม่ได้แต่คงไว้จนถึงจุดหนึ่ง ตัวอย่างเช่น เพื่อให้ PWM ทำงานอย่างถูกต้อง พารามิเตอร์ (รอบการทำงาน, ความถี่) ไม่ควรเปลี่ยนแปลงจนกว่ารอบปัจจุบันจะสิ้นสุด แต่พารามิเตอร์ใหม่สามารถถ่ายโอนได้แล้ว ดังนั้นปัจจุบันจึงเก็บไว้ที่ ทะเบียนเงาและมีสิ่งใหม่เข้ามา โหลดลงทะเบียนล่วงหน้ากำลังเขียนไปยังชิปรีจิสเตอร์ที่เกี่ยวข้อง

ทุกประเภท
พรีสเกลเลอร์ – พรีสเกลเลอร์ความถี่
เพื่อตั้งค่าเล็กน้อย – ตั้งค่าบิตเป็น 1
เพื่อล้าง/รีเซ็ตเล็กน้อย – รีเซ็ตบิตเป็น 0 (ตั้งใหม่ – คุณสมบัติแผ่นข้อมูล STM)

มีอะไรต่อไป

โดยทั่วไป มีการวางแผนส่วนที่ใช้งานได้จริงที่นี่พร้อมการสาธิตสามโครงการใน STM32 และ STM8 ซึ่งจัดทำขึ้นโดยเฉพาะสำหรับบทความนี้โดยใช้เอกสารข้อมูล พร้อมหลอดไฟ, SPI, ตัวจับเวลา, PWM และการขัดจังหวะ:

อย่างไรและทำไมจึงควรอ่านเอกสารข้อมูลหากไมโครคอนโทรลเลอร์เป็นงานอดิเรกของคุณ

แต่มีข้อความเยอะจึงส่งโปรเจ็กต์ไปภาคสอง

ทักษะการอ่านเอกสารข้อมูลจะช่วยให้คุณมีงานอดิเรกได้ แต่ไม่น่าจะแทนที่การสื่อสารสดกับมือสมัครเล่นในฟอรัมและการแชทได้ เพื่อจุดประสงค์นี้ คุณยังต้องพัฒนาภาษาอังกฤษของคุณก่อนอื่น ดังนั้นผู้ที่อ่านจบจะได้รับรางวัลพิเศษ: บทเรียนฟรี XNUMX บทเรียนใน Skyeng โดยชำระเงินครั้งแรกโดยใช้รหัส HABR2.

ที่มา: will.com

เพิ่มความคิดเห็น