Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Gecko3 - CCC Event Weblog
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
E. Quellcode<br />
/∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗<br />
2 ∗ Diplomwork :<br />
∗ <strong>Gecko3</strong> SoC HW/SW Development Board<br />
∗<br />
∗ ( ‘ \ ( ) ( ) ( )<br />
∗ | ( ) ) | ( | | | | Berne U n i v e r s i t y o f Applied S c i e n c e s<br />
7 ∗ | < ’| ) | | School o f Engineering and<br />
∗ | ( ) ) | | | | | | Information Technology<br />
∗ ( / ’( ) ( ) ( )<br />
∗<br />
∗<br />
12 ∗ Author : Christoph Zimmermann<br />
∗ Date o f c r e a t i o n : 31.10.2006<br />
∗ D e s c r i p t i o n :<br />
∗ H e a d e r f i l e f o r t h e M25P16 Library<br />
∗ Library to a c c e s s t h e M25P16 SPI Flash from ST<br />
17 ∗ M i c r o e l e c t r o n i c s . The S25FL016 SPI Flash from<br />
∗ Spansion i s s o f t w a r e and pin c o m p a t i b l e<br />
∗<br />
∗ Changelog :<br />
∗ 31.10.2006<br />
22 ∗ f i r s t v e r s i o n<br />
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/<br />
// d e f i n e s wich d e v i c e in t h e SPI subsytem i s t h e M25P16<br />
#define M25P16 0<br />
27 #define MANUFACTURER 0 x20<br />
#define MEMTYPE 0 x20<br />
#define MEMCAPACITY 0 x15<br />
#define MAXADRESS 0x1FFFFF<br />
32<br />
// f l a s h memory opcodes<br />
#define WREN 0 x06<br />
#define WRDI 0 x04<br />
#define RDID 0x9F<br />
37 #define RDSR 0 x05<br />
#define WRSR 0 x01<br />
#define READ 0 x03<br />
#define FAST READ 0x0B<br />
#define PP 0 x02<br />
42 #define SE 0xD8<br />
#define BE 0xC7<br />
#define DP 0xB9<br />
#define RES 0xAB<br />
47 // checks i f t h e c o r r e c t d e v i c e i s s e l e c t e d<br />
b i t isM25P16 ( ) ;<br />
52<br />
// checks i f t h e d e v i c e i s busy or ready to r e c e i v e t h e next i n s t r u c t i o n<br />
b i t isBusy ( ) ;<br />
// h e l p e r f u n c t i o n to send a d r e s s e s to t h e f l a s h<br />
void sendAdress ( long a d r e s s ) ;<br />
// e n a b l e w r i t e a c c e s s<br />
57 void writeEnable ( ) ;<br />
// read one b y t e at t h e g i v e n a d r e s s<br />
byte readByte ( long a d r e s s ) ;<br />
62 // s t a r t s a b l o c k read from t h e g i v e n a d r e s s<br />
byte startBlockRead ( long a d r e s s ) ;<br />
// reads t h e next b y t e ( s e q u e n t i a l readout )<br />
byte readBlock ( ) ;<br />
94 Matthias Zurbrügg, Christoph Zimmermann