โครงการที่ดี ต่อไปนี้เป็นคำใบ้เล็กน้อย แต่ก็เป็นการยากที่จะพูดถึงเรื่องนี้สำหรับทุกโครงการ
เริ่มต้นด้วยข้อกำหนดการคำนวณ
นี่คือสิ่งที่จะบอกคุณว่าคุณต้องการแกนหลักแบบใดและการแสดงทั่วไปของ MCU ฉันขอแนะนำให้คุณเริ่มต้นด้วยสิ่งนี้เนื่องจากไม่สามารถขยายได้อย่างชัดเจนโดยใช้ส่วนประกอบภายนอกซึ่งแตกต่างจากอุปกรณ์ต่อพ่วง
ครั้งแรกดูเหมือนว่าคุณใช้การดำเนินการทางคณิตศาสตร์อย่างมากกับจำนวนเต็มขนาดใหญ่ภายในลูป ดังนั้นอย่างที่คุณแนะนำ 32 บิตจะมีประโยชน์ที่นี่ดังนั้น ARM จึงมาในฐานะผู้สมัครในอุดมคติ สำหรับความถี่ของการทำงาน: ปัจจุบันคุณใช้ Arduino MEGA2560 (ใช้งานที่ 16MHz ฉันคิดว่า) และคุณสามารถสร้าง 10 loops / s หากคุณต้องการได้ 100 ลูป / วินาทีคุณควรใช้ Cortex-M3 / M4 ในช่วง 100MHz หรือมากกว่า (ประมาณคร่าวๆ) โปรดทราบว่า Cortex-M4F มีหน่วยจุดลอยตัว
เราได้ทำการเลือกให้แคบลง
ข้อกำหนดหน่วยความจำ
อันนี้ง่าย: เลือก MCU ที่มี RAM / Flash มากที่สุดในช่วงของต้นแบบ เมื่อคุณตรวจสอบต้นแบบแล้วให้เปลี่ยนไปใช้ MCU จากช่วงเดียวกันที่มี RAM / Flash เพียงพอแล้วตอนนี้คุณก็รู้ข้อกำหนดที่แน่นอนแล้ว
โปรดทราบว่าฉันไม่คิดว่าแอปพลิเคชันของคุณต้องการหน่วยความจำจำนวนมาก
ตอนนี้อุปกรณ์ต่อพ่วง
คุณต้องการ ADC บางส่วน MCUs ทั้งหมดของช่วงที่เรากำลังดูมีอยู่บางส่วนดังนั้นจึงไม่ใช่เกณฑ์ที่มีประโยชน์ ไม่ว่าจะเป็นอินพุต / เอาต์พุตดิจิตอลยกเว้นในกรณีที่คุณต้องการจำนวนมาก (ซึ่งดูเหมือนจะไม่ใช่กรณีของคุณ)
คุณดูเหมือนจะต้องการ DAC อย่างไรก็ตามนี่คือสิ่งที่คุณจะไม่พบได้ง่ายและจะ จำกัด ผู้สมัครมากเกินไป ดังนั้นเราจึงไม่รักษาความต้องการนั้นไว้และเราจะอยู่กับ PWM และ lowpass (ซึ่งแน่นอนว่ายอมรับได้จริง)
คุณไม่ได้พูดถึงส่วนต่อประสานการสื่อสารใด ๆ ยกเว้นจอ LCD (หลังจากนั้น) อย่างไรก็ตาม MCUs ทั้งหมดมี I2C / SPI / UART / ... หากคุณต้องการ
จอแอลซีดี
อันนี้มีเล่ห์เหลี่ยมเนื่องจากมีโซลูชันต่าง ๆ มากมายที่ทำให้ความต้องการที่แตกต่างกันอย่างสมบูรณ์บน MCU แต่อย่าเลือก LCD ขึ้นอยู่กับ MCU เลือก LCD ที่คุณต้องการสำหรับผลิตภัณฑ์ของคุณจากนั้นเลือก MCU ที่จะขับเคลื่อนได้อย่างมีประสิทธิภาพ
- หากคุณต้องการตัวอักษร LCD: สิ่งที่ง่ายที่สุดและข้อ จำกัด ที่น้อยที่สุดสำหรับ MCU คือการพูดคุยกับมันผ่านส่วนต่อประสานแบบอนุกรม วิธีนี้จะไม่ใช้ PIN มากเกินไปคุณสามารถใช้ MCU ที่เล็กกว่า / ราคาถูกกว่าและความเร็วไม่เป็นปัญหา
- หากคุณต้องการ TFT LCD แบบกราฟิค: ถ้าเป็นขนาดเล็กลิงค์อนุกรมอาจยังเหมาะสม อย่างไรก็ตามสำหรับ 320x200 หรือใหญ่กว่าและหากคุณต้องการอินเทอร์เฟซกราฟิกที่ดีคุณจะเริ่มต้องการสื่อสารกับอินเตอร์เฟสแบบขนาน ในกรณีนี้คุณใช้ GPIO บางตัว (แต่จะเพิ่มภาระให้กับ MCU มากขึ้นเพราะคุณจะต้องกัดสายควบคุมเล็กน้อย) หรือคุณเลือก MCU ที่มีอินเตอร์เฟส LCD เฉพาะ (ซึ่งมักจะเหมือนกับ อินเตอร์เฟสหน่วยความจำภายนอก) อันสุดท้ายนี้ทำให้ข้อ จำกัด ที่แข็งแกร่งของตัวเลือก MCU แต่คุณไม่มีข้อ จำกัด ที่แข็งแกร่งดังนั้น ...
ตอนนี้คุณเลือก
ไปที่เว็บไซต์ ST Micro / NXP / Atmel และใช้เครื่องมือเลือก MCU คุณจะใช้เวลามากมายในการอ่านเอกสารข้อมูลด้วย ใช้เวลานี้ มันไม่เสียเปล่า ทุกสิ่งที่คุณจะได้เรียนรู้ที่นี่แม้ว่าคุณจะไม่ได้ใช้มันโดยเฉพาะสำหรับโครงการนี้ก็มีประโยชน์
ณ จุดนี้คุณต้องดูจำนวน PIN ที่คุณต้องการและตรวจสอบรูปแบบการทำมัลติเพล็กของผู้สมัคร MCU ที่เลือกเพื่อตรวจสอบว่าคุณสามารถใช้ฟังก์ชั่น PIN ทั้งหมดที่คุณต้องการ เพราะเห็นได้ชัดว่าคุณต้องการใช้ MCUs ด้วยจำนวนพินที่ต่ำที่สุดที่ตอบสนองความต้องการของคุณ (สำหรับเหตุผลด้านราคา / PCB)
ตรวจสอบราคา / ความพร้อมใช้งานของ Mouser / Digikey แต่คุณไม่ควรต้องการอะไรที่มีราคาแพงเป็นพิเศษที่นี่ อาจจะ 5 ยูโรหรือมากกว่านั้น
สิ่งสุดท้ายที่เกี่ยวกับการควบคุม LCD
ดูเหมือนว่าการอัปเดต LCD นั้นเป็นส่วนหนึ่งของลูปหลักของคุณ มันไม่ควร โดยเฉพาะอย่างยิ่งถ้าคุณวนลูป 100 ครั้งต่อวินาทีมันไร้ประโยชน์ ทำให้ลูปควบคุมคำนวณทุกอย่างและปรับคำสั่งมอเตอร์ในการวนซ้ำแต่ละครั้ง แต่เพียงแค่อัปเดตค่าเพื่อแสดงที่ใดที่หนึ่งในหน่วยความจำ จากนั้นมีลูปอื่นที่มีลำดับความสำคัญต่ำกว่าแสดงข้อมูลนี้แก่ผู้ใช้เมื่อไม่มีอะไรสำคัญกว่า
ใช่มันต้องมีการเปลี่ยนงานและบางอย่าง ระบบปฏิบัติการจริงจริง ๆ แล้ว (ค้นหา FreeRTOS, Coocox OS, Nuttx, ... มีขนาดเล็กมากส่วนใหญ่จะใช้ใน Cortex-M และให้กลไกมัลติทาสก์ที่จำเป็น)