Програмування PIC через FPGA


9

Я хотів би знати, чи є спосіб запрограмувати PIC вперше (писати у Flash) через FPGA-карту.

PIC вже припаяний до FPGA, і я не можу його видалити. У PIC немає завантажувача. Тому мені потрібно запрограмувати його в режимі USART / SPI / I2C з завантажувачем, щоб він міг отримувати дані з FPGA.

Я знаю, що зазвичай мені потрібно розпаяти його, підключити його до програмного забезпечення апаратного забезпечення, такого як PICKit, і програмувати його на програмне забезпечення на комп'ютері, як MPLAB, але я цього не можу собі дозволити.

Я можу генерувати завантажувач з MPLAB, який є .hex-файлом, але як я можу перенести його на FPGA, а потім на PIC через штифти FPGA?

PIC використовується Microchip PIC12F1822.


2
Просто перевірка: чи можете ви перепрограмувати FPGA (тобто у вас є всі необхідні інструменти для цього)?
pjc50

Це якась рада розвитку?
Метт Янг

Так, у мене є всі інструменти, необхідні для перепрограмування FPGA (він підключений до комп'ютера через стандартний usb).
Myst

1
Ні, їх звинувачували, бо вони не доклали цього зусиль. Насправді я на стажуванні, і я виявив це дуже непрофесійно. Хоча мені ще потрібно виправити проблему. Я дійсно не бачу способу перепрограмувати цей ПІК іншими способами, ніж зовнішній програміст, який я не можу використовувати, оскільки пакет уже готовий.
Міст

2
Чи немає способу припаяти кілька дротяних дротів до слідів чи штифтів на ПОС, щоб ви запрограмували його через зовнішнього програміста? Намагання зробити це через FPGA звучить як проект дипломної роботи.
хорта

Відповіді:


10

Ні, вам не потрібно, адже ви не можете використовувати SPI, UART або I 2 C для програмування PIC. Тільки спосіб отримати нову програму в ПОС , яка не має спеціальний код , завантажений для цієї мети (Завантажувач) є використання зовнішнього інтерфейсу апаратних засобів програмування. Електрично це означає підключення до Vss, MCLR, PGC та PGD. Це може бути корисно, щоб програміст також був підключений до Vdd, але це не потрібно для цього чіпа, доки рівень Vdd відомий і програміст відповідно налаштований.

Низький рівень апаратного інтерфейсу досить простий. PGD ​​- це лінія даних, яка відбирається за допомогою PIC на падаючому краю PGC (тактова лінія). Щоб перейти PIC в режим програмування в першу чергу, спеціальна 32-бітова клавіша спрацьовує по відношенню до певних країв MCLR (хоча див. Примітку нижче щодо програмування високої напруги).

Протокол вищого рівня ускладнюється. Більшість речей робиться за допомогою 6-ти бітних команд, за деякими з них дотримуються 14-бітові слова даних. Ви повинні уважно прочитати специфікацію програмування. Зауважте, що специфікація програмування - це окремий документ із таблиці. Перейдіть на сторінку продукту для конкретного ПОС на веб-сайті Microchip, і ви знайдете посилання на специфікацію програмування в розділі документів.

Додано про програмування високої напруги

Ці типи ПІК мають два способи переходу в режим програмування, високу напругу (HVP) і низьку напругу (LVP). Метод високої напруги вимагає підняти MCLR до 8 - 9 вольт і підтримувати його там під час програмування. Цей метод завжди працює, незалежно від можливих даних, запрограмованих в PIC.

Метод низької напруги для входу в режим програмування починається з керування MCLR високим, потім низьким, а потім з’єднанням в спеціальній 32-бітовій послідовності клавіш, використовуючи звичайно PGC і PGD. Частина перейде в режим програмування за правильною послідовністю клавіш і залишатиметься в режимі програмування до тих пір, поки MCLR буде низьким.

Метод низької напруги можна відключити одним з бітів конфігурації. Однак стертий стан конфігураційного біта дозволяє програмувати низьку напругу, він поставляється з фабрики таким чином, і цей біт конфігурації можна встановити, щоб заборонити LVP, лише якщо програмування було введено методом високої напруги. Тому, щоб LVP не було ввімкнено, всі наступні повинні бути правдивими:

  1. PIC востаннє запрограмований з програмістом, здатним до HVP, і був використаний режим введення програми HVP.

  2. Файл HEX, запрограмований у PIC, навмисно встановлює біт LVP у конфігураційному слові 2 на не стертий стан.

Оскільки для відключення LVP в значній мірі потрібні цілеспрямовані дії та правильний програміст, це, ймовірно, все ще можливо. Якщо це було навмисно відключено з якоїсь дивної причини, то вам доведеться подати 8-9 В на MCLR, щоб перевести PIC в режим програмування хоча б досить довго, щоб виконати об'ємну стирання (що знову вмикає LVP).


3

Програмування PIC вимагає високої напруги. Так, можливо переключити PIC в режим "LVP" або низьковольтного програмування, але для цього вам потрібен програміст високої напруги.

Якщо ваш PIC вже переведений у режим LVP, так, ви можете легко запрограмувати PIC з FPGA. Усі таблиці даних містять форми хвилі програмування, необхідні для програмування мікросхеми, тому було б випадком побудови власного пристрою програміста PIC у FPGA.

Однак якщо PIC не був переведений в режим LVP, вам потрібно буде генерувати високу напругу (як правило, 10 В) і застосувати її до штифта MCLR в потрібний час, щоб увійти в режим програмування. Якщо у вас немає такого обладнання на вашій дошці, тоді йому буде потрібно додаткове обладнання, яке в кінцевому підсумку контролюється FPGA щодо його запуску.

Більшість програмістів PIC включають невеликий регулятор посилення (подвоєння напруги), щоб прийняти передбачені 5 В до 10 В, використовуючи борт PIC для управління регулюванням напруги. Вони часто використовують ШІМ з ПОС та вхід АЦП на ПОС як простий регулятор підвищення.

Слід поглянути на загальнодоступні схеми PICkit2.


1
Ні, цілком ймовірно, не потрібна висока напруга. Більшість нових частин, включаючи всі серії 12F1xxx / 16F1xxx, можуть використовувати послідовність клавіш для входу в режим програмування. Ця послідовність не вимагає високої напруги. Це можна вимкнути в конфігурації, але деталь походить із заводу з увімкненим ключовим методом. Якщо хтось свідомо не відключив введення режиму програмної послідовності ключів, він все одно повинен бути доступний. Якщо він відключений, то так, вам доведеться підняти MCLR до 8-9 В, щоб перейти в режим програмування.
Олін Латроп

Ключовим режимом програмування є режим LVP. Він покладається на LVP = 1 у конфігурації. Це схоже на те, що за замовчуванням чіп має значення LVP = 1, але чи це = 1 на цій конкретній мікросхемі, чи вона вже запрограмована на LVP = 0? Хто знає? Як я вже говорив - якщо він знаходиться в режимі LVP, то HV вам не потрібен, інакше ви робите.
Majenko

Тож для того, щоб програмувати в режимі LVP, мені потрібно реалізувати якийсь "цифровий" програміст PIC (VHDL) у мою FPGA? Я дійсно не можу придумати спосіб зробити це. Не могли б ви допомогти мені побудувати його?
Міст

Ні, я не можу. У вас є схеми для pickit2, тому ви знаєте, які сигнали потрібні. У вас є джерело для вбудованого програмного забезпечення picit2, тому ви знаєте, як спілкуватися. У вас є аркуші даних програмування, тому ви знаєте, які інструкції надсилати та як їх надсилати. Як ви передаєте прошивку на PIC зі свого комп’ютера, повністю залежить від вас. Скільки потрібно інтелекту у вашій FPGA, а скільки на кінці ПК?
Маєнко

Добре, дякую. По-перше, я збираюся спробувати запрограмувати PIC безпосередньо за допомогою PICKIT 3. Щодо PICKIT (що моя фірма придбала з цією метою), я боюся підключити його безпосередньо до штифтів PIC, оскільки це також підключений до FPGA. Я стурбований тим, що деяка напруга може пройти через відключений FPGA і нанести шкоду. Це виправдане занепокоєння?
Міст
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.