สารบัญ:

เหลือเชื่อ STM32 L4!: 12 ขั้นตอน
เหลือเชื่อ STM32 L4!: 12 ขั้นตอน

วีดีโอ: เหลือเชื่อ STM32 L4!: 12 ขั้นตอน

วีดีโอ: เหลือเชื่อ STM32 L4!: 12 ขั้นตอน
วีดีโอ: DEV KIT WEEKLY: MultiTech Dragonfly Developer Kit 2024, กรกฎาคม
Anonim
Image
Image
STM32F746G การค้นพบ
STM32F746G การค้นพบ

ฉันต้องการเริ่มบทความนี้โดยอธิบายว่าตัวอักษร L (ของ L4) นี้หมายถึง Low (หรือโดยทั่วไปคือ Ultra Low Power) ดังนั้นมันจึงใช้พลังงานเพียงเล็กน้อยและแสดงให้เห็นว่าเหตุใด STM32 นี้จึงน่าทึ่ง! ใช้ไมโครแอมป์และมีระบบภายในที่สามารถระบุค่าใช้จ่ายของชิปแต่ละส่วนได้ ซึ่งช่วยให้จัดการพลังงานได้อย่างมีประสิทธิภาพและมีประสิทธิภาพสูง

ฉันได้พูดถึงไมโครคอนโทรลเลอร์ตัวนี้ในวิดีโอแล้ว "วิธีที่ง่ายที่สุดในการเขียนโปรแกรมไมโครคอนโทรลเลอร์!" ในวิดีโอ ฉันแสดงวิธีตั้งโปรแกรม STM32 L4 ด้วย MBED แต่ในขณะที่ค้นคว้าเพิ่มเติมเกี่ยวกับเรื่องนี้ ฉันค้นพบบางสิ่งที่ผู้ผลิต STMicroelectronics ไม่เปิดเผย ได้นำ Core Arduino มาใช้ในชิป ซึ่งช่วยให้สามารถเขียนโปรแกรมผ่าน Arduino IDE ได้

ในภาพนี้ เรามี L4 สองเวอร์ชัน STM32L432KC เหมือนกับ Arduino Nano และ STM32L476RG ซึ่งมี IO เทียบเท่ากับ Arduino Uno ดังนั้น ในขณะที่ทำงานกับไมโครคอนโทรลเลอร์อันทรงพลังสองเวอร์ชันนี้ ฉันจะแสดงวิธีติดตั้ง Arduino Core ในตระกูล STM32 ฉันจะอธิบายคุณสมบัติหลักของชุด STM32 ด้วย

ขั้นตอนที่ 1: เพลทด้วย Core Arduino

ฉันวางรายการเกี่ยวกับความหลากหลายไว้ที่นี่ อย่างไรก็ตาม เราจะทำงานร่วมกับ STM32L432KC และ STM32L476RG

STM32F0

  • นิวคลีโอ F030R8
  • นิวคลีโอ F091RC
  • 32F0308ค้นพบ

STM32F1

  • BluePill F103C8 (รองรับพื้นฐาน, ไม่มี USB)
  • MapleMini F103CB (รองรับพื้นฐาน ไม่มี USB)
  • นิวคลีโอ F103RB
  • STM32VLDISCOVERY

STM32F2

นิวคลีโอ F207ZG

STM32F3

  • นิวคลีโอ F302R8
  • นิวคลีโอ F303K8
  • นิวคลีโอ F303RE

STM32F4

  • นิวคลีโอ F401RE
  • นิวคลีโอ F411RE
  • นิวคลีโอ F429ZI
  • นิวคลีโอ F446RE
  • STM32F407G-DISC1

STM32F7

STM32F746G-DISCOVERY

STM32L0

  • นิวคลีโอ L031K6
  • นิวคลีโอ L053R8
  • B-L072Z-LRWAN1

STM32L1

นิวคลีโอ L152RE

STM32L4

  • นิวคลีโอ L432KC
  • นิวคลีโอ L476RG
  • NUCLEO-L496ZG-P
  • NUCLEO-L496ZG-P
  • B-L475E-IOT01A

ขั้นตอนที่ 2: STM32F746G DISCOVERY

เพื่อให้เห็นภาพ ฉันแสดงรายละเอียดของ STM32F746G DISCOVERY ซึ่งฉันคิดว่าเป็นสัตว์เดรัจฉาน ฉันได้สั่งซื้อชิปนี้แล้ว และหวังว่าจะได้พูดคุยเรื่องนี้เร็วๆ นี้

ลักษณะเฉพาะ:

