0% ont trouvé ce document utile (0 vote)
76 vues29 pages

Chap3 - Bus SPI

Le chapitre 3 traite du bus SPI (Serial Peripheral Interface) spécifié par Motorola, qui permet des communications rapides et synchrones entre un maître et plusieurs esclaves. Il décrit les caractéristiques techniques, la topologie, les modes de gestion du Slave Select, ainsi que les fonctionnalités du SPI sur la plateforme STM32F4. Le chapitre inclut également des exemples d'applications et des détails sur la configuration et l'utilisation de l'API HAL pour le SPI.

Transféré par

Lelli
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
76 vues29 pages

Chap3 - Bus SPI

Le chapitre 3 traite du bus SPI (Serial Peripheral Interface) spécifié par Motorola, qui permet des communications rapides et synchrones entre un maître et plusieurs esclaves. Il décrit les caractéristiques techniques, la topologie, les modes de gestion du Slave Select, ainsi que les fonctionnalités du SPI sur la plateforme STM32F4. Le chapitre inclut également des exemples d'applications et des détails sur la configuration et l'utilisation de l'API HAL pour le SPI.

Transféré par

Lelli
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 3 : Le Bus SPI

SERIAL PERIPHERAL
INTERFACE

Platforme : STM32F4, API: HAL


SPI : Serial Peripheral Interface

 Specifié par Motorola fin des années 80s et normalisé en ISO


11898
 Nature des données : paquets d’octets
 Couche : physique
 Topologie : “bus” (+ 1 fil SS par esclave)
 Synchrone (fil clock)
 Duplex : full-duplex (2 fils de données)
 Symétrie : un client, plusieurs serveur
 Modalité : série
 Spécificités :
 beaucoup plus rapide que I2C(1-100MHz)
 pas de spécification sur la structure des messages (pas de frames, pas
d’en-têtes)
1
Examples
 Afficheur

 Capteur intelligent

 Memoires

 MMC/SD cards

 Extension IO

2
3

Topologie

 MOSI : Master Output Slave Input, généré


par le maître,
 MISO : Master Input Slave Output, généré
par l’esclave
 SCK : SPI Serial Clock: Ligne d’horloge
 SS : Slave Select, Les esclaves sont
identifiées grâce au signal de leur ligne SS
 Autres nommages possibles : SDO (Serial
Data Out) et SDI (Serial Data Input).
Principe de transmission

4
5

Principe de transmission

 Deux registres à décalages sont mis en œuvre. Ils forment


un buffer circulaire inter-puce.
 Les communications sont initiées par le maître, qui
commence par sélectionner l’esclave. Au cours de chaque
cycle d’horloge, le maître envoie un bit à l’esclave, qui le
lit sur la ligne MOSI.
 En parallèle, l’esclave envoie un bit au maître, qui le lit sur
la ligne MISO. Ces lectures et écritures simultanées entre
le maître et l’esclave forment une communication Full-
Duplex.
Topologie

6
Topologie

7
Topologie
 Les esclaves sont « chaînés » Les données envoyées se suivent

8
Le bus SPI : Les paramètres de l’horloge
 Trois paramètres : SPI- CPOL CPHA
 La fréquence d'horloge. Mode
 La polarité de l'horloge, paramètre CPOL 0 0 0
1 0 1
 La phase de l'horloge, paramètre CPHA
2 1 0
 CPOL et CPHA ont deux état possible : 3 1 1
 4 possibilités de configuration.
 Les configurations étant incompatibles entre elles :
 Maître et esclave doivent avoir les mêmes paramètres.
 La fréquence de lʼhorloge est fixée par le maître :
 Elle doit tenir compte des configurations possibles de l'esclave.
 Pas de contrainte sur la précision.

10
Le bus SPI : Les paramètres de l’horloge

 4 variantes existent au niveau de la prise en compte des


données qui sont échangées.

11
Le bus SPI : Les paramètres de l’horloge

CPOL Clock POLarity


=1 le SCK est à 1 au repos
=0 le SCK est à 0 au repos
CPHA Clock Phase
=1 le SCK est valide sur front descendant
=0 le SCK est valide sur front montant

12
Exemple

 Configuration : Mode 0, Envoie d’un octet

13
Périphérique SPI du STM32

14
Fonctionnalités du SPI
 Transferts synchrones en full duplex sur trois lignes

 Transferts synchrones simplex sur deux lignes

 Format de trame de transfert 8 ou 16 bits

 Fonctionnement maître ou esclave

 Mode multi-maître

 Gestion NSS par matériel ou logiciel pour le maître et l'esclave:


changement dynamique du rôle maître / esclave

 Polarité (CPOL) et phase d'horloge (CPHA) programmables

 Flag de transmission et de réception reliés aux interruptions

 Indicateur d'état d'occupation du bus SPI


15
Diagramme Fonctionnel

16
Application : Un maitre/un esclave

17
Gestion du NSS (Slave Select pin)
(Reference manual P 798)
Hardware or software slave select management can be set using the SSM bit
in the SPI_CR1 register.
 Software NSS management (SSM = 1)
 The slave select information is driven internally by the value of the SSI bit in the
SPI_CR1 register. The external NSS pin remains free for other application uses.
 Hardware NSS management (SSM = 0)
 Two configurations are possible depending on the NSS output configuration
(SSOE bit in register SPI_CR1).
 NSS output enabled (SSM = 0, SSOE =1)
 This configuration is used only when the device operates in master mode. The NSS
signal is driven low when the master starts the communication and is kept low until
the SPI is disabled.
 NSS output disabled (SSM = 0, SSOE =0)
 This configuration allows multimaster capability for devices operating in master
mode. For devices set as slave, the NSS pin acts as a classical NSS input: the slave is
selected when NSS is low and deselected when NSS high.
18
Les modes NSS : Slave select NSS signal
standard management

 NSS input
 Peut être géré par HW ou SW
 Slave mode – sélectionne
l’esclave actif
 Mode Multi-Master – Eviter le
conflict entre maitres
 NSS output
 Master mode
 Sélectionne l’esclave active
 Modes spécifiques

19
Interconnection des noeuds SPI :
Structure Multi-maitre
 Deux noeuds peuvent
être maître
(alternativement)
 Les noeuds sont en mode
esclave par défaut
 Le noeud actif prend le
controle du bus et devient
maître pour la session en
cours.
 La broche NSS est configure
en entrée pour éviter tout
conflit entre les maitres

20
Interconnection des noeuds SPI :
Structure Multi-slave

 Topologie Etoile
 Le maître doit selectionner un
seul esclave lorsqu’il lit ses
données
 La configuration et le format peut
changer d’un esclave à un autre
 Topologie Circulaire (daisy
chain)
 Chaque donnée circule à travers
tous les noeuds
 La configuration et le format
doivent être les mêmes pour tous
les esclaves

21
Paramètres de configuration de la trame

 Taille de la trame
 de 4-bits à 16-bits

 Ordre des bits


 MSB ou LSB

 Configuration de l’horloge
(mode 0-3)
 Etat haut ou bas pour l’horloge au repos

 Front de lecture du bit : montant ou


descendant
22
Performance

 La limite de la vitesse de communication théorique est PCLK/2

 La vitesse réelle dépond de :


 La capacité du bus SPI (nombre de périphériques connectés et leur impedance
d’entrée, la longueur des fils)

 La configuration du GPIO : mode GPIO rapide,

 Tension d’alimentation,

 Température ambiante

29
Comparison across STM32F series

QUADSPI
STM32L4 STM32F0 STM32F1 STM32F2 STM32F3 STM32F4 STM32F7
features

Maximum
number of 3 1-2* 1-3* 3 1-4* 3-6* 6
instances

40
Maximum speed 18 18 30 18 37,5 ??
[MHz]

Software
compatibility
N/A Yes Partial Partial Yes Partial Partial

Full or almost full


* : depends on part numbers Low-level drivers
Partial
software compatibility: No compatibility

30
APIs HAL CUBEMX
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi)

[Link] = SPI1;
[Link] = SPI_BAUDRATEPRESCALER_256;
[Link] = SPI_DIRECTION_2LINES;
[Link] = SPI_PHASE_1EDGE;
[Link] = SPI_POLARITY_HIGH;
[Link] = SPI_CRCCALCULATION_DISABLE;
[Link] = 7;
[Link] = SPI_DATASIZE_8BIT;
[Link] = SPI_FIRSTBIT_MSB;
[Link] = SPI_NSS_SOFT;
[Link] = SPI_TIMODE_DISABLE;
[Link] = SPI_MODE_MASTER;
if(HAL_SPI_Init(&SpiHandle) != HAL_OK)
{Error_Handler(); }

32
HAL_SPI_TransmitReceive()

HAL_StatusTypeDef HAL_SPI_TransmitReceive(
SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t
*pRxData, uint16_t Size, uint32_t Timeout);

* @brief Transmit and Receive an amount of data in


blocking mode.
* @param hspi pointer to a SPI_HandleTypeDef
structure that contains the configuration information
for SPI module.
* @param pTxData pointer to transmission data buffer
* @param pRxData pointer to reception data buffer
* @param Size amount of data to be sent and received
* @param Timeout Timeout duration
* @retval HAL status
33
HAL_SPI_Transmit()

HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef
*hspi, uint8_t *pData, uint16_t Size, uint32_t
Timeout)
* @brief Transmit an amount of data in blocking
mode.
* @param hspi pointer to a SPI_HandleTypeDef
structure that contains
* the configuration information for
SPI module.
* @param pData pointer to data buffer
* @param Size amount of data to be sent
* @param Timeout Timeout duration
* @retval HAL status

34
HAL_SPI_Receive()

HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef
*hspi, uint8_t *pData, uint16_t Size, uint32_t
Timeout)

* @brief Receive an amount of data in blocking


mode.
* @param hspi pointer to a SPI_HandleTypeDef
structure that contains the configuration
information for SPI module.
* @param pData pointer to data buffer
* @param Size amount of data to be received
* @param Timeout Timeout duration
* @retval HAL status

35

Vous aimerez peut-être aussi