คำถามติดแท็ก stm32

STM32 เป็นตระกูล ARM ที่สามโดย STMicroelectronics มันตามมาจากตระกูล STR9 ก่อนหน้านี้โดยใช้หลัก ARM9E และตระกูล STR7 ตามหลัก ARM7TDMI STM32 นั้นใช้พื้นฐานของตระกูล ARM Cortex-M

2
STM32F2: Makefile สคริปต์ตัวเชื่อมโยงและการรวมไฟล์เริ่มต้นโดยไม่มี IDE เชิงพาณิชย์
ฉันทำงานกับ STM32F2 (โดยเฉพาะคือ STM32F217IGH6 ในคณะกรรมการพัฒนา) เป็นเวลาประมาณสองเดือน ปัญหาที่ใหญ่ที่สุดของฉันเกี่ยวกับ "การตั้งค่า" ซึ่งรวมถึง makefile, linker script และไฟล์เริ่มต้น โดยเฉพาะอย่างยิ่งฉันไม่สามารถตั้งค่าตารางเวกเตอร์ขัดจังหวะและเรียกตัวจัดการขัดจังหวะได้อย่างถูกต้อง ST ให้ตัวอย่างที่ปรับให้เหมาะกับ IDE เชิงพาณิชย์ แต่ฉันใช้การรวบรวมใหม่ Yagarto ของ toolchain GCC (และ OpenOCD เพื่อโหลดภาพผ่าน JTAG) มีตัวอย่างโครงการสำหรับบอร์ดของฉัน (หรือลูกพี่ลูกน้องที่ใกล้ชิด) ซึ่งมี makefile, linker script และการรวมไฟล์เริ่มต้นสำหรับ IDE ที่ไม่ใช่เชิงพาณิชย์ที่ถูกตั้งค่าสำหรับตัวจัดการอินเตอร์รัปต์
16 c  stm32  gcc 

5
สุนัขเฝ้าบ้านอิสระ (IWDG) หรือสุนัขเฝ้าบ้าน (WWDG)?
ฉันยังคงค้นหาคำตอบสำหรับคำถามนี้: ทำไมในขณะที่ stm32 MCUs มีสุนัขเฝ้าบ้านที่สมบูรณ์ (ฉันหมายถึง Window watchdog (WWDG)) มีสุนัขเฝ้าบ้านที่เรียบง่าย (สุนัขเฝ้าบ้านอิสระ (IWDG)) ฉันพบหน้านี้ที่ได้กล่าว: ST Microelectronics มีสายผลิตภัณฑ์ Cortex-M3 M3 ได้รับความนิยมอย่างมากสำหรับอุปกรณ์ฝังตัวระดับล่างและ STM32F ของ ST เป็นตัวแทนของชิ้นส่วนเหล่านี้ (แม้ว่า WDT เป็น Add-on ST และไม่จำเป็นต้องสะท้อนถึงการใช้งานของผู้ขายรายอื่น) STM32F มีสองกลไกการป้องกันที่แตกต่างกัน "Watchdog อิสระ" คือการออกแบบวานิลลาสวยที่มีน้อยไปสำหรับมันนอกเหนือจากความสะดวก แต่ Window Watchdog ของพวกเขาให้การป้องกันที่แข็งแกร่งกว่า เมื่อตัวจับเวลานับถอยหลังหมดอายุการรีเซ็ตจะถูกสร้างขึ้นซึ่งสามารถขัดขวางได้โดยการโหลดตัวจับเวลาอีกครั้ง ไม่มีอะไรพิเศษที่นั่น แต่ถ้าการโหลดเกิดขึ้นเร็วเกินไประบบก็จะรีเซ็ตเช่นกัน ในกรณีนี้ "เร็วเกินไป" ถูกกำหนดโดยค่าหนึ่งโปรแกรมในการลงทะเบียนควบคุม อีกคุณสมบัติที่ยอดเยี่ยม: มันสามารถสร้างการขัดจังหวะก่อนที่จะรีเซ็ต เขียนโค้ดเล็กน้อยเพื่อขัดขวางการขัดจังหวะและคุณสามารถดำเนินการบางอย่างกับระบบให้อยู่ในสถานะที่ปลอดภัยหรือเพื่อถ่ายภาพข้อมูลเพื่อการดีบัก ST แนะนำให้ใช้ ISR …