ไมโครคอนโทรลเลอร์ STM32F746NGH6 ที่มีหน่วยความจำแฟลช 1 Mbytes และ RAM 340 Kbytes ในแพ็คเกจ BGA216

  • ออนบอร์ด ST-LINK / V2-1 รองรับความสามารถในการระบุ USB อีกครั้ง
  • เปิดใช้งาน Mbed (mbed.org)
  • ฟังก์ชัน USB: พอร์ต COM เสมือน ที่เก็บข้อมูลขนาดใหญ่ และพอร์ตดีบัก
  • LCD-TFT สี 4.3 นิ้ว 480x272 พร้อมหน้าจอสัมผัสแบบ capacitive
  • ขั้วต่อกล้อง
  • ตัวแปลงสัญญาณเสียง SAI
  • แจ็คสัญญาณเสียงเข้าและออก
  • เอาต์พุตลำโพงสเตอริโอ
  • ไมโครโฟน ST MEMS สองตัว
  • ขั้วต่ออินพุต SPDIF RCA
  • สองปุ่มกด (ผู้ใช้และรีเซ็ต)
  • หน่วยความจำแฟลช Quad-SPI 128-Mbit
  • SDRAM 128-Mbit (เข้าถึงได้ 64 Mbits)
  • ช่องเสียบสำหรับการ์ด microSD
  • ขั้วต่อบอร์ดลูกสาว RF-EEPROM
  • USB OTG HS พร้อมขั้วต่อ Micro-AB
  • USB OTG FS พร้อมขั้วต่อ Micro-AB
  • ขั้วต่ออีเทอร์เน็ตที่สอดคล้องกับ IEEE-802.3-2002
  • ห้าตัวเลือกแหล่งจ่ายไฟ:

- ลิงค์ ST / V2-1

- ขั้วต่อ USB FS

- ขั้วต่อ USB HS

- VIN จากขั้วต่อ Arduino

- ภายนอก 5 V จากขั้วต่อ

แอพพลิเคชั่นภายนอกของแหล่งจ่ายไฟ:

- 3.3 V หรือ 5 V

ขั้วต่อ Arduino Uno V3

ขั้นตอนที่ 3: Arduino Due X STM NUCLEO-L476RG

Arduino Due X STM NUCLEO-L476RG
Arduino Due X STM NUCLEO-L476RG

นี่คือการเปรียบเทียบกับ Arduino Due ซึ่งเป็น ARM Cortex-M3 ฉันได้ใช้โมเดลนี้ในวิดีโอ: Nema 23 Stepper Motor พร้อมไดรเวอร์ TB6600 พร้อม Arduino Due และ SpeedTest: Arduinos - ESP32 / 8266s - STM32 พร้อม STM NUCLEO-L476RG ซึ่งเป็น ARM Cortex-M4 Ultra Low Power และอยู่ใน ภาพทางด้านขวา

Arduino เนื่องจาก:

ไมโครคอนโทรลเลอร์: AT91SAM3X8E

แรงดันไฟฟ้าที่ใช้งาน: 3.3V

แรงดันไฟฟ้าขาเข้า (แนะนำ): 7-12V

แรงดันไฟฟ้าขาเข้า (ขีดจำกัด): 6-16V

Digital I / O Pins: 54 (ซึ่ง 12 ตัวมีเอาต์พุต PWM)

พินอินพุตแบบอะนาล็อก: 12

พินเอาต์พุตแบบอะนาล็อก: 2 (DAC)

กระแสไฟขาออก DC ทั้งหมดบนสาย I / O ทั้งหมด: 130 mA

กระแสไฟตรงสำหรับขา 3.3V: 800 mA

กระแสไฟตรงสำหรับขา 5V: 800 mA

หน่วยความจำแฟลช: 512 KB ทั้งหมดสำหรับแอปพลิเคชันผู้ใช้

SRAM: 96 KB (สองช่อง: 64KB และ 32KB)

ความเร็วสัญญาณนาฬิกา: 84 MHz

ความยาว: 101.52 mm

ความกว้าง: 53.3 มม.

น้ำหนัก: 36 กรัม

STM นิวคลีโอ-L476RG:

STM32L476RGT6 ในแพ็คเกจ LQFP64

ARM®32-บิตCortex®-M4 CPU

ตัวเร่งความเร็วแบบเรียลไทม์ที่ปรับเปลี่ยนได้

(ART Accelerator ™) อนุญาตให้เรียกใช้สถานะ 0 รอจากหน่วยความจำแฟลช

ความถี่ CPU สูงสุด 80 MHz

VDD จาก 1.71 V ถึง 3.6 V

แฟลช 1 MB

SRAM 128 KB

เอสพีไอ (3)

ไอทูซี (3)

ยูเอสอาร์ท (3)

