Evo konkretan drajver, malo je vise komentarisan bas da bude pokazan primer sta svaka linija tog programa radi.
Funkcija FR_SPI2_8_transfer() je tu u sustini glavna, ona se obraca direktno periferiji, sve ostalo je izvedeno iz te funkcije, read/write lokacija, kod mene su podaci (parametri) organizovani kao 32bit tako da zauzimaju 4bytes.
Drajver za FRAM bukvalno ima samo ovo da obradi kroz FR_SPI2_8_transfer():
//FRAM commands
#define FR_WREN 6
#define FR_WRDI 4
#define FR_RDSR 5
#define FR_WRSR 1
#define FR_READ 3
#define FR_WRITE 2
Code jeste blocking ali za takve stvari ne moze drugacije i zato je tu SPI komunikacija koja moze da se podigne na 20+MHz.
Samo upisivanje u memorisku lokaciju je prakticno zavrsen proces, nema vise nista dalje da se ceka, imaju komande za single i burst read/write i to je sve sto treba da ima takva periferija koja cuva neke bitne podatke masine.
Funkcija FR_SPI2_8_transfer() je tu u sustini glavna, ona se obraca direktno periferiji, sve ostalo je izvedeno iz te funkcije, read/write lokacija, kod mene su podaci (parametri) organizovani kao 32bit tako da zauzimaju 4bytes.
Drajver za FRAM bukvalno ima samo ovo da obradi kroz FR_SPI2_8_transfer():
//FRAM commands
#define FR_WREN 6
#define FR_WRDI 4
#define FR_RDSR 5
#define FR_WRSR 1
#define FR_READ 3
#define FR_WRITE 2
Code jeste blocking ali za takve stvari ne moze drugacije i zato je tu SPI komunikacija koja moze da se podigne na 20+MHz.
Samo upisivanje u memorisku lokaciju je prakticno zavrsen proces, nema vise nista dalje da se ceka, imaju komande za single i burst read/write i to je sve sto treba da ima takva periferija koja cuva neke bitne podatke masine.