
การบันทึกเสียงและการเล่นโดยใช้ DMA และ CIPS
การสาธิตนี้ขึ้นอยู่กับแพลตฟอร์ม PIC18F57Q43 Curiosity Nano รายละเอียดการใช้ ADC สำหรับการบันทึกเสียง SPI สำหรับการเชื่อมต่อกับโมดูลหน่วยความจำภายนอก, DAC สำหรับการเล่น, DMA สำหรับการถ่ายโอนข้อมูลและการใช้ตัวจับเวลาเพื่อกำหนดความถี่การสุ่มตัวอย่าง แอปพลิเคชันยังแสดงให้เห็นถึงการใช้ Timer2 HLT และ CLC สำหรับการสลับการ debouncing และตัวเปรียบเทียบและ PWM สำหรับการขยายพลังงานคลาส D
เอกสารที่เกี่ยวข้อง
- การบันทึกเสียงและการเล่นโดยใช้การเข้าถึงหน่วยความจำโดยตรงและอุปกรณ์ต่อพ่วงอิสระหลัก (AN3548)
ซอฟต์แวร์ที่ใช้
- mplab® x ide 6.15 หรือใหม่กว่า (microchip.com/mplab/mplab-x-ide)
- MPLAB® XC8 2.45 หรือคอมไพเลอร์ใหม่ (microchip.com/mplab/compilers)
- MPLAB® Code Configurator (MCC) 5.3.7 หรือใหม่กว่า (microchip.com/mplab/mplab-code-configurator)
- MPLAB® Code Configurator (MCC) ห้องสมุดอุปกรณ์ PIC10 / PIC12 / PIC16 / PIC18 MCUS (microchip.com/mplab/mplab-code-configurator)
- Microchip PIC18F-Q Series Device Support (1.23.425) หรือใหม่กว่า (packs.download.microchip.com/)
ใช้ฮาร์ดแวร์
- PIC18F57Q43 Curiosity ชุดประเมินผลนาโน (DM164150)
- ความอยากรู้อยากเห็นฐานนาโนสำหรับคลิกบอร์ด™ (AC164162)
- ไมค์คลิก (Mikroe-2563)
- Flash 2 คลิก (Mikroe-2267)
- เพาเวอร์แอมพลิฟายเออร์นำไปใช้ในการคลิกโปรโต (Mikroe-1507)
การตั้งค่าฮาร์ดแวร์
การเชื่อมต่อที่จำเป็นระหว่างบอร์ดนาโน PIC18F57Q43 Curiosity Nano และบอร์ดคลิกที่จำเป็นจะแสดงอยู่ด้านล่าง:
- การขยายการคลิก 1 เชื่อมต่อกับกระดานคลิกไมค์ สิ่งนี้ใช้ PIN AN1 เพื่อถ่ายโอนสัญญาณเสียงอะนาล็อกไปยัง ADC on-board PIC18F57Q43 ไมค์คลิกมีการปรับสภาพสัญญาณและวงจรกรองบนกระดาน
- การขยายตัวของคลิก 2 เชื่อมต่อกับบอร์ด Flash 2 คลิก บอร์ดนี้มีชิปหน่วยความจำแฟลช SST26VF064B โดย Microchip และใช้ SPI เพื่อสื่อสารกับไมโครคอนโทรลเลอร์
- การขยายการคลิก 3 เชื่อมต่อกับวงจรแอมพลิฟายเออร์ไฟที่ทำเองคลาส D ที่กำหนดเองบน Proto Click
ความอยากรู้อยากเห็นการเชื่อมต่อบอร์ดนาโน

Proto Click Circuit

การตั้งค่าระบบเต็มรูปแบบ

Proto คลิก

การตั้งค่าซอฟต์แวร์
MCC ใช้เพื่อกำหนดค่าสิ่งต่อไปนี้ อ้างถึงโครงการ MPLAB X สำหรับรายละเอียดและการตั้งค่าสำหรับแต่ละองค์ประกอบ
- การตั้งค่าระบบ - CPU และ Interrupts
- TMR0 - ใช้เพื่อสร้างตัวจับเวลาการสุ่มตัวอย่าง 10 kHz
- ADCC - ใช้สำหรับการสุ่มตัวอย่างและการหาปริมาณสัญญาณเสียงอะนาล็อก
- DAC1 - ใช้เพื่อส่งออกสัญญาณเสียงอะนาล็อก
- SPI1 - ใช้ในการสื่อสารกับโมดูลหน่วยความจำภายนอก
- DMA (DMA1, DMA2, DMA3, DMA4, DMA5, DMA6) - การดำเนินการถ่ายโอนข้อมูล
- PWM1 - ใช้เพื่อสร้างรูปคลื่น Sawtooth สำหรับเครื่องขยายเสียง
- CMP1 - ใช้เพื่อเปรียบเทียบรูปคลื่น Sawtooth กับเอาต์พุต DC -Offset DAC เพื่อสร้างสัญญาณ PWM เพื่อขับลำโพงเสียง
- TMR2/4 - พร้อมกับ CLC1/2 ใช้สำหรับปุ่ม debounce
- CLC1/2 - พร้อมกับ TMR2/4 ใช้สำหรับปุ่ม debounce
- UART1 - ใช้สำหรับการส่งและรับข้อความการดีบัก
การดำเนินการ
ในการเรียกใช้แอปพลิเคชันให้ใช้ปุ่มบนบอร์ด Nano Curiosity
- โดยค่าเริ่มต้นแอปพลิเคชันอยู่ในโหมด "ไม่ได้ใช้งาน"
- กดปุ่มสองครั้งเพื่อเข้าสู่โหมด "บันทึก" ระบบจะทำการบันทึกต่อไปจนกว่าปุ่มจะถูกกดอีกครั้งเพื่อหยุดหรือมันหมดจากหน่วยความจำ หากมีหน่วยความจำภายนอกการบันทึกจะถูกเก็บไว้ที่นั่น มิฉะนั้นการบันทึกจะถูกเก็บไว้ในหน่วยความจำแฟลชภายใน
- กดปุ่มหนึ่งครั้งเพื่อเข้าสู่โหมด "การเล่น" ระบบจะเล่นเสียงที่บันทึกไว้ในหน่วยความจำจนกว่าปุ่มจะถูกกดอีกครั้งเพื่อหยุดหรือหากเล่นการบันทึกทั้งหมด
- กดปุ่มยาวเพื่อเข้าสู่โหมด "ลบ" และลบการบันทึกทั้งหมดออกจากหน่วยความจำ
มีปุ่มพิเศษบน Proto คลิกพร้อมกับแอมพลิฟายเออร์ ลองกดปุ่มนี้เพื่อเข้าสู่โหมด "Passthrough" ซึ่งระบบทำหน้าที่เป็นแอมพลิฟายเออร์แบบง่ายและไม่บันทึกและเก็บเสียง กดปุ่มพิเศษนี้อีกครั้งเพื่อออกจากโหมด "passthrough"
เสียงจะเล่นผ่านแอมพลิฟายเออร์คลาส D เมื่อคลิก Proto มีจัมเปอร์สองตัวที่อยู่ในการคลิกโปรโต:
- Jumper J1 เลือกแหล่งอินพุตเสียงระหว่างไมค์คลิกและไมโครโฟนหูฟัง (เลือกไมค์คลิกเสมอเมื่อไมโครโฟนหูฟังไม่ได้เชื่อมต่อกับแจ็คเสียง 3.5 มม.)
- Jumper J2 เลือกเอาต์พุตเสียงระหว่างลำโพงภายนอกและแจ็คเสียง 3.5 มม. ลำโพงภายนอกหรือหูฟังสามารถเชื่อมต่อกับแจ็คเสียง 3.5 มม.
หมายเหตุ: ขอแนะนำให้หลีกเลี่ยงการเลือกหูฟังสำหรับเอาต์พุตเสียงและอินพุต MIC เข้าด้วยกันในโหมด "passthrough" เพื่อหลีกเลี่ยงการเหนี่ยวนำเสียงรบกวน
สรุป
DMA เป็นวิธีที่ยอดเยี่ยมในการถ่ายโอนข้อมูลระหว่างการลงทะเบียน RAM และ Flash ในการกำหนดค่าที่แตกต่างกัน ช่วยให้ความเร็วและความสะดวกในการใช้งานนอกเหนือจากการปลด CPU เพื่อทำงานอื่น ๆ
DAC ช่วยให้การทำซ้ำสัญญาณเสียงตัวอย่างดีขึ้นเนื่องจากความละเอียด 8 บิตที่สูงขึ้น เอาต์พุตบัฟเฟอร์ของ DAC ก่อให้เกิดการเชื่อมต่อที่ดีกับอุปกรณ์ต่อพ่วงที่แตกต่างกันโดยตรงโดยไม่ลดระดับสัญญาณ สิ่งนี้สามารถใช้ร่วมกับ PWM และตัวเปรียบเทียบเพื่อสร้างแอมพลิฟายเออร์พาวเวอร์คลาส D ที่ยอดเยี่ยม
TIMER2 HLT สามารถรวมกับ CLC สำหรับเทคนิคการ debouncing สวิตช์ฟรีรหัสที่ยอดเยี่ยม