การเขียนโปรแกรม PIC ผ่าน FPGA


9

ฉันต้องการทราบว่ามีวิธีการเขียนโปรแกรม PIC เป็นครั้งแรก (เขียนเป็น Flash) ผ่านการ์ด FPGA หรือไม่

PIC ถูกบัดกรีไปยัง FPGA แล้วและฉันไม่สามารถลบได้ ไม่มี bootloader อยู่บน PIC ดังนั้นฉันต้องตั้งโปรแกรมในโหมด USART / SPI / I2C ด้วย bootloader เพื่อให้สามารถรับข้อมูลจาก FPGA

ฉันรู้ว่าปกติฉันต้องปลดล็อคมันเชื่อมต่อกับโปรแกรมเมอร์ฮาร์ดแวร์เช่น PICKit และตั้งโปรแกรมด้วยซอฟต์แวร์บนคอมพิวเตอร์เช่น MPLAB แต่ฉันไม่สามารถจ่ายได้

ฉันสามารถสร้าง bootloader ด้วย MPLAB ซึ่งเป็นไฟล์. hex แต่ฉันจะถ่ายโอนไปยัง FPGA แล้วไปยัง PIC ผ่านทางหมุด FPGA ได้อย่างไร

PIC ที่ใช้คือ Microchip PIC12F1822


2
เพียงตรวจสอบ: คุณสามารถ reprogram FPGA (เช่นคุณมีเครื่องมือทั้งหมดที่จำเป็นในการทำเช่นนี้)?
pjc50

นี่คือคณะกรรมการพัฒนาบางอย่าง?
Matt Young

ใช่ฉันมีเครื่องมือทั้งหมดที่จำเป็นในการ reprogram FPGA (เชื่อมต่อกับคอมพิวเตอร์ผ่าน usb มาตรฐาน)
Myst

1
ไม่พวกเขาถูกตำหนิเพราะพวกเขาไม่ได้ใช้ความพยายามนี้ จริงๆแล้วฉันกำลังฝึกงานและฉันพบว่าไม่เป็นมืออาชีพมาก แม้ว่าฉันจะยังคงต้องแก้ไขปัญหา ฉันไม่เห็นวิธีที่จะเขียนโปรแกรม PIC อีกครั้งด้วยวิธีอื่นนอกเหนือจากโปรแกรมเมอร์ภายนอกซึ่งฉันไม่สามารถใช้งานได้เนื่องจากแพ็คเกจนี้ได้ทำไปแล้ว
Myst

2
ไม่มีวิธีใดที่จะบัดกรีสายจัมเปอร์ไปยังร่องรอยหรือหมุดบน PIC เพื่อให้คุณสามารถตั้งโปรแกรมผ่านโปรแกรมเมอร์ภายนอกได้หรือไม่? พยายามที่จะทำผ่าน FPGA เสียงเหมือนโครงการวิทยานิพนธ์ระดับบัณฑิตศึกษา
ต้า

คำตอบ:


10

ไม่คุณไม่จำเป็นต้องใช้ SPI, UART หรือ I 2 C ในการเขียนโปรแกรม PIC เพียงวิธีการที่จะได้รับโปรแกรมใหม่เป็น PIC ที่ไม่ได้มีรหัสพิเศษโหลดว่าจุดประสงค์ (ก bootloader) คือการใช้อินเตอร์เฟซการเขียนโปรแกรมฮาร์ดแวร์ภายนอก หมายถึงการเชื่อมต่อกับ Vss, MCLR, PGC และ PGD มันจะมีประโยชน์ที่จะให้โปรแกรมเมอร์เชื่อมต่อกับ Vdd ด้วย แต่ไม่จำเป็นสำหรับชิปนี้ตราบใดที่ทราบระดับ Vdd และโปรแกรมเมอร์ก็ปรับตามนั้น

อินเตอร์เฟสฮาร์ดแวร์ระดับต่ำนั้นค่อนข้างง่าย PGD ​​เป็นสายข้อมูลซึ่งมีการสุ่มตัวอย่างโดย PIC ที่ขอบตกของ PGC ในการรับ PIC เข้าสู่โหมดการเขียนโปรแกรมในตอนแรกคีย์ 32 บิตพิเศษถูกตอกบัตรเมื่อเทียบกับขอบเฉพาะใน MCLR (แม้ว่าจะดูหมายเหตุด้านล่างเกี่ยวกับการโปรแกรมแรงดันสูง)

