06-SPI_LoLevel-Library (STM32F429)

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 :

SPI_FullDuplex_f429_v101

Hier der komplette CooCox-Projektordner zum Download :

Demo_F429_06


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.