spi_sensor_read.ino

Efinix Sapphire RV64 : SoC RISC-V 64 bits configurable pour FPGA · Fichier : spi_sensor_read.ino · Langage : C (RISC-V) · Usage : Lire un capteur numérique (ex: température) via le contrôleur SPI maître.

Démontre l'interaction avec des périphériques externes via SPI, courant pour les capteurs industriels.

Configurez un maître SPI dans Efinity. Connectez un capteur compatible SPI (ex: LM75). Ce code est générique ; adaptez les commandes spécifiques au datasheet du capteur. Vérifiez les signaux avec un analyseur logique si nécessaire.

spi_sensor_read.ino

#include <stdint.h>

#define SPI_BASE 0x80002000
#define SPI_CTRL (*(volatile uint32_t *)(SPI_BASE + 0x00))
#define SPI_DATA (*(volatile uint32_t *)(SPI_BASE + 0x04))
#define SPI_STAT (*(volatile uint32_t *)(SPI_BASE + 0x08))

void spi_cs_low() { SPI_CTRL &= ~0x01; }
void spi_cs_high() { SPI_CTRL |= 0x01; }

uint8_t spi_transfer(uint8_t data) {
    SPI_DATA = data;
    while (!(SPI_STAT & 0x01)); // Wait for transfer complete
    return SPI_DATA;
}

int main() {
    uint8_t temp_byte;
    while (1) {
        spi_cs_low();
        spi_transfer(0x00); // Dummy byte to clock out data
        temp_byte = spi_transfer(0x00);
        spi_cs_high();
        // Traitement de temp_byte (à implémenter)
    }
    return 0;
}

← Retour à la fiche