Chciałbym wiedzieć, czy istnieje sposób na zaprogramowanie PIC po raz pierwszy (zapis we Flashu) za pomocą karty FPGA.
PIC jest już przylutowany do FPGA i nie mogę go usunąć. Na PIC nie ma bootloadera. Dlatego muszę go zaprogramować w trybie USART / SPI / I2C za pomocą programu ładującego, aby mógł odbierać dane z FPGA.
Wiem, że zwykle muszę to sprzedać, podłączyć do programisty sprzętowego, takiego jak PICKit i zaprogramować za pomocą oprogramowania na komputerze, takiego jak MPLAB, ale nie stać mnie na to.
Mogę wygenerować program ładujący za pomocą MPLAB, który jest plikiem .hex, ale jak mogę go przenieść do FPGA, a następnie do PIC poprzez piny FPGA?
Używany PIC to Microchip PIC12F1822.
pic
fpga
programmer
bootloader
pickit
Mist
źródło
źródło
Odpowiedzi:
Nie, nie musisz, w rzeczywistości nie możesz, używać SPI, UART lub I 2 C do programowania PIC. Jedyny sposób, aby dostać nowy program w PIC, że nie posiada specjalny kod załadowany do tego celu (bootloader) jest użycie zewnętrznego interfejsu programowania sprzętu. Elektrycznie oznacza to połączenie z Vss, MCLR, PGC i PGD. Przydatne może być również podłączenie programatora do Vdd, ale nie jest to konieczne w przypadku tego układu, o ile poziom Vdd jest znany, a programator odpowiednio dostosowany.
Interfejs sprzętowy niskiego poziomu jest dość prosty. PGD to linia danych, która jest próbkowana przez PIC na zboczu opadającym PGC (linia zegarowa). Aby w pierwszej kolejności ustawić PIC w tryb programowania, specjalny 32-bitowy klucz jest taktowany względem określonych zboczy w MCLR (chociaż patrz uwaga poniżej dotycząca programowania wysokiego napięcia).
Protokół wyższego poziomu staje się bardziej skomplikowany. Większość czynności odbywa się za pomocą poleceń 6-bitowych, a po niektórych z nich znajdują się 14-bitowe słowa danych. Musisz dokładnie przeczytać specyfikację programowania. Należy pamiętać, że specyfikacja programowania jest dokumentem odrębnym od arkusza danych. Przejdź do strony produktu dla konkretnego PIC na stronie Microchip, a link do specyfikacji programowania znajdziesz w sekcji dokumentów.
Dodano informacje o programowaniu wysokiego napięcia
Tego rodzaju PIC mają dwa sposoby wejścia w tryb programowania: wysokie napięcie (HVP) i niskie napięcie (LVP). Metoda wysokonapięciowa wymaga podniesienia MCLR do 8–9 woltów i utrzymania go podczas programowania. Ta metoda zawsze działa, niezależnie od ewentualnych danych zaprogramowanych w PIC.
Metoda niskiego napięcia wejścia w tryb programowania rozpoczyna się od ustawienia wysokiego poziomu MCLR, a następnie niskiego, a następnie taktowania specjalną 32-bitową sekwencją klawiszy przy użyciu normalnie PGC i PGD. Część wejdzie w tryb programowania po prawidłowej sekwencji klawiszy i pozostanie w trybie programowania, dopóki MCLR będzie utrzymywany na niskim poziomie.
Metodę niskiego napięcia można wyłączyć jednym z bitów konfiguracji. Jednak skasowany stan bitu konfiguracyjnego umożliwia programowanie przy niskim napięciu, jest on wysyłany z fabryki w ten sposób, a ten bit konfiguracyjny można ustawić tak, aby nie zezwalał na LVP, jeśli programowanie zostało wprowadzone metodą wysokonapięciową. Dlatego, aby LVP nie mógł zostać włączony, muszą być spełnione wszystkie następujące warunki:
Ponieważ wyłączenie LVP prawie wymaga celowego działania i odpowiedniego programisty, prawdopodobnie nadal jest możliwe. Jeśli został celowo wyłączony z jakiegoś dziwnego powodu, musisz podać 8–9 V na MCLR, aby wprowadzić PIC w tryb programowania przynajmniej na tyle długo, aby wykonać kasowanie masowe (które ponownie włącza LVP).
źródło
Programowanie PIC wymaga wysokiego napięcia. Tak, możliwe jest przełączenie PIC w „LVP” lub tryb programowania niskiego napięcia, ale do tego potrzebny jest programator wysokiego napięcia.
Jeśli Twój PIC został już ustawiony w trybie LVP, to tak, możesz łatwo zaprogramować PIC z FPGA. Wszystkie karty danych zawierają przebiegi programowania potrzebne do zaprogramowania układu, więc byłoby to przypadkiem zbudowania własnego urządzenia programującego PIC w FPGA.
Jeśli jednak PIC nie został przełączony w tryb LVP, należy wygenerować wysokie napięcie (zwykle 10 V) i przyłożyć je do styku MCLR we właściwym czasie aby przejść do trybu programowania. Jeśli nie masz tego rodzaju sprzętu na swojej płycie, wymagałoby to dodatkowego sprzętu, który jest ostatecznie kontrolowany przez układ FPGA pod względem momentu uruchomienia.
Większość programatorów PIC zawiera mały regulator podwyższający napięcie (podwajacz napięcia), który pobiera 5 V do 10 V za pomocą PIC na pokładzie w celu zarządzania regulacją napięcia. Często używają PWM z PIC i wejścia ADC na PIC jako prosty regulator doładowania.
Powinieneś spojrzeć na publicznie dostępne schematy PICkit2.
źródło