โปรโตคอลระดับที่สูงขึ้นมีความซับซ้อนมากขึ้น สิ่งส่วนใหญ่ทำด้วยคำสั่ง 6 บิตบางคำตามด้วยคำข้อมูล 14 บิต คุณต้องอ่านรายละเอียดการเขียนโปรแกรมอย่างระมัดระวัง โปรดทราบว่าข้อมูลจำเพาะการเขียนโปรแกรมเป็นเอกสารแยกต่างหากจากแผ่นข้อมูล ไปที่หน้าผลิตภัณฑ์สำหรับ PIC เฉพาะของคุณบนเว็บไซต์ Microchip และคุณจะพบลิงค์ไปยังข้อมูลจำเพาะการเขียนโปรแกรมในส่วนเอกสาร

เพิ่มเกี่ยวกับการเขียนโปรแกรมไฟฟ้าแรงสูง

PIC เหล่านี้มีสองวิธีในการเข้าสู่โหมดการเขียนโปรแกรมแรงดันสูง (HVP) และแรงดันไฟฟ้าต่ำ (LVP) วิธีการแรงดันสูงต้องเพิ่ม MCLR ให้อยู่ระหว่าง 8 และ 9 โวลต์และเก็บไว้ในระหว่างการเขียนโปรแกรม วิธีนี้ใช้งานได้เสมอไม่ว่าข้อมูลที่เป็นไปได้ใด ๆ ที่ตั้งโปรแกรมไว้ใน PIC

วิธีการที่แรงดันไฟฟ้าต่ำในการเข้าสู่โหมดการเขียนโปรแกรมเริ่มต้นด้วยการขับ MCLR สูงแล้วต่ำจากนั้นทำการตอกบัตรตามลำดับคีย์ 32 บิตพิเศษโดยใช้ PGC และ PGD ตามปกติ ส่วนจะเข้าสู่โหมดการเขียนโปรแกรมตามลำดับคีย์ที่ถูกต้องและจะอยู่ในโหมดการเขียนโปรแกรมตราบใดที่ MCLR อยู่ในระดับต่ำ

วิธีแรงดันไฟฟ้าต่ำสามารถปิดใช้งานโดยหนึ่งในบิตการกำหนดค่า อย่างไรก็ตามสถานะการลบของบิตตั้งค่าอนุญาตให้ตั้งโปรแกรมแรงดันไฟฟ้าต่ำมันถูกส่งมาจากโรงงานด้วยวิธีนี้และบิตตั้งค่านี้สามารถตั้งค่าให้ไม่อนุญาต LVP ได้หากเข้าสู่การเขียนโปรแกรมด้วยวิธีไฟฟ้าแรงสูง ดังนั้นเพื่อไม่ให้เปิดใช้งาน LVP สิ่งต่อไปนี้ทั้งหมดต้องเป็นจริง:

  1. PIC ถูกตั้งโปรแกรมล่าสุดด้วยโปรแกรมเมอร์ที่มีความสามารถใน HVP และใช้โหมดการป้อนโปรแกรม HVP

  2. ไฟล์ HEX ที่ตั้งโปรแกรมไว้ใน PIC จงใจตั้งค่า LVP บิตใน config word 2 เป็นสถานะที่ไม่ถูกลบ

เนื่องจากการปิดใช้งาน LVP ค่อนข้างจำเป็นต้องมีการดำเนินการอย่างรอบคอบและโปรแกรมเมอร์ที่ถูกต้องจึงยังคงเปิดใช้งานอยู่ หากมีการปิดใช้งานโดยเจตนาด้วยเหตุผลแปลก ๆ คุณต้องจัดหา 8-9 V สำหรับ MCLR เพื่อให้ PIC เข้าสู่โหมดการเขียนโปรแกรมอย่างน้อยนานพอที่จะทำการลบจำนวนมาก (ซึ่งเปิดใช้งาน LVP อีกครั้ง)


3

การเขียนโปรแกรม PIC ต้องการแรงดันไฟฟ้าสูง ใช่เป็นไปได้ที่จะสลับ PIC ไปเป็น "LVP" หรือโหมดการเขียนโปรแกรมแรงดันไฟฟ้าต่ำ แต่คุณต้องการโปรแกรมเมอร์แรงดันสูงเพื่อทำสิ่งนี้

หาก PIC ของคุณถูกใส่ไว้ในโหมด LVP แล้วใช่คุณสามารถตั้งโปรแกรม PIC จาก FPGA ได้อย่างง่ายดาย แผ่นข้อมูลทั้งหมดมีรูปแบบคลื่นการเขียนโปรแกรมที่จำเป็นสำหรับการเขียนโปรแกรมชิปดังนั้นจึงเป็นกรณีของการสร้างอุปกรณ์โปรแกรมเมอร์ PIC ของคุณเองใน FPGA