ยูอาร์ท (2)

แอลพีอาร์ท (1)

GPIO (51) พร้อมความสามารถในการขัดจังหวะภายนอก

เซนเซอร์แบบ Capacitive พร้อมช่องสัญญาณ 12 ช่อง

ADC 12 บิต (3) พร้อม 16 ช่อง

DAC 12 บิตพร้อม 2 ช่องสัญญาณ

FPU หรือหน่วยจุดลอยตัว

* ฉันเน้นที่นี่ FPU แยกกันของ STM NUCLEO-L476RG ซึ่งหมายความว่าชิปทำการคำนวณตรีโกณมิติด้วยความเร็วที่น่าทึ่ง ซึ่งไม่เหมือนกับ Arduino Due ซึ่งต้องการตัวประมวลผลทางพันธุกรรมในการทำเช่นนั้น

ขั้นตอนที่ 4: Dhrystone

Dhrystone
Dhrystone
Dhrystone
Dhrystone

Dhrystone เป็นโปรแกรมเบนช์มาร์กคอมพิวเตอร์สังเคราะห์ที่พัฒนาขึ้นในปี 1984 โดย Reinhold P. Weicker ซึ่งมีจุดประสงค์เพื่อเป็นตัวแทนของการเขียนโปรแกรมระบบ (จำนวนเต็ม) Dhrystone กลายเป็นตัวแทนของประสิทธิภาพโปรเซสเซอร์โดยรวม (CPU) ชื่อ "Dhrystone" มาจากอัลกอริธึมมาตรฐานที่เรียกว่า Whetstone นี่เป็นมาตรการที่นำมาจากการดำเนินการทั่วไปบางอย่าง

โปรแกรมนี้มีไว้สำหรับรวบรวมบางสิ่งภายในไมโครคอนโทรลเลอร์เหล่านี้ใน Arduino และผลลัพธ์ของการทดสอบสองครั้งที่ฉันทำ ครั้งแรกกับ Dhrystone และอีกการทดสอบจากวิดีโอ SpeedTest มีดังนี้:

Arduino ครบกำหนด: US $ 37.00

เกณฑ์มาตรฐาน Dhrystone เวอร์ชัน 2.1 (ภาษา: C)

เริ่มดำเนินการ 300,000 วิ่งผ่าน Dhrystone

สิ้นสุดการดำเนินการ

ไมโครวินาทีสำหรับการวิ่งหนึ่งครั้งผ่าน Dhrystone: 10.70

หินแห้งต่อวินาที: 93, 431.43

คะแนน VAX MIPS = 53.18 DMIPS

วิ่งทดสอบ Fernandok

เวลาทั้งหมด: 2, 458 ms

  • ไม่มี FPU
  • ซอฟต์แวร์ Dhrystone บน Arduino

www.saanlima.com/download/dhry21a.zip

STM NUCLEO-L476RG: 23.00 เหรียญสหรัฐ

เกณฑ์มาตรฐาน Dhrystone เวอร์ชัน 2.1 (ภาษา: C)

เริ่มดำเนินการ 300,000 วิ่งผ่าน Dhrystone

สิ้นสุดการดำเนินการ

ไมโครวินาทีสำหรับการวิ่งหนึ่งครั้งผ่าน Dhrystone: 9.63

หินแห้งต่อวินาที: 103, 794.59

คะแนน VAX MIPS = 59.07 DMIPS

วิ่งทดสอบ Fernandok

เวลาทั้งหมด: 869 ms 2.8x FASTER

  • PI สูงสุด 40Mbit / s, USART 10Mbit / s
  • 2x DMA (14 ช่อง)
  • สูงสุด 80 MHz / 100 DMIPS พร้อม ART Accelerator

ขั้นตอนที่ 5: STM32L432KC X Arduino Nano

STM32L432KC X Arduino นาโน
STM32L432KC X Arduino นาโน

บอร์ดด้านซ้ายคือ STM32L432KC ซึ่ง STMicroelectronics วางพินเอาต์ Arduino Nano ที่เหมือนกันไว้ในภาพทางด้านขวา

ขั้นตอนที่ 6: STM32L432KC

STM32L432KC
STM32L432KC

Arm® Cortex®-M4 32 บิตที่ใช้พลังงานต่ำเป็นพิเศษ

MCU + FPU, 100DMIPS, แฟลชสูงสุด 256KB, SRAM 64KB, USB FS, อะนาล็อก, เสียง

เร็วกว่าถึง 26 IOs ทนทานกว่าถึง 5V

  • RTC พร้อมปฏิทิน HW การเตือน และการสอบเทียบ
  • ช่องตรวจจับ capacitive สูงสุด 3 ช่อง
  • ตัวจับเวลา 11x: การควบคุมเครื่องยนต์ขั้นสูง 1x16 บิต

