Čeština / English
Login

Firmware / Komunikace s FPGA (SPI v libfitkit)

Autor: Karel Slaný ()
Update: 22.3.2009
Obsah

K rozhraní SPI na FITkitu (Komunikační systém) jsou připojeny 3 zařízení. (Na FITkitu v2.0 přibyl zvukový kodek. Vzhledem k tomu, že nevyužívá rozhraní SPI stejným způsobem jako ostatní zde jmenované komponenty, bude kodek v tomto dokumentu ignorován.) Těmito zařízeními jsou MCU, paměť FLASH a FPGA. Na sběrnice SPI probíhá master-slave přenos. Proto jedno zařízení musí být řídící. Řídící jednotku pro SPI na FITkitu tvoří MCU. Knihovna libfitkit pokrývá rozhraní SPI a nabízí řídicí funkce pro komunikaci s připojenými zařízeními přes sběrnici SPI.

1. Seznam funkcí souvisejících s komunikací na sběrnici SPI

  • void SPI_Init (void)

    Inicializace SPI

  • void SPI_Close (void)

    Deaktivace SPI

  • void FPGA_Init(void)

Inicializace SPI/FPGA

  • void FPGA_Close(void)

    Deaktivace SPI/FPGA

  • unsigned char flash_init(char show_info)

    Inicializace SPI/FLASH

  • unsigned char FLASH_ReadStatus(void)

    Čtení stavového registru z paměti FLASH

2. Seznam funkcí nejběžněji používaných v aplikacích

  • SPI_set_cs_FLASH(bool active) a SPI_set_cs_FPGA(bool active)

    Makra výběru FLASH pameti nebo FPGA, aktivní v 1.

  • unsigned char SPI_read_write(unsigned char datain)

    Výměna bytu přes SPI

  • int FPGA_SPI_RW_AN_DN(unsigned char rw, unsigned long addr, unsigned char *data, int m, int n)

    Výměna bloku dat o délce n bytů s komponentou v FPGA adresovanou pomocí m bytů

  • int FPGA_SPI_RW_A8_DN(unsigned char rw, unsigned char addr, unsigned char *data, int n)

    Výměna bloku dat o délce n*8 bitů s komponentou v FPGA adresovanou pomocí 8-mi bitů

  • unsigned char FPGA_SPI_RW_A8_D8(unsigned char rw, unsigned char addr, unsigned char data)

    Výměna bloku dat o délce 8 bitů s komponentou v FPGA adresovanou pomocí 8-mi bitů

  • unsigned int FPGA_SPI_RW_A8_D16(unsigned char rw, unsigned char addr, unsigned int data)

    Výměna bloku dat o délce 16 bitů s komponentou v FPGA adresovanou pomocí 8-mi bitů

3. Příklady použití

Pro postupný zápis šesti bytů na adresu danou konstantou BASE_ADDR_COMPONENT lze použít:

unsigned char pkt[6];

pkt[1] = 0x01; pkt[0] = 0x00;
pkt[3] = 0x03; pkt[2] = 0x02;
pkt[5] = 0x05; pkt[4] = 0x04;

FPGA_SPI_RW_A8_DN(SPI_FPGA_ENABLE_WRITE, BASE_ADDR_COMPONENT, &(pkt[0]), 6);
Zobrazeno: 3321x Naposledy: 30.9.2023 09:26:06