ไมโครอิเล็กทรอนิกส์เป็นงานอดิเรกที่ทันสมัยในช่วงไม่กี่ปีที่ผ่านมา ต้องขอบคุณ 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? มีไว้เพื่อการอ่านเท่านั้น!” จริงหรือ,
นี่เป็นฟังก์ชันที่ค่อนข้างใหม่ ไม่ได้อยู่ใน 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 โดยไม่ได้ตั้งใจ ก็ไม่เป็นไร
สองปีผ่านไป ฉันยังคงเลียริมฝีปากอยู่
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