diese Library dient zum benutzen der SPI-Schnittstelle im Master-Mode
die SPI-Pins die benutzt werden sollen, müssen im C-File eingetragen werden
(im H-File kann der Clock-Vorteiler gewählt werden)
die Library kann als LoLevel-Funktion nur die Schnittstelle (in einem der 8 SPI-Modes) initialisieren und ein Byte per SPI senden/empfangen. Das setzen der ChipSelect-Leitung muss von der Übergeordneten Funktion gemacht werden (siehe z.B. MAX5250-Lib)
es gibt 6 identische Librarys, getrennt für SPI1 bis SPI6
im Beispiel wurde SPI5 benutzt mit dieser Pinbelegung :
1 2 3 | SCK an PF7 MOSI an PF9 MISO an PF8 |
Enumerationen (für SPI1) :
1 2 3 4 5 6 7 8 9 10 | typedef enum { SPI_MODE_0_MSB = 0, // CPOL=0, CPHA=0 (MSB-First) SPI_MODE_1_MSB, // CPOL=0, CPHA=1 (MSB-First) SPI_MODE_2_MSB, // CPOL=1, CPHA=0 (MSB-First) SPI_MODE_3_MSB, // CPOL=1, CPHA=1 (MSB-First) SPI_MODE_0_LSB, // CPOL=0, CPHA=0 (LSB-First) SPI_MODE_1_LSB, // CPOL=0, CPHA=1 (LSB-First) SPI_MODE_2_LSB, // CPOL=1, CPHA=0 (LSB-First) SPI_MODE_3_LSB // CPOL=1, CPHA=1 (LSB-First) }SPI1_Mode_t; |
Funktionen (für SPI1) :
1 2 | ErrorStatus UB_SPI1_Init(SPI1_Mode_t mode); // zum initialisieren der SPI-Schnittstelle uint8_t UB_SPI1_SendByte(uint8_t wert); // zum senden/empfangen eines Bytes |
Beispiel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | //-------------------------------------------------------------- // File : main.c // Datum : 25.10.2013 // Version : 1.0 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F429 // IDE : CooCox CoIDE 1.7.4 // GCC : 4.7 2012q4 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo der SPI-LoLevel-Library // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" // In Configuration diese Define hinzufügen : // "STM32F429_439xx" , "__ASSEMBLY__" , "USE_STDPERIPH_DRIVER" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_spi5.h" //-------------------------------------------------------------- // ein Byte per SPI senden und empfangen //-------------------------------------------------------------- uint8_t spi_send(uint8_t wert) { uint8_t ret_wert; // hier Code einfügen und // ChipSelect-Pin auf LO legen // byte senden und empfangen ret_wert=UB_SPI5_SendByte(wert); // hier Code einfügen und // ChipSelect-Pin auf HI legen return(ret_wert); } int main(void) { uint8_t wert; SystemInit(); // Quarz Einstellungen aktivieren // SPI5 im Mode0_MSB initialisieren UB_SPI5_Init(SPI_MODE_0_MSB); // den Wert 0x45 per SPI senden // und ein Byte empfangen wert=spi_send(0x45); while(1) { } } |
Hier die Library zum Download :
Hier der komplette CooCox-Projektordner zum Download :