สารบัญ:

Dual Trace Oscilloscope: 11 ขั้นตอน (พร้อมรูปภาพ)
Dual Trace Oscilloscope: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Dual Trace Oscilloscope: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Dual Trace Oscilloscope: 11 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: วิธีแปลง CRT TV เป็นออสซิลโลสโคป 2024, กรกฎาคม
Anonim
ออสซิลโลสโคปแบบติดตามคู่
ออสซิลโลสโคปแบบติดตามคู่

เมื่อฉันสร้างมินิออสซิลโลสโคปรุ่นก่อนของฉัน ฉันต้องการดูว่าฉันสามารถทำให้ไมโครคอนโทรลเลอร์ ARM ที่เล็กที่สุดของฉันเป็น STM32F030 (F030) ทำงานได้ดีเพียงใด และมันก็ทำได้ดีมาก

หนึ่งในความคิดเห็นแนะนำว่า "ยาเม็ดสีน้ำเงิน" ที่มี STM32F103 (F103) อาจดีกว่า เล็กกว่าบอร์ดพัฒนาที่มี F030 และอาจถูกกว่าด้วยซ้ำ แต่สำหรับมินิออสซิลโลสโคป ฉันไม่ได้ใช้บอร์ดพัฒนา แต่ F030 บนบอร์ด SMD-DIP ที่เล็กกว่านั้น ดังนั้นจึงไม่มี Blue Pill ที่เล็กกว่านี้อย่างแน่นอน และฉันสงสัยว่ามันจะถูกกว่าด้วย

รหัสสามารถใช้ได้บน Gitlab:

gitlab.com/WilkoL/dual-trace-oscilloscope

เสบียง

รายการส่วน: - กล่องพลาสติก - บอร์ดต่อท้าย (บอร์ดต้นแบบสองด้าน 8x12 ซม.) - ยาเม็ดสีน้ำเงิน - จอแสดงผล TFT ST7735s - แบตเตอรี่ลิเธียมไอออน - HT7333 ตัวควบคุมการเลื่อนออกต่ำ 3.3V - opamp คู่ MCP6L92 - บอร์ด TSSOP8 ถึง DIP8 - คริสตัล 12 MHz (ไม่จำเป็น) - ตัวเข้ารหัสแบบโรตารี่พร้อมลูกบิด (2x) - สวิตช์เพาเวอร์ - ขั้วกล้วย (4x) - แท่นชาร์จลิเธียมไอออน - ตัวต้านทานและตัวเก็บประจุหลายตัว - สเปเซอร์ไนลอน น็อตและสกรู

เครื่องมือ:

- สถานีบัดกรี - บัดกรี 0.7 มม. - ลวดบาง - เครื่องตัดด้านข้าง - แว่นตาและ Loupe - สว่าน - มัลติมิเตอร์ - ออสซิลโลสโคป - STLink-V2

ซอฟต์แวร์:

- STM32IDE - STM32CubeMX - ยูทิลิตี้ STLink - ไลบรารี LowLayer - ไลบรารีดัดแปลงสำหรับ ST7735s - Notepad ++ - Kicad

ขั้นตอนที่ 1: Interleave หรือ SImultaneous Mode

อินเตอร์ลีฟหรือโหมดพร้อมกัน
อินเตอร์ลีฟหรือโหมดพร้อมกัน
อินเตอร์ลีฟหรือโหมดพร้อมกัน
อินเตอร์ลีฟหรือโหมดพร้อมกัน

ยาเม็ดสีน้ำเงิน

แต่แนวคิดก็อยู่ที่นั่น และฉันรู้ว่า F103 มี ADC สองตัว! จะเกิดอะไรขึ้นถ้าฉันใช้ ADC สองตัวนี้ร่วมกันในโหมด "แทรกแซง" สิ่งที่ฉันเคยทำมาก่อนกับ STM32F407 (F407) ความเร็วในการสุ่มตัวอย่างจะเพิ่มเป็นสองเท่า เมื่อรวมเข้ากับไมโครคอนโทรลเลอร์ที่เร็วกว่าและจะทำให้เป็นทายาทที่ดีต่อมินิออสซิลโลสโคป

