Lập trình PIC thông qua FPGA


9

Tôi muốn biết nếu có một cách để lập trình PIC lần đầu tiên (viết bằng Flash) thông qua một thẻ đồ họa.

PIC đã được hàn vào FPGA và tôi không thể gỡ bỏ nó. Không có bootloader tồn tại trên PIC. Do đó, tôi cần lập trình nó ở chế độ USART / SPI / I2C với bộ tải khởi động để nó có thể nhận dữ liệu từ FPGA.

Tôi biết rằng thông thường tôi phải giải nén nó, kết nối nó với một lập trình viên phần cứng như PICKit và lập trình nó với một phần mềm trên máy tính như MPLAB, nhưng tôi không đủ khả năng đó.

Tôi có thể tạo bộ nạp khởi động với MPLAB, đây là một tệp .hex, nhưng làm cách nào tôi có thể chuyển nó sang FPGA và sau đó đến PIC thông qua các chân của FPGA?

PIC được sử dụng là Microchip PIC12F1822.


2
Chỉ cần kiểm tra: bạn có thể lập trình lại FPGA (tức là bạn có tất cả các công cụ cần thiết để làm điều này)?
pjc50

Đây là một số loại ban phát triển?
Matt Young

Có, tôi có tất cả các công cụ cần thiết để lập trình lại FPGA (nó được kết nối với máy tính thông qua usb tiêu chuẩn).
Bí ẩn

1
Không, họ đã bị đổ lỗi vì họ đã không nỗ lực. Thật ra, tôi đang đi thực tập và tôi thấy điều đó rất không chuyên nghiệp. Mặc dù tôi vẫn cần khắc phục vấn đề. Tôi thực sự không thể thấy một cách để lập trình lại PIC này với các cách khác ngoài một lập trình viên bên ngoài mà tôi không thể sử dụng vì gói đã được thực hiện.
Bí ẩn

2
Có cách nào để hàn một số dây nhảy vào dấu vết hoặc chân trên PIC để bạn lập trình nó thông qua một lập trình viên bên ngoài không? Cố gắng thực hiện nó thông qua âm thanh như một dự án luận văn tốt nghiệp.
horta

Câu trả lời:


10

Không, thực tế bạn không cần, sử dụng SPI, UART hoặc I 2 C để lập trình PIC. Cách duy nhất để đưa một chương trình mới vào PIC không tải mã đặc biệt cho mục đích đó (bộ tải khởi động) là sử dụng giao diện lập trình phần cứng bên ngoài. Về mặt điện, điều này có nghĩa là kết nối với Vss, MCLR, PGC và PGD. Có thể hữu ích khi lập trình viên cũng kết nối với Vdd, nhưng không cần thiết cho chip này miễn là mức Vdd được biết và lập trình viên điều chỉnh cho phù hợp.

Giao diện phần cứng cấp thấp khá đơn giản. PGD ​​là dòng dữ liệu, được lấy mẫu bởi PIC trên cạnh xuống của PGC (dòng đồng hồ). Để đưa PIC vào chế độ lập trình ở vị trí đầu tiên, một phím 32 bit đặc biệt được đặt tương đối so với các cạnh cụ thể trên MCLR (mặc dù xem lưu ý bên dưới về lập trình điện áp cao).

Giao thức cấp cao trở nên phức tạp hơn. Hầu hết mọi thứ được thực hiện với các lệnh 6 bit, một số trong đó được theo sau bởi các từ dữ liệu 14 bit. Bạn phải đọc các thông số kỹ thuật lập trình một cách cẩn thận. Lưu ý rằng thông số kỹ thuật lập trình là một tài liệu riêng biệt từ biểu dữ liệu. Chuyển đến trang sản phẩm cho PIC cụ thể của bạn trên trang web Microchip và bạn sẽ tìm thấy một liên kết đến thông số kỹ thuật lập trình trong phần tài liệu.

Thêm về lập trình điện áp cao

Các loại PIC này có hai cách để vào chế độ lập trình, điện áp cao (HVP) và điện áp thấp (LVP). Phương pháp điện áp cao đòi hỏi phải tăng MCLR lên từ 8 đến 9 volt và để giữ nó ở đó trong quá trình lập trình. Phương pháp này luôn hoạt động, bất kể mọi dữ liệu có thể được lập trình vào PIC.

Phương thức điện áp thấp để vào chế độ lập trình bắt đầu bằng cách lái MCLR cao, sau đó thấp, sau đó bấm đồng hồ theo chuỗi khóa 32 bit đặc biệt bằng PGC và PGD bình thường. Phần này sẽ vào chế độ lập trình theo trình tự khóa chính xác và sẽ ở chế độ lập trình miễn là MCLR được giữ ở mức thấp.

