Projet-Voilier-3/driver/Driver_SPI.c
Sanchez Manon c930991ccb Ajout du Driver_IMU, pour la gestion de l'accéléromètre.
Les fichiers Driver_SPI sont des versions personnelles non fonctionelle de la gestion du SPI.
C'est la bibliothèque MySPI qui est utilisée dans le projet.

Ajout de commentaires dans tous les fichiers driver en format doxygen.
2023-04-05 16:39:01 +02:00

44 lines
1 KiB
C

#include "stm32f10x.h"
#include "stdio.h"
#include "Driver_SPI.h"
void driver_spi_1_init(char Prio, void (*IT_function)(void))
{
/*Activation de la clock*/
RCC->APB2ENR = RCC_APB2ENR_SPI1EN;
/*Select the freq*/
SPI1->CR1 |= SPI_CR1_BR_1; //5Mhz max -> fPCLK = 36Mhz -> 010: fPCLK/8
/*Select Master mode*/
SPI1->CR1 |= SPI_CR1_MSTR;
/*Software slave management*/
SPI1->CR1 |= SPI_CR1_SSM;
/*Clock Phase Selection*/
SPI1->CR1 |= SPI_CR1_CPHA;
/*Clock Polarity Selection*/
SPI1->CR1 |= SPI_CR1_CPOL;
/*Mode 16bits - 16-bit data frame format*/
//SPI1->CR1 |= SPI_CR1_DFF;
/*Activation de l'interruption*/
SPI1->CR2 |= SPI_CR2_RXNEIE;
NVIC_EnableIRQ(SPI_IRQn);
NVIC_SetPriority(ADC1_2_IRQn, Prio);
/*Vider le buffer d'emission/réception 0xFFFF*/
SPI1->DR = SPI_DR_DR;
/*Enable SPI*/
SPI1->CR1 |= SPI_CR1_SPE;
}
void driver_spi_1_write(uint16_t data_write)
{
SPI1->DR = data_write;
/*Active la sélection du SLAVE*/
SPI1->CR1 |= SPI_CR1_SSI;
}
uint16_t driver_spi_1_read()
{
//Abaissage automatique du flag RxNE
return SPI1->DR;
}