อย่างไรก็ตามหาก PIC ไม่ได้อยู่ในโหมด LVP คุณจะต้องสร้างแรงดันไฟฟ้าสูง (โดยทั่วไปคือ 10V) และนำไปใช้กับพิน MCLR ในเวลาที่เหมาะสมเพื่อเข้าสู่โหมดการเขียนโปรแกรม หากคุณไม่มีฮาร์ดแวร์ประเภทนี้อยู่แล้วในบอร์ดของคุณก็จะต้องใช้ฮาร์ดแวร์เพิ่มเติมที่ถูกควบคุมโดย FPGA ในท้ายที่สุดว่าเมื่อใดที่มันถูกทริกเกอร์

โปรแกรมเมอร์ PIC ส่วนใหญ่มีตัวเพิ่มบูสเตอร์ขนาดเล็ก (ตัวเพิ่มแรงดันไฟฟ้า) เพื่อรับ 5V ที่มีให้สูงสุดถึง 10V โดยใช้ PIC onboard เพื่อจัดการควบคุมแรงดันไฟฟ้า พวกเขามักใช้ PWM จาก PIC และอินพุต ADC บน PIC เป็นตัวควบคุมบูสเตอร์ธรรมดา

คุณควรดูแผนผัง PICkit2 ที่เปิดเผยสู่สาธารณะ


1
ไม่น่าจะไม่จำเป็นต้องใช้ไฟฟ้าแรงสูง ชิ้นส่วนที่ใหม่กว่าส่วนใหญ่รวมถึงซีรีย์ 12F1xxx / 16F1xxx ทั้งหมดสามารถใช้ลำดับคีย์เพื่อเข้าสู่โหมดการเขียนโปรแกรม ลำดับนี้ไม่จำเป็นต้องใช้ไฟฟ้าแรงสูง สามารถปิดใช้งานได้ในการกำหนดค่า แต่ชิ้นส่วนมาจากโรงงานโดยใช้วิธีการเปิดใช้งานคีย์ ยกเว้นว่ามีบางคนปิดใช้งานการเข้าใช้โหมดโปรแกรมลำดับคีย์โดยเจตนาก็ยังคงใช้ได้ หากถูกปิดใช้งานแล้วใช่คุณต้องเพิ่ม MCLR เป็น 8-9 V เพื่อเข้าสู่โหมดการเขียนโปรแกรม
Olin Lathrop

โหมดการตั้งโปรแกรมหลักคือโหมด LVP มันขึ้นอยู่กับ LVP = 1 ในการกำหนดค่า ดูเหมือนว่าค่าเริ่มต้นของชิปนั้นจะเป็น LVP = 1 แต่มันคือ = 1 ในชิปที่เฉพาะเจาะจงนั้นหรือมีการตั้งโปรแกรมด้วย LVP = 0 แล้วหรือไม่ ใครจะรู้? อย่างที่ฉันบอก - ถ้าอยู่ในโหมด LVP คุณไม่จำเป็นต้องใช้ HV ไม่เช่นนั้น
Majenko

ดังนั้นในการโปรแกรมในโหมด LVP ฉันต้องใช้โปรแกรมเมอร์ PIC (VHDL) ใน "FPGA" ของฉันหรือไม่ ฉันไม่สามารถคิดวิธีการทำเช่นนั้นได้ คุณช่วยฉันสร้างมันได้ไหม
Myst

ไม่ฉันไม่สามารถ คุณมีแผนงานสำหรับ pickit2 ที่มีอยู่ดังนั้นคุณจึงรู้ว่าจำเป็นต้องใช้สัญญาณใด คุณมีแหล่งที่มาของเฟิร์มแวร์ pickit2 อยู่ดังนั้นคุณจึงรู้วิธีการสื่อสาร คุณมีแผ่นข้อมูลการเขียนโปรแกรมที่พร้อมใช้งานเพื่อให้คุณรู้ว่าคำแนะนำในการส่งและวิธีการส่ง วิธีที่คุณสื่อสารเฟิร์มแวร์กับ PIC จากคอมพิวเตอร์ของคุณนั้นขึ้นอยู่กับคุณทั้งหมด คุณต้องการหน่วยสืบราชการลับเท่าไหร่ใน FPGA ของคุณและเท่าไหร่ที่ปลาย PC?
Majenko

โอเคขอบคุณ. ในตอนแรกฉันจะลองโปรแกรม PIC โดยตรงกับ PICKIT 3 เกี่ยวกับ PICKIT (ที่ บริษัท ของฉันซื้อมาเพื่อวัตถุประสงค์) ฉันกลัวที่จะเชื่อมต่อโดยตรงกับพินของ PIC เนื่องจากเป็น เชื่อมต่อกับ FPGA ด้วย ฉันกังวลว่าแรงดันไฟฟ้าบางอย่างอาจผ่านการปิด FPGA และทำความเสียหาย นั่นเป็นข้อกังวลที่สมเหตุสมผลหรือไม่?
Myst
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.