โหมดอินเตอร์ลีฟ ผิดปกติ ADC ใน F103 นั้นล้ำหน้ากว่าใน F030 (และ F407) คุณไม่สามารถเลือกความละเอียดได้ ที่สำคัญกว่านั้นคือคุณไม่สามารถเปลี่ยนเวลาระหว่าง ADC ทั้งสองได้ ตอนนี้ เมื่อคุณใช้โหมดอินเตอร์ลีฟ โดยปกติคุณต้องการสุ่มตัวอย่างให้เร็วที่สุดด้วยเวลาที่สั้นที่สุดระหว่างตัวอย่างใดๆ แต่ด้วยออสซิลโลสโคป จำเป็นต้องเปลี่ยนเวลา อาจจะยังทำได้อยู่ ฉันไม่ใช่นักออกแบบออสซิลโลสโคปมืออาชีพ แต่ฉันล้มเลิกแผนการใช้โหมดอินเตอร์ลีฟ

โหมดพร้อมกัน

แต่การมี ADC สองตัวทำให้มีตัวเลือกมากขึ้น ทำให้ ADC ทั้งสองตัวสามารถตั้งค่าเป็นโหมด "ปกติ-พร้อมกัน" ได้เช่นกัน แล้วออสซิลโลสโคปแบบติดตามคู่ล่ะ?

เมื่อตัดสินใจลองสร้างออสซิลโลสโคปแบบติดตามคู่แล้ว ฉันยังต้องการมีความไวอินพุตแบบแปรผัน ซึ่งเป็นตัวเลือกที่ฉันไม่มีในมินิออสซิลโลสโคป นั่นหมายถึงตัวลดทอน (และแอมพลิฟายเออร์) บนอินพุต และบางทีฉันต้องการมากกว่านี้? ดังนั้นฉันจึงทำรายการ "สิ่งที่ดี" เล็กน้อย

รายการที่ต้องการ

สองช่อง

ความไวตัวแปรทั้งสองช่อง

ลั่นทั้งสองช่อง

ระดับทริกเกอร์ตัวแปรทั้งสองช่อง

ออฟเซ็ตตัวแปร

พลังงานแบตเตอรี่เดียว

ใส่ในกล่องเดียวกับมินิออสซิลโลสโคป

ขั้นตอนที่ 2: การสร้างต้นแบบ

การสร้างต้นแบบ
การสร้างต้นแบบ
การสร้างต้นแบบ
การสร้างต้นแบบ

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

ขั้นตอนที่ 3: ตัวลดทอนสัญญาณ

ตัวลดทอน
ตัวลดทอน

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

จากนั้นฉันก็นึกถึง "สวิตช์แอนะล็อก" ซึ่งฉันสามารถสร้างโพเทนชิออมิเตอร์แบบดิจิทัลได้ด้วยตัวเอง ในคอลเลกชั่นชิ้นส่วนของฉัน ฉันพบ CD4066 ที่มีสวิตช์อนาล็อกสี่ตัว แนวคิดคือการสร้างตัวต้านทานป้อนกลับของตัวแปร opamp โดยการเปลี่ยนตัวต้านทานเข้าและออกขนานกับตัวต้านทานป้อนกลับ

มันใช้งานได้ดีมาก แต่มีสวิตช์เพียง 4 ตัวใน 4066 และมี 2 ช่องสัญญาณ จึงไม่สามารถสร้างระดับความไวได้มากกว่าสามระดับ ฉันเลือก 500mV, 1V และ 2V ต่อแผนกเนื่องจากเป็นระดับแรงดันไฟฟ้าที่ฉันใช้มากที่สุด หน้าจอแบ่งออกเป็น 6 ส่วน เพื่อให้ช่วง -1.5V ถึง +1.5V, -3V ถึง +3V และ -6V ถึง 6V

ด้วย "virtual-ground" คุณสามารถย้ายช่วงเหล่านี้ขึ้นและลง แม้กระทั่ง 0v ถึง +12V ก็ยังเป็นไปได้

ขั้นตอนที่ 4: Virtual Ground

สนามเสมือน
สนามเสมือน
สนามเสมือน
สนามเสมือน

