#include "MySpi.h" const char POWER_CTL = 0x2D; //Power Control Register const char BW_RATE = 0x2C; const char DATA_FORMAT = 0x31; /*fonction écriture registre IMU*/ void source_IMU_write_register(char registerAddress, char value) { // On s'assure que le Chip Select est bien au niveau bas MySPI_Clear_NSS(); // Envoi de l'adresse du registre par SPI MySPI_Send(registerAddress); // Envoi de la valeur désirée du registre par SPI MySPI_Send(value); // On active le chip select MySPI_Set_NSS(); } /* Fonction d'initialisation*/ void source_IMU_init(void) { int i; /* FSCK = 281kHz, Repos SCK = '1', Front actif = up Gestion /CS logicielle à part, configure les 4 IO - SCK, MOSI : Out Alt push pull - MISO : floating input - /NSS (/CS) : Out push pull */ MySPI_Init(SPI1); //Paramètrage du registre POWER_CTL source_IMU_write_register(POWER_CTL, 0x08); //Paramètrage du registe BW_RATE source_IMU_write_register(BW_RATE, 0x0A); //Paramètrage du registre DATA_FORMAT source_IMU_write_register(BW_RATE, 0x08); //Full resolution, et alignement à droite } /* Fonction de lecture des données*/ void source_IMU_read(char registerAddress, int numBytes, unsigned char * values) { int i; // Pour effectuer une lecture des registre, on doit mettre les bits R/W et MB à 1 char trame = registerAddress | 0x80; trame = trame | 0x40; // On active le chip select MySPI_Clear_NSS(); // Envoie de la config MySPI_Send(trame); // On effectue la lecture for(i=0; i