Phương pháp điện áp thấp có thể bị vô hiệu hóa bởi một trong các bit cấu hình. Tuy nhiên, trạng thái bị xóa của bit cấu hình cho phép lập trình điện áp thấp, nó được vận chuyển từ nhà máy theo cách đó và bit cấu hình này chỉ có thể được đặt để không cho phép LVP nếu lập trình được nhập bằng phương thức điện áp cao. Do đó, để LVP không được bật, tất cả những điều sau đây phải đúng:

  1. PIC được lập trình lần cuối với một lập trình viên có khả năng HVP và chế độ nhập chương trình HVP đã được sử dụng.

  2. Tệp HEX được lập trình vào PIC cố tình đặt bit LVP trong cấu hình từ 2 thành trạng thái không bị xóa.

Vì việc vô hiệu hóa LVP khá nhiều đòi hỏi một hành động có chủ ý và lập trình viên phù hợp, nên có khả năng nó vẫn được kích hoạt. Nếu nó bị vô hiệu hóa vì một số lý do lạ, thì bạn phải cung cấp 8-9 V trên MCLR để đưa PIC vào chế độ lập trình ít nhất đủ lâu để thực hiện xóa hàng loạt (cho phép LVP kích hoạt lại).


3

Lập trình PIC yêu cầu điện áp cao. Có, có thể chuyển PIC thành "LVP" hoặc chế độ Lập trình điện áp thấp, nhưng bạn cần một lập trình viên điện áp cao để thực hiện việc này.

Nếu PIC của bạn đã được đưa vào chế độ LVP thì có, bạn có thể dễ dàng lập trình PIC từ FPGA. Tất cả các dataheets đều chứa các dạng sóng lập trình cần thiết để lập trình chip, do đó, đây sẽ là trường hợp xây dựng thiết bị lập trình PIC của riêng bạn trong FPGA.

Tuy nhiên, nếu PIC chưa được đưa vào chế độ LVP, bạn sẽ cần tạo ra điện áp cao (thường là 10V) và áp dụng nó vào chân MCLR vào đúng thời điểm để vào chế độ lập trình. Nếu bạn chưa có loại phần cứng này trên bo mạch của mình thì nó sẽ yêu cầu phần cứng bổ sung cuối cùng được điều khiển bởi FPGA khi nó được kích hoạt.

Hầu hết các lập trình viên PIC bao gồm một bộ điều chỉnh tăng nhỏ (bộ nhân đôi điện áp) để lấy 5V lên đến 10V được cung cấp bằng cách sử dụng PIC trên bo mạch để quản lý việc điều chỉnh điện áp. Họ thường sử dụng PWM từ PIC và đầu vào ADC trên PIC như một bộ điều chỉnh tăng đơn giản.

Bạn nên xem sơ đồ PICkit2 có sẵn công khai.


1
Không, rất có thể không cần điện áp cao. Hầu hết các phần mới hơn, bao gồm tất cả các dòng 12F1xxx / 16F1xxx, có thể sử dụng một chuỗi khóa để vào chế độ lập trình. Trình tự này không yêu cầu điện áp cao. Điều này có thể bị vô hiệu hóa trong cấu hình, nhưng phần đến từ nhà máy với phương thức chính được kích hoạt. Trừ khi ai đó cố tình vô hiệu hóa mục nhập chế độ trình tự khóa, nó vẫn có sẵn. Nếu nó bị vô hiệu hóa, thì có, bạn phải nâng MCLR lên 8-9 V để vào chế độ lập trình.
Olin Lathrop

Chế độ lập trình chính là chế độ LVP. Nó dựa vào LVP = 1 trong cấu hình. Có vẻ như con chip đó mặc định là LVP = 1, nhưng IS = 1 trên con chip cụ thể đó, hay nó đã được lập trình với LVP = 0 chưa? Ai biết? Như tôi đã nói - NẾU nó ở chế độ LVP thì bạn không cần HV, nếu không thì bạn làm.
Majenko

Vì vậy, để lập trình trong Chế độ LVP, tôi cần triển khai một số lập trình PIC "kỹ thuật số" (VHDL) vào FPGA của mình? Tôi thực sự không thể nghĩ ra một cách để làm điều đó. Bạn có thể giúp tôi xây dựng nó?
Bí ẩn

Không, tôi không thể. Bạn có sơ đồ cho pickit2 có sẵn, vì vậy bạn biết những tín hiệu nào là cần thiết. Bạn có sẵn nguồn cho firmware pickit2, vì vậy bạn biết cách giao tiếp. Bạn có sẵn các bảng dữ liệu lập trình, vì vậy bạn biết hướng dẫn nào để gửi và cách gửi chúng. Cách bạn giao tiếp phần sụn với PIC từ máy tính của bạn hoàn toàn phụ thuộc vào bạn. Bạn muốn có bao nhiêu trí thông minh trong FPGA của mình và bao nhiêu ở cuối PC?
Majenko

Ok, cảm ơn bạn. Ở nơi đầu tiên, tôi sẽ cố gắng lập trình PIC trực tiếp với PICKIT 3. Về PICKIT (công ty của tôi đã mua cho mục đích này), tôi sợ kết nối trực tiếp với các chân của PIC vì chúng là cũng được kết nối với FPGA. Tôi lo ngại rằng một số điện áp có thể đi qua tắt GPU và gây ra một số thiệt hại. Đó có phải là một mối quan tâm chính đáng?
Bí ẩn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.