เนื่องจากออสซิลโลสโคปใช้รางไฟฟ้าเดี่ยว (3.3V) opamps จึงจำเป็นต้องมีระดับกราวด์เสมือน มิฉะนั้นจะไม่ทำงาน ระดับกราวด์เสมือนนี้สร้างด้วย PWM บนช่องสัญญาณเอาต์พุตหนึ่งช่องของ TIM4 รอบการทำงานของมันเปลี่ยนจากเพียงไม่กี่เปอร์เซ็นต์เป็นเกือบร้อยเปอร์เซ็นต์ ฟิลเตอร์กรองความถี่ต่ำที่มีตัวต้านทาน 1k และตัวเก็บประจุ 10uF จะเปลี่ยนให้เป็นแรงดันไฟฟ้า (เกือบ) 0V ถึง (เกือบ) 3.3V ความถี่ของคลื่นสี่เหลี่ยมนั้นต่ำกว่า 100kHz ดังนั้นตัวกรองความถี่ต่ำแบบธรรมดาจึงดีเพียงพอ

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

ขั้นตอนที่ 5: ตัวเข้ารหัสโรตารี่และการดีบัก

ตัวเข้ารหัสและการดีบักแบบหมุน
ตัวเข้ารหัสและการดีบักแบบหมุน
ตัวเข้ารหัสและการดีบักแบบหมุน
ตัวเข้ารหัสและการดีบักแบบหมุน

ในมินิออสซิลโลสโคป ฉันใช้เครื่องเข้ารหัสแบบหมุนเพียงตัวเดียวสำหรับทุกฟังก์ชัน นั่นจะทำให้ออสซิลโลสโคปคู่ใช้งานยากมาก ดังนั้นที่นี่ฉันต้องการสองตัว ตัวเข้ารหัสหนึ่งตัวสำหรับตัวลดทอนและระดับกราวด์เสมือน และตัวเข้ารหัสอีกตัวสำหรับฐานเวลาและการทริกเกอร์ น่าเศร้า เช่นเดียวกับในโครงการอื่นของฉัน ตัวเข้ารหัสแบบหมุนเหล่านี้ "มีเสียงดัง" มาก พวกมันแย่มากจนไม่สามารถทำงานกับตัวจับเวลาใน "โหมดเข้ารหัส" ซึ่งเป็นวิธีมาตรฐานในการอ่าน ฉันต้องทำกลไกการดีบาวซ์ด้วยตัวจับเวลา TIM2 โดยตรวจสอบตัวเข้ารหัสทุก ๆ 100us ในทางกลับกัน ตัวจับเวลานี้จะเริ่มทำงาน (เท่านั้น) เมื่อมีกิจกรรมบางอย่างในเอ็นโค้ดเดอร์ ซึ่งจะตรวจสอบด้วยฟังก์ชัน EXTI บนพอร์ตอินพุต ตอนนี้ตัวเข้ารหัสทำงานได้ดี

และอย่างที่คุณเห็น การมีจอแสดงผลยังมีประโยชน์มากในการแสดงข้อมูลการดีบัก

ขั้นตอนที่ 6: การแสดงผลและฐานเวลา

จอแสดงผลและฐานเวลา
จอแสดงผลและฐานเวลา

จอแสดงผลมีความละเอียด 160 x 128 พิกเซล ดังนั้นจึงมี 160 ตัวอย่างที่จำเป็นสำหรับหนึ่งหน้าจอเต็ม ฉันจัดการเพื่อเพิ่มความเร็วให้ ADC เพื่อทำ 1.6 ล้านตัวอย่างต่อวินาที และด้วยไมโครคอนโทรลเลอร์ที่โอเวอร์คล็อกมาก (เพิ่มเติมในภายหลัง) ให้ ฐานเวลาขั้นต่ำ 20us ต่อแผนก (100us ต่อหน้าจอ) ดังนั้นรูปคลื่นที่ 10kHz จะเต็มทั้งหน้าจอ

นั่นเร็วเป็นสองเท่าของมินิออสซิลโลสโคปที่ฉันทำมาก่อน อ้อ ตอนนี้มีสองช่อง:-)

ดังที่กล่าวไว้ จอแสดงผลมีความกว้าง 160 พิกเซล ดังนั้นจำเป็นต้องมีเพียง 160 ค่าต่อหน้าจอ แต่บัฟเฟอร์ทั้งหมดมีตัวอย่าง 320 ตัวอย่าง ดังนั้น DMA จะเก็บค่า 320 ไว้ก่อนที่จะทริกเกอร์การขัดจังหวะการส่งข้อมูลที่สมบูรณ์ (TC) นี่เป็นเพราะการทริกเกอร์ทำได้ในซอฟต์แวร์ การสุ่มตัวอย่างเริ่มต้นในช่วงเวลาสุ่ม ดังนั้นจึงไม่น่าเป็นไปได้มากที่ค่าแรกในบัฟเฟอร์จะเป็นตำแหน่งที่จุดทริกเกอร์ควรอยู่

ดังนั้นจะพบจุดทริกเกอร์โดยการอ่านผ่าน trace_x_buffer หากค่าอยู่ที่ค่าทริกเกอร์ที่ต้องการ en หากค่าก่อนหน้าอยู่ด้านล่างเพียงเล็กน้อย จะพบ trigger_point ใช้งานได้ดี แต่คุณต้องการบัฟเฟอร์ที่ใหญ่กว่าขนาดการแสดงผลจริง

นี่เป็นสาเหตุที่อัตราการรีเฟรชในการตั้งค่าฐานเวลาที่ต่ำกว่านั้นช้ากว่าที่คุณคาดไว้ เมื่อคุณใช้การตั้งค่า 200ms/div หนึ่งหน้าจอที่มีข้อมูลเต็มคือ 1 วินาที แต่เนื่องจากมีการแปลงเป็นสองเท่า จึงใช้เวลา 2 วินาที ในการตั้งค่าฐานเวลาที่เร็วขึ้น คุณจะไม่เห็นมันมากนัก

TIM3 ถูกใช้เพื่อสร้างฐานเวลา มันทริกเกอร์ ADC ด้วยความเร็วตามที่กำหนดโดยการตั้งค่าฐานเวลาที่เลือก นาฬิกาของ TIM3 คือ 120MHz (ดูการโอเวอร์คล็อก) จำนวนสูงสุดที่นับ (ARR) กำหนดว่าโอเวอร์โฟลว์อื่นๆ อย่างไร หรืออัปเดตในภาษา ST ผ่าน TRGO พัลส์การอัปเดตเหล่านี้จะทริกเกอร์ ADC ความถี่ต่ำสุดที่สร้างคือ 160 Hz สูงสุดคือ 1.6MHz

ขั้นตอนที่ 7: ADC และ DMA

ADC และ DMA
ADC และ DMA

ADC สองตัวจะแปลงแรงดันไฟฟ้าบนอินพุตพร้อมกัน โดยจะเก็บค่า 12 บิตสองค่านั้นไว้ในตัวแปร 32 บิตตัวเดียว ดังนั้น DMA จึงมีเพียงหนึ่งตัวแปรต่อการแปลง (สองเท่า) เพื่อโอน

ในการใช้ค่าเหล่านี้ จำเป็นต้องแยกค่าออกเป็นสองค่าเพื่อให้สามารถใช้เพื่อแสดงร่องรอยทั้งสองได้ ดังที่กล่าวไว้ ADC ใน F103 ไม่สามารถตั้งค่าความละเอียดอื่นนอกเหนือจาก 12 บิตได้ พวกเขาอยู่ในโหมด 12 บิตเสมอ ดังนั้นการแปลงจะใช้จำนวนพัลส์นาฬิกาเท่ากันเสมอ อย่างไรก็ตาม ด้วยการโอเวอร์คล็อกของ ADC สามารถทำได้ 1.6 MSamples ต่อวินาที (ดูเพิ่มเติม: การโอเวอร์คล็อก)

การอ้างอิงของ ADC คือ Vdd ซึ่งเป็นราง 3.3V ในการแปลงค่านั้นเป็นค่าที่สะดวกกว่า (ต่อส่วน) ฉันได้คำนวณค่าของตัวลดทอนแล้ว เนื่องจากฉันไม่มีค่าตัวต้านทานที่แน่นอนซึ่งมาจากการคำนวณเหล่านั้น การแก้ไขบางอย่างทำได้ในซอฟต์แวร์

ในโครงการนี้ ฉันใช้ DMA ใน "โหมดปกติ" ในโหมดนี้ DMA จะหยุดถ่ายโอนข้อมูล (จาก ADC ไปยังหน่วยความจำ) เมื่อจำนวนคำ (หรือครึ่งคำหรือไบต์) ทั้งหมดถูกถ่ายโอน ในโหมดที่เป็นไปได้อื่น "โหมดวงกลม" DMA จะรีเซ็ตตัวเองและดำเนินการถ่ายโอนข้อมูลต่อไปโดยไม่หยุดชะงัก ซึ่งใช้ไม่ได้กับ F103 มันเร็วมากจนเขียนทับข้อมูลใน adc_buffer ก่อนที่โปรแกรมที่เหลือจะอ่านได้ ดังนั้นตอนนี้กระบวนการจึงเป็นดังนี้:

- ตั้งค่า DMA เป็นจำนวนข้อมูลที่จะโอนและเปิดใช้งาน DMA

- เริ่มทริกเกอร์ ADC สิ่งเหล่านี้จะร้องขอการถ่ายโอน DMA หลังจากการแปลง (สองครั้ง) แต่ละครั้ง

- หลังจากโอนจำนวนการแปลงที่กำหนดไว้ DMA จะหยุด

- หยุดทริกเกอร์ ADCs ทันทีเช่นกัน

- จัดการทั้งหมดที่จำเป็นกับข้อมูลในหน่วยความจำ

- แสดงร่องรอยบนหน้าจอ

- เริ่มกระบวนการอีกครั้ง

ขั้นตอนที่ 8: ส่วนต่อประสานผู้ใช้

หน้าจอผู้ใช้
หน้าจอผู้ใช้

หน้าจอขนาด 160 x 128 พิกเซลไม่ใหญ่มาก และฉันต้องการใช้ให้มากที่สุด ดังนั้นจึงไม่มีส่วนใดที่สงวนไว้สำหรับการตั้งค่ากระแสน้ำ ในช่วงสองสามแถวสุดท้าย ความไวในแนวตั้ง ฐานเวลา ระดับทริกเกอร์ และช่องสัญญาณทริกเกอร์จะแสดงขึ้น แต่เมื่อสัญญาณมีขนาดใหญ่พอ จะปรากฏในพื้นที่เดียวกัน ตัวเลือกที่เปิดใช้งานจะแสดงเป็นสีเหลือง ส่วนที่เหลือจะแสดงเป็นสีขาว

ขั้นตอนที่ 9: การสร้างและการปรับปรุงที่เป็นไปได้

อาคารและการปรับปรุงที่เป็นไปได้
อาคารและการปรับปรุงที่เป็นไปได้
อาคารและการปรับปรุงที่เป็นไปได้
อาคารและการปรับปรุงที่เป็นไปได้
อาคารและการปรับปรุงที่เป็นไปได้
อาคารและการปรับปรุงที่เป็นไปได้
อาคารและการปรับปรุงที่เป็นไปได้
อาคารและการปรับปรุงที่เป็นไปได้

ฉันค่อนข้างมีความสุขกับโครงการนี้ มันใช้งานได้ดีและทำงานได้ดี แต่น่าจะดีกว่านี้

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

ฉันทำให้ชีวิตยากขึ้นโดยใช้ตัวเชื่อมต่อ Banana แทนตัวเชื่อมต่อ BNC หรือ SMA หมายความว่าส่วนใหญ่ของ perfboard เป็น "พื้นที่ที่ไม่ต้องไป" เพื่อให้ชัดเจนสำหรับตัวเอง ฉันวางเทป kapton ทับเพื่อป้องกันตัวเอง จากการใส่ชิ้นส่วนลงไป

ปัญหาอีกประการหนึ่งในการใส่ทั้งหมดลงในกล่องโปรเจ็กต์ขนาดเล็กเช่นนี้คือวงจรแอนะล็อกและดิจิทัลอยู่ใกล้กันมาก จะเห็นได้ว่าทั้งสองร่องรอยมีสัญญาณรบกวนค่อนข้างมาก นี้ฉันไม่ได้มีบนเขียงหั่นขนม! โดยการย้ายสายไฟสำหรับวงจรแอนะล็อกและดิจิทัลให้ไกลที่สุดเท่าที่จะทำได้ มีการปรับปรุงเล็กน้อย แต่ก็ไม่เพียงพอสำหรับความชอบของฉัน การลดค่าตัวต้านทานทั้งหมดในวงจรแอนะล็อกให้มากกว่าที่ฉันทำ (ความต้านทานอินพุตคือ 100kOhm แทนที่จะเป็น 1MOhm) ไม่ได้ช่วยอะไร ฉันสงสัยว่าการกระตุ้นด้วยการตั้งค่าฐานเวลาที่เร็วที่สุด (20us/div) ซึ่งไม่ดีเลย จะปรับปรุงด้วยสัญญาณรบกวนน้อยลงด้วย

หากคุณทำการออกแบบนี้บน pcb "ของจริง" ด้วยชิ้นส่วน smd ทั้งหมดและแยกเลเยอร์สำหรับอนาล็อก ดิจิตอล และพลังงาน (นั่นคือ 4 เลเยอร์!) มันอาจจะทำงานได้ดีมาก มันจะเล็กกว่ามาก มันจะไม่ใช้ Blue Pill ที่สมบูรณ์ แต่เป็นเพียง F103 และนั่นจะทำให้สามารถจัดหา Vdda แอนะล็อกแยกต่างหาก (สะอาด) สำหรับ ADC ได้

ขั้นสุดท้าย ฉันตัดสินใจพ่นสีดำในกล่อง ทำให้เปลี่ยนจากกล่องสีเบจทั้งหมดที่มีอยู่

ขั้นตอนที่ 10: รหัสและวิดีโอสั้น

ขั้นตอนที่ 11: พิเศษ: การโอเวอร์คล็อก

พิเศษ: โอเวอร์คล็อก
พิเศษ: โอเวอร์คล็อก

เช่นเดียวกับที่ฉันทำกับ F03 ฉันต้องการดูว่า F103 สามารถโอเวอร์คล็อกได้ดีเพียงใด ข้อมูลจำเพาะสำหรับไมโครคอนโทรลเลอร์นี้อ้างว่าความเร็วสัญญาณนาฬิกาสูงสุดไม่ควรเกิน 72MHz (ซึ่งแน่นอนว่าเร็วกว่า F030) อยู่แล้ว แต่ฉันได้อ่านในบล็อกหลาย ๆ แห่งที่โอเวอร์คล็อกได้ง่าย ทำไมไม่

Blue Pill มาพร้อมกับคริสตัล 8MHz PLL คูณด้วยปัจจัย 9 ถึง 72MHz PLL สามารถเพิ่มได้ถึง 16 ให้นาฬิกาที่ 128MHz นั่นไม่ใช่ปัญหาเลยสำหรับ Blue Pill ของฉัน อันที่จริง Blue Pills ทั้งหมดของฉันทำงานโดยไม่มีปัญหาใดๆ บน 128MHz

แต่ตอนนี้ฉันต้องการค้นหาว่าขีด จำกัด ที่แท้จริงคืออะไร ดังนั้นฉันจึงถอดคริสตัล 8MHz และแทนที่ด้วย 12MHz อันใดอันหนึ่ง ฉันเพิ่มตัวคูณ PLL อีกครั้งจนกว่าไมโครคอนโทรลเลอร์จะยอมแพ้ในที่สุด นั่นคือที่ 168MHz ! บน 156MHz ก็ยังทำงานได้ดี ฉันปล่อยให้มันวิ่งด้วยความเร็วนั้นนานหลายชั่วโมงและไม่เคยเห็นมันพังเลย ในออสซิลโลสโคปนี้ ฉันตั้งค่าที่ 120MHz ซึ่งเป็นความเร็วที่สามารถเลือกได้ด้วยคริสตัล 12MHz และ PLL ที่ 10 เช่นเดียวกับคริสตัล 8 MHz และ PLL ในวันที่ 15 (ดู SystemClock_Config ใน main.c)

ตอนนี้ ADC ก็ทำงานเร็วขึ้นเช่นกัน ฉันให้มันทำงานที่ 30MHz (แทนที่จะเป็น 14) พวกเขายังคงทำงานได้ดีบน 60MHz, STMicroelectronics สร้างฮาร์ดแวร์ที่ดี!

STMicroelectronics ใส่ข้อจำกัดเหล่านี้ไว้ในแผ่นข้อมูลด้วยเหตุผลที่ดี พวกเขารับประกันว่าไมโครคอนโทรลเลอร์จะทำงานที่ 72MHz ที่ระบุภายใต้เงื่อนไขทั้งหมด

แต่เนื่องจากผมไม่ได้ใช้ไมโครคอนโทรลเลอร์ที่อุณหภูมิ -40 เซลเซียส +85 เซลเซียส แค่ 2.0 Volt หรือ 3.6 Volt ผมคิดว่ามันปลอดภัยที่จะโอเวอร์คล็อก อย่าทำเช่นนี้เมื่อคุณตั้งใจจะขายอุปกรณ์ที่มีไมโครคอนโทรลเลอร์ คุณไม่มีทางรู้ว่าจะใช้อุปกรณ์ดังกล่าวที่ไหน

แนะนำ: