LED ส่องสว่างสลัวเมื่อรีเซ็ต uC

Aug 19 2020

ฉันออกแบบ PCB ซึ่งมี STM32G431CBT6 อยู่ นอกจากนี้ยังมีไฟ LED สองดวงสีแดงและสีเขียวเชื่อมต่อดังที่แสดง:

เมื่อเปิดเครื่องครั้งแรก (ยังไม่มีโปรแกรมบน uC) ไฟ LED สีแดงจะสว่างสลัว หลังจากโหลดโปรแกรมไฟกระพริบ LED บน uC มันใช้งานได้ดี (พร้อมความสว่างเต็มที่) แต่ถ้าฉันกดปุ่มรีเซ็ตไฟ LED สีแดงจะสว่างสลัวอีกครั้งและแรงดันไฟฟ้าใน R1 คือ 120mV 120uA จึงไหลด้วยเหตุผลบางประการ LED อื่น ๆ ไม่ทำเช่นนี้และแรงดันไฟฟ้าทั่ว R2 คือ 0

ดูที่แผ่นข้อมูลฉันพบเฉพาะบันทึกเกี่ยวกับ PB4 (หน้า 60):

"หลังจากรีเซ็ตพินเหล่านี้จะได้รับการกำหนดค่าเป็นฟังก์ชันทางเลือกในการดีบัก JTAG / SW และการดึงภายในของพิน PA15, PA13, PB4 และการดึงลงภายในบนพิน PA14 จะเปิดใช้งาน"

แต่แม้ว่าจะมีการดึง PB4 ขึ้นมา แต่ LED ก็ไม่ควรติดดังนั้นอะไรทำให้เกิดพฤติกรรมนี้?


แก้ไข:

หลังจากตั้งโครงการไปสักพักตอนนี้ก็ยังไม่ทำ แต่ไม่รู้ว่ามีอะไรเปลี่ยนแปลงไปบ้าง ฉันแก้ไขเฉพาะการตั้งค่าการบูตในไบต์ตัวเลือก (ด้วย ST-Link Utility) แม้ว่าฉันจะไม่คิดว่าสิ่งนี้เกี่ยวข้องกับการดึงลง UCPD

อย่างไรก็ตามฉันพบการตั้งค่าเริ่มต้นสำหรับการปิดใช้งานการดึงลง:
(และใช่เรียกว่า "ดึงขึ้น" ในการตั้งค่า แต่ดูเหมือนว่าจะผิดพลาด)

เมื่อเลือก (ค่าเริ่มต้น) จะทำให้ไฟล์

HAL_PWREx_DisableUCPDDeadBattery();

เรียกฟังก์ชันเข้าสู่ฟังก์ชัน HAL_MspInit

เมื่อไม่เลือกไฟ LED จะสว่างสลัวแม้หลังจากรีเซ็ตแล้วดังนั้นจึงตรวจสอบคำตอบที่ยอมรับสำหรับคำถามเดิม จนกระทั่งเริ่มไม่เปิดไฟสลัวอีกเลย

สรุป:

  1. เดิมทีไฟ LED จะสว่างสลัวในการรีเซ็ตเท่านั้น
  2. นี่เป็นเพราะการดึงลง UCPD ซึ่งถูกปิดใช้งานโดยช่องทำเครื่องหมาย "ประหยัดพลังงานของ UCPD ที่ไม่ได้ใช้งาน - การดึงแบตเตอรี่ที่ตายแล้วที่ไม่ได้ใช้งาน" ถูกเลือกโดยค่าเริ่มต้น ฉันสามารถตรวจสอบได้โดยการยกเลิกการเลือกและไม่ได้กำหนดค่าพิน GPIO สำหรับ LED ซึ่งส่งผลให้เกิดแสงสลัวแม้จะรีเซ็ตแล้ว
  3. มีบางอย่างเกิดขึ้นและตอนนี้ไม่เป็นเช่นนั้นไม่ว่าจะทำเครื่องหมายในช่องใดหรือกำลังรีเซ็ต บางทีการดึงลงอาจพังด้วยเหตุผลบางอย่าง? ฉันรู้แค่ว่าพิน GPIO นั้นใช้งานได้มันสามารถขับ LED ได้อย่างถูกต้องเมื่อตั้งโปรแกรม

คำตอบ

11 Justme Aug 19 2020 at 15:24

อ่านในคู่มืออ้างอิงว่า MCU ซีรีส์นี้ใช้ PB4 กับหนึ่งในพิน CC ของขั้วต่อ USB-C ซึ่งหมายความว่าพินรองรับคุณสมบัติการดึงลง 5.1k ภายในโดยค่าเริ่มต้นในเวลารีเซ็ตมิฉะนั้นอาจเป็นไปไม่ได้ที่จะใช้ bootloader เพื่อดาวน์โหลดเฟิร์มแวร์ผ่านขั้วต่อ USB-C ดังนั้นหากจำเป็นต้องใช้ JTAG ก็สามารถปิดการใช้งานแบบเลื่อนลงได้ ดังนั้นมันจะส่งผลต่อ LED ด้วย

KyleB Aug 19 2020 at 14:55

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

บางครั้งคำตอบถูกฝังลึกลงไปในคู่มือ

หากมันรบกวนคุณให้ดึงขึ้นอย่างแรง

citizen Aug 19 2020 at 15:43

หากเปิดใช้งานโดยค่าเริ่มต้นแบบดึงลงไปที่ GND (และควรสังเกตสิ่งนี้ในแผ่นข้อมูลไมโครโปรเซสเซอร์หากพินนี้มีการเริ่มต้นการดึงลง) ให้ใช้มันเพื่อระบายกระแสบางส่วนผ่านไฟ led โดยปกติรหัสจะเริ่มต้นพินฟังก์ชั่นคู่ใด ๆ ให้อยู่ในสถานะที่ถูกต้องและ / หรือลบแบบดึงลง / พูลอัพที่ไม่จำเป็น แต่ในกรณีของคุณคุณบอกว่าไม่มีรหัส ด้วยรหัสเริ่มต้นที่เขียนอย่างถูกต้อง LED จะเริ่มต้นไปยังสถานะเริ่มต้นที่ถูกต้อง (อาจเป็น OFF ตามค่าเริ่มต้น) หากคุณกำลังนอนไม่หลับวิธีที่ดีที่สุดคือการเพิ่ม pull-up ที่แข็งแกร่งหรือตรวจสอบให้แน่ใจว่ารหัสทำงานทันทีที่คุณเปิดเครื่องบอร์ดและรันโค้ด