3
คำแนะนำสำหรับการตั้งค่าเริ่มต้นสำหรับพินที่ไม่ได้ใช้บน STM32 (ARM Cortex M3) - ดึงขึ้น / ดึงลง?
ขณะนี้เรากำลังใช้ตระกูลไมโครคอนโทรลเลอร์ตระกูล STM32 หลากหลายรุ่น ฉันต้องการทราบสิ่งต่อไปนี้: การตั้งค่าเริ่มต้นที่แนะนำสำหรับพินของไมโครคอนโทรลเลอร์โดยทั่วไปคืออะไรหากคุณมีตัวเลือกในการเลือกทั้งแบบดึงขึ้นหรือลง อะไรคือข้อดีข้อเสียของการไปกับอีกคนหนึ่ง? (สมมติว่าคุณจะตั้งค่าตามค่าเริ่มต้นเป็นอินพุต) โดยเฉพาะอย่างยิ่งฉันต้องการทราบว่าจะทำอย่างไรกับพินที่ไม่ได้ใช้สำหรับตระกูลไมโครคอนโทรลเลอร์ STM32 เป็นที่ชัดเจนสำหรับฉันว่าเราไม่ควรปล่อยหมุดที่ลอยอยู่ (ซึ่งเป็นข้อมูลทั้งหมดที่แผ่นข้อมูลบอกว่า :() แต่ฉันควรตั้งให้พวกมันป้อนด้วย pull-ups หรืออินพุทที่มี pull down หรือไม่โดยเฉพาะฉันต้องการ เพื่อเลือกการตั้งค่าที่ไวต่อ ESD น้อยที่สุดและหากเป็นไปได้ให้ใช้พลังงานในปริมาณน้อยที่สุด สำหรับพินที่สำคัญเราควรพึ่งพาเฟิร์มแวร์ในการตั้งค่าพินให้ถูกต้องเป็นสถานะเริ่มต้นที่ถูกต้องหรือความรับผิดชอบนี้ควรอยู่กับฮาร์ดแวร์ภายนอก (การเชื่อมต่อ pull ups ภายนอกหรือดึงลง) หากค่าที่เลือกสำหรับตัวต้านทานภายนอกมีค่ามากกว่าการดึงขึ้นภายในหรือการดึงลงการตั้งค่าในเฟิร์มแวร์ไม่สำคัญ มืออาชีพที่ฉันเห็นในการทำข้างต้นคือถ้าไมโครไม่เริ่มต้นอย่างถูกต้องไม่ว่าด้วยเหตุผลใด (ฮาร์ดแวร์ผิดพลาดหรือสิ่งที่ชอบ) เราไม่พึ่งพาเฟิร์มแวร์ในการตั้งค่าพินอย่างถูกต้อง ข้อเสียที่ฉันเห็นคือมันมีค่าใช้จ่ายมากกว่าในการทำเช่นนี้คือฮาร์ดแวร์ แสงใด ๆ ที่คุณสามารถหลั่งบนด้านบนจะได้รับการชื่นชมจริงๆ ขอบคุณ ..

7
STM32 & ST-LINK - ไม่สามารถเชื่อมต่อกับ MCU หลังจากการตั้งโปรแกรมสำเร็จ
ฉันได้สร้างบอร์ดของตัวเองด้วย STM32F7-45VGT6 ฉันได้ตั้งโปรแกรมสำเร็จด้วย ST-LINK v2 (ไม่ใช่แบบดั้งเดิม) และตอนนี้ฉันไม่สามารถเชื่อมต่อกับ MCU ได้ ฉันใช้ ST-Link Utility จากอินเตอร์เฟส ST และ SWD อาจเป็นกรณีที่ฉันใช้หมุด SWD เป็นเอาท์พุทและในรหัสของฉันฉันตั้งพวกเขาเป็นเอาท์พุท GPIO เป็นไปได้ไหม? อย่างไรก็ตามฉันเชื่อมต่อพินการรีเซ็ตเป็น GND และตั้งค่าตัวเลือก "เชื่อมต่อภายใต้การตั้งค่าใหม่" ในยูทิลิตี้ ST-Link แต่มันไม่ทำงาน ... ฉันจะทำอย่างไร บนอินเทอร์เน็ตฉันพบบางอย่างเกี่ยวกับการใช้ BOOT0 Pin แต่ฉันไม่รู้แน่ชัดว่า ...

4
เมื่อใดควรใช้คริสตัลภายนอกสำหรับ MCU นี้เนื่องจากออสซิลเลเตอร์ภายในนั้นเร็วกว่ามาก?
ฉันกำลังดูMCU นี้และสงสัยว่ามันสมเหตุสมผลหรือไม่ที่จะใช้คริสตัลภายนอก แยกจากแผ่นข้อมูล pg1 * การจัดการนาฬิกา - คริสตัลออสซิลเลเตอร์ 4 ถึง 32 MHz - ออสซิลเลเตอร์ 32 kHz สำหรับ RTC พร้อมการสอบเทียบ - ภายใน 8 MHz RC พร้อมตัวเลือก x6 PLL - ออสซิลเลเตอร์ภายใน 40 kHz - ออสซิลเลเตอร์ภายใน 48 MHzพร้อมระบบตัดแต่งอัตโนมัติตาม ext. ประสาน * ออสซิลเลเตอร์ภายในสามารถสูงสุด 48Mhz คริสตัลภายนอกอยู่ระหว่าง 4 - 32 Mhz เหตุใดจึงต้องใช้คริสตัลภายนอกเมื่อชิ้นส่วนภายในเร็วกว่า 48Mhz เนื่องจากคริสตัลภายนอกใช้เงินและใช้พื้นที่ เมื่อใดควรใช้คริสตัลภายนอก

1
การระบุแอดเดรสรีจิสเตอร์ด้วยไลบรารี I2C STM32F0 HAL
ฉันใหม่มากที่ใช้ห้องสมุด CUBE และ HAL_l ฉันกำลังใช้ไมโครคอนโทรลเลอร์ STM32F0 กับ 32 พิน แผนผังสำหรับ I2C นั้นถูกต้อง ดังนั้นฉันต้องการความช่วยเหลือเล็กน้อยที่นี่ ฉันมีเซ็นเซอร์ capacitive ( FDC1004 ) ที่ใช้การสื่อสาร I2C ฉันต้องเขียนรีจิสเตอร์เหล่านี้เพื่ออ่านข้อมูล ฉันจะส่งต้นแบบแบบฟอร์มคำขอเริ่มไปยังทาสอย่างถูกต้องได้อย่างไร (ที่อยู่สลาฟคือ A0) วิธีการตั้งค่าพอยน์เตอร์เป็น 0x0C register? แผ่นข้อมูลเห็น (ลงทะเบียน 0x0C: บิต [7: 4]) ถึง 1) ฉันไม่รู้วิธีการทำเช่นนั้น? และในที่สุดวิธีการอ่านจากการลงทะเบียนเดียวกัน? นอกจากนี้ฉันต้องรอฟิลด์ DONE_x (ลงทะเบียน 0x0C: บิต [3: 0]) ก่อนที่ฉันจะอ่านหรือไม่ แต่ฉันไม่รู้ว่าฉันกำลังพูดถึงทะเบียนที่ถูกต้องหรือไม่! เพราะฉันไม่ได้รับข้อมูลใด ๆ กลับมาจากเซ็นเซอร์! นี่คือรหัสของฉัน: …