วัตถุประสงค์ทั่วไป 1x 32 บิตและ 2x 16 บิต 2x พื้นฐาน 16 บิต 2x ตัวจับเวลา 16 บิตพลังงานต่ำ (มีให้ในโหมดหยุด) สุนัขเฝ้าบ้าน 2x ตัวจับเวลา SysTick

หน่วยความจำ:

- แฟลชสูงสุด 256 KB การป้องกันการอ่านรหัสที่เป็นกรรมสิทธิ์

- SRAM 64 KB รวมถึง 16 KB พร้อมการตรวจสอบความเท่าเทียมกันของฮาร์ดแวร์

- อินเทอร์เฟซหน่วยความจำ Quad SPI

อุปกรณ์ต่อพ่วงอนาล็อกที่หลากหลาย (อุปทานอิสระ)

- 1x ADC 5 Msps 12 บิต สูงสุด 16 บิตพร้อมการสุ่มตัวอย่างฮาร์ดแวร์เกิน 200 μA / Msps

- เอาต์พุต DAC 12 บิต 2 ช่อง ใช้พลังงานต่ำ

- แอมพลิฟายเออร์ปฏิบัติการ 1x พร้อม PGA. ในตัว

- 2x เมื่อเทียบกับอินเทอร์เฟซที่ใช้พลังงานต่ำมาก

- 1x UPS (อินเทอร์เฟซเสียงแบบอนุกรม)

- 2x I2C FM + (1 Mbit / s), SMBus / PMBus

- USART 3x (ISO 7816, LIN, IrDA, โมเด็ม)

- 1x LPUART (หยุด 2 ปลุก)

- 2x SPI (และ 1x SPI Quad)

- สามารถ (ใช้งาน 2.0B)

- โปรโตคอลสายเดี่ยวต้นแบบ SWPMI I / F

- IRTIM (อินเทอร์เฟซอินฟราเรด)

  • คอนโทรลเลอร์ DMA 14 ช่อง
  • เครื่องกำเนิดตัวเลขสุ่ม

ขั้นตอนที่ 7: ติดตั้ง Core Arduino สำหรับการ์ด STM32L4

ติดตั้ง Core Arduino สำหรับการ์ด STM32L4
ติดตั้ง Core Arduino สำหรับการ์ด STM32L4
  1. ติดตั้งโปรแกรม ST-Link ที่บันทึก
  2. Json ที่อยู่
  3. บอร์ด: ผู้จัดการการ์ด
  4. ห้องสมุด: ผู้จัดการห้องสมุด

ขั้นตอนที่ 8: ติดตั้ง ST-Link - โปรแกรมที่บันทึก

ติดตั้ง ST-Link - โปรแกรมที่บันทึก
ติดตั้ง ST-Link - โปรแกรมที่บันทึก

ดาวน์โหลดไฟล์ได้ที่ https://www.st.com/en/development-tools/stsw-link0…. เพียงลงทะเบียน ดาวน์โหลด และติดตั้งอุปกรณ์

ขั้นตอนที่ 9: ระบุ Json

ที่อยู่ Json
ที่อยู่ Json

เกี่ยวกับคุณสมบัติ รวมที่อยู่ต่อไปนี้:

github.com/stm32duino/BoardManagerFiles/ra…

ขั้นตอนที่ 10: บอร์ด: ผู้จัดการบอร์ด

บอร์ด: ผู้จัดการบอร์ด
บอร์ด: ผู้จัดการบอร์ด

ใน Arduino Board Manager ให้ติดตั้ง STM32 Core ซึ่งมีขนาดประมาณ 40MB

ขั้นตอนที่ 11: ห้องสมุด: ตัวจัดการห้องสมุด

ห้องสมุด: ผู้จัดการห้องสมุด
ห้องสมุด: ผู้จัดการห้องสมุด

สุดท้าย ติดตั้งไลบรารี

โดยส่วนตัวแล้วฉันชอบกลุ่ม STM32duino.com ซึ่งมีตัวอย่างหลายตัวอย่างซึ่งฉันติดตั้งไว้บางส่วน ฉันยังดาวน์โหลด FreeRTOS ซึ่งฉันชอบมาก ฉันพบว่ามันรวดเร็วและเชื่อถือได้ ฉันยังติดตั้ง (แต่ยังไม่ได้ทดสอบ) LRWAN เดี๋ยวจะมาเล่าให้ฟังว่าดีหรือไม่ดี

ขั้นตอนที่ 12: ดาวน์โหลด PDF

ไฟล์ PDF

แนะนำ: