ไขปัญหาการใช้งานพอร์ต SPI ของบอร์ด PIC-331
1. Overview
บอร์ดไมโครคอนโทรลเลอร์เอนกประสงค์รุ่น PIC-331 นั้นสามารถรองรับการใช้งานกับ PIC ไมโครคอนโทรลเลอร์ได้หลากหลายเบอร์ ด้วยซ็อกเก็ตแบบ PDIP ซึ่งผู้ใช้สามารถถอดเปลี่ยนได้เอง และเพื่อให้สามารถรองรับการใช้งานได้หลากหลาย จึงจำเป็นต้องมีความเข้าใจเกี่ยวกับขาสัญญาณต่างๆ ของไมโครคอนโทรลเลอร์ด้วย โดยในบทความนี้จะแสดงให้เห็นถึงการใช้งานพอร์ต SPI (Serial Peripheral Interface) อันเป็นพอร์ตที่ได้รับความนิยมในการสื่อสารกับอุปกรณ์ต่อร่วมต่างๆ เช่น ไอซีแปลงสัญญาณ ADC / DAC หรือ Display driver เป็นต้น
บ่อยครั้งที่ได้รับคำถามเกี่ยวกับการใช้งานพอร์ต SPI ของบอร์ดรุ่น PIC-331 จึงขออธิบายถึงไมโครคอนโทรลเลอร์ทั่วไป เช่น PIC16F887, PIC18F458 และไมโครคอนโทรลเลอร์ที่มีพอร์ต USB เช่น PIC18F4550, PIC18F2550 โดยพิจารณาที่ตำแหน่งขาสัญญาณพอร์ต SPI คือ RC3, RC4 และ RC5 ดังนี้
2. ปัญหาที่พบเมื่อใช้งาน SPI Port
จะเห็นได้ว่าขาสัญญาณของ PIC18F4550 ที่ใช้ต่อกับพอร์ต USB นั้น จะเป็นตำแหน่งเดียวกับพอร์ต SPI ของไมโครคอนโทรลเลอร์ รุ่นทั่วไปที่ไม่มีความสามารถ USB โดยขา RC3 สำหรับ PIC18F4550 กรณีใช้คุณสมบัติการเชื่อมต่อ USB จะทำหน้าที่เป็น Vusb ให้ค่าแรงดันเอาต์พุตออกมาที่ 3.3V และให้ต่อกับตัวเก็บประจุเพื่อรักษาเสถียรภาพแรงดันดังรูป
ปัญหาที่พบได้คือ การใช้งานในโหมด SPI สำหรับ PIC16F887 หรือไมโครคอนโทรลเลอร์เบอร์อื่นๆ โดยตัวเก็บประจุที่ต่อกับขาสัญญาณ RC3 / SCK จะส่งผลให้สัญญาณ Clock ที่ใช้ในการสื่อสารแบบ SPI มีรูปสัญญาณที่ผิดเพี้ยนไปและไม่อาจสื่อสารได้
3. การแก้ไขปัญหา
ดังนั้น จึงต้องพิจารณาถึงเบอร์ไมโครคอนโทรลเลอร์ และคุณสมบัติการใช้งาน USB ว่าเป็นอย่างไร โดยหากเป็นการใช้งานปกติ ไม่ใช้ความสามารถ USB ให้ถอดตัวเก็บประจุที่ขา RC3 / Vusb ออก