1
ทำความเข้าใจกับแผ่นข้อมูล STM32 เกี่ยวกับตัวเก็บประจุแยก
ฉันพยายามที่จะเข้าใจว่า ST แนะนำให้ decoupling ตัวพิมพ์ใหญ่สำหรับ STM32F030CC ได้อย่างไร แผนภาพในแผ่นข้อมูลแสดงแคป "2x100 nF" ในคู่ Vdd / Vss นี่หมายความว่า 100nF 2 แคปต่อคู่สำหรับ Vdd / Vss หรือไม่ หรือพวกเขาอ้างถึงจำนวนแคป 100nF ทั้งหมดที่จำเป็นเช่นถ้ามี 2 Vdd / Vss คู่ก็คือ 1 100nF แคปต่อคู่ Vdd / Vss รวมเป็น 2 แคป 100nF? แผ่นข้อมูล STM32F030

4
รับประสิทธิภาพที่รวดเร็วจาก STM32 MCU
ฉันกำลังทำงานกับชุดค้นพบ STM32F303VC และฉันก็สับสนกับประสิทธิภาพของมันเล็กน้อย เพื่อทำความคุ้นเคยกับระบบฉันได้เขียนโปรแกรมง่าย ๆ เพียงเพื่อทดสอบความเร็วบิตของ MCU นี้ รหัสสามารถแยกย่อยได้ดังนี้: นาฬิกา HSI (8 MHz) เปิดอยู่; PLL เริ่มต้นด้วยกับ prescaler ที่ 16 เพื่อให้ได้ HSI / 2 * 16 = 64 MHz PLL ถูกกำหนดให้เป็น SYSCLK; SYSCLK ถูกตรวจสอบบน MCO pin (PA8) และหนึ่งในพิน (PE10) จะถูกสลับในลูปไม่สิ้นสุด ซอร์สโค้ดสำหรับโปรแกรมนี้แสดงอยู่ด้านล่าง: #include "stm32f3xx.h" int main(void) { // Initialize the HSI: RCC->CR …

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

4
ปัญหา Endian บน STM32
ฉันกำลังใช้ arm gcc (CooCox) เพื่อเขียนโปรแกรม STM32F4 การค้นพบและฉันได้รับการต่อสู้กับปัญหา endian ฉันสุ่มตัวอย่างด้วย ADC 24 บิตผ่าน SPI เนื่องจากสามไบต์กำลังเข้ามา MSB ครั้งแรกที่ฉันมีความคิดในการโหลดมันลงในกลุ่มเพื่อให้พวกเขา (ฉันหวังว่าต่อไป!) ใช้งานง่ายขึ้นเล็กน้อย typedef union { int32_t spilong; uint8_t spibytes [4]; uint16_t spihalfwords [2];} spidata; spidata analogin0; ฉันโหลดข้อมูลโดยใช้ spi อ่านเป็น analogin0.spibytes [0] - [2], ด้วย [0] ในฐานะ MSB จากนั้นฉันพ่นมันออกทาง USART ที่ megabaud ครั้งละ 8 บิต …
11 c  stm32  cortex-m  gcc 

7
ที่อยู่ทาส I2C ไม่ได้รับการยอมรับ (บางครั้ง)
ฉันพยายามสื่อสารกับ FRAM (FM24C04 จาก Ramtron) ที่เชื่อมต่อจากระยะไกลโดยใช้ I2C หน่วยความจำนี้ถูกฝังอยู่ในบอร์ดที่สามารถเสียบและถอดออกได้ตลอดเวลาถึง / จากระบบ (การสื่อสารถูกยกเลิกอย่างเหมาะสมก่อนที่จะลบหน่วยความจำ) ปัญหาคือ: หลังจากใส่การ์ดที่มีเฟรมบางครั้งก็ไม่ยอมรับที่อยู่ การวัดสัญญาณ ฉันวัดสัญญาณเพื่อดูว่าเกิดอะไรขึ้นและดูเหมือนว่าการกำหนดเวลาจะใช้ได้ในทั้งสองกรณี (ทำงานและไม่ทำงาน) การสื่อสาร I2C ที่ถูกต้อง (อ่าน 3 ไบต์): ที่อยู่ I2C FRAM ไม่ได้รับการยอมรับ (ที่อยู่สลาฟถูกส่งอย่างถูกต้อง): การทำงานได้ดำเนินการแล้วเพื่อแก้ไขปัญหานี้ (ไม่สำเร็จ) เพิ่มความล่าช้าหลังจากใส่การ์ดที่มี FRAM ในตัวเพื่อให้แน่ใจว่าลำดับพลังงานนั้นได้รับการเคารพ I2C หยุดการสร้างหลังจากการตรวจจับสลาฟแอดเดรสไม่ได้รับการยอมรับ การกำหนดค่าบัส I2C ต้นแบบหนึ่ง (ไมโครคอนโทรลเลอร์ STM32F205 จาก ST) สามทาส (EEPROM 24AA1025 จาก Microchip, RTC DS1339C จาก Maxim …

2
IDE ฟรีอะไรที่ทุกคนใช้สำหรับ stm32? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ขณะนี้ฉันใช้ Atmel SAM series ทางเลือกนั้นง่าย: IDE คือ Atmel Studio ซึ่งดีมากฟรีและฉันใช้มันเพื่อพัฒนา AVR มาก่อน ตัวดีบักที่ฉันมีคือ Atmel ICE ซึ่งฉันใช้สำหรับ AVR ด้วยและรองรับซีรีย์ ARM เช่นกัน สิ่งที่ทำให้ซีรี่ส์ STM32 นั้นน่าสนใจคือราคาที่ต่ำมากสำหรับชิปและบอร์ดพัฒนา อย่างไรก็ตามสิ่งที่คน IDEs ใช้สำหรับการพัฒนา? ฉันสนใจในสิ่งที่เป็นอิสระอย่างสมบูรณ์ที่สุดเท่าที่จะเป็นไปได้ดังนั้นมันจะง่ายต่อการค้นหาความช่วยเหลือเมื่อจำเป็นและเพื่อให้แน่ใจว่าเครื่องมือทันสมัยอยู่เสมอ ฉันสามารถหาคำตอบที่ชัดเจนใน Google หรือในเว็บไซต์ของ ST ดังนั้นหากมีคนเกี่ยวข้องกับการพัฒนาบนแพลตฟอร์มนี้แล้วฉันจะขอบคุณถ้าคุณแบ่งปันข้อมูลและความคิดเห็นของคุณ
11 arm  stm32  ide 

4
รหัสเริ่มต้นเปลือยโลหะสำหรับการเริ่มต้นภูมิภาค Cortex M3 .bss
ฉันได้พัฒนาแรงบันดาลใจจากที่นี่เป็นรหัสเริ่มต้นโลหะเปลือยสำหรับ arm cortex M3 อย่างไรก็ตามฉันพบปัญหาต่อไปนี้: สมมติว่าฉันประกาศตัวแปรโกลบอลที่ไม่ได้กำหนดค่าเริ่มต้น, พูดถึงประเภท char ที่ไม่ได้ลงนามใน main.c #include ... unsigned char var; ... int main() { ... } สิ่งนี้ทำให้ภูมิภาค. bbs ใน STM32 f103 เริ่มต้นที่ _BSS_START = 0x20000000 และสิ้นสุดที่ _BSS_END = 0x20000001 ตอนนี้รหัสเริ่มต้น unsigned int * bss_start_p = &_BSS_START; unsigned int * bss_end_p = &_BSS_END; while(bss_start_p != bss_end_p) …

1
ตรวจหาสวิตช์ชั่วขณะที่ทำให้ซีพียู STM32 ตื่นขึ้นมา
แก้ไข : คำถามนี้ผิด stm325105 มีขาปลุกเพียงอันเดียว แต่ชิ้นส่วน ST อื่น ๆ นั้นมีมากกว่าหนึ่ง Pinup Wakeup ดังนั้นคำตอบที่ให้นั้นจะถูกต้องสำหรับสิ่งเหล่านั้น ฉันมี stm32f105 ที่มีสองปุ่มชั่วขณะเชื่อมต่อกับอินพุตปลุก ตัวประมวลผลถูกวางใน STANDBY MODE เมื่อกดปุ่มใดปุ่มหนึ่งหรือตัวจับเวลา RTC เริ่มทำงาน cpu จะกลับมาทำงานอีกครั้ง ปัญหาคือฉันต้องการให้ซีพียูทำสิ่งต่าง ๆ โดยขึ้นอยู่กับการกระตุ้นการทำงานของอินพุต ตาม5.3.5จากคู่มืออ้างอิง ST stm32f105xx จะไม่มีการบันทึกการลงทะเบียนยกเว้นการลงทะเบียนสถานะที่ระบุว่าเราได้ถูกปลุก (แต่ไม่ใช่โดยใคร) และการลงทะเบียนสำรอง 42 รายการ โหมดสแตนด์บายอนุญาตให้ใช้พลังงานต่ำที่สุด มันขึ้นอยู่กับโหมด Cortex ® -M3 deepsleep เมื่อปิดการทำงานของตัวควบคุมแรงดันไฟฟ้า ดังนั้นโดเมน 1.8 V จึงถูกปิดการทำงาน PLL, HSI oscillator และ …

1
วิธีเริ่มต้นด้วยบอร์ด STM32F103C8T6
ฉันใช้ไมโครคอนโทรลเลอร์ AVR 8 บิตเพื่อสร้างหุ่นยนต์ผู้ติดตามสายกับนักเรียนมาหลายปีแล้ว ตอนนี้ฉันต้องการที่จะก้าวขึ้นสู่ ARM Cortex-M3 เพราะฉันต้องการที่จะเพิ่มคุณสมบัติที่ใช้งาน CPU มากขึ้นเช่น odometry และฟิวชั่นเซ็นเซอร์ ข้อกำหนดคือ: 8 อินพุตอะนาล็อก เอาต์พุต 4 PWM ฉัน2 C 2 อินพุทการเข้ารหัสพื้นที่สี่เหลี่ยมจัตุรัส อนุกรม I / O การตั้งโปรแกรมด้วยตนเองแบบไร้สายโดยไม่ต้องเข้าถึงหุ่นยนต์ toolchain + IDE หลากหลายแพลตฟอร์ม (OS X, Linux, Windows) ขั้นตอนที่ฉันทำไปคือ: ฉันใช้บอร์ดรุ่น STM32F103C8 นี้ ฉันเชื่อว่า MCU นี้มีทุกสิ่งที่ฉันต้องการรวมถึง 2 x QEI ที่ฉันวางแผนที่จะใช้ในซอฟต์แวร์ แต่อันนี้เกิดขึ้นเพื่อให้มีในฮาร์ดแวร์ที่ดีมาก: คณะhttp://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789 โปรแกรมเมอร์http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733 ฉันได้ติดตามสิ่งนี้เพื่อตั้งค่า …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.