Bonjour à tous,
J'essaye en ce moment même de communiquer avec un ADC 24bits avec la liaison SPI. Alors voilà, j'arrive très bien à écrire dans ses registres et même qu'il me répond ! Je vois bien ses petites réponses de mesures sur mon oscillo...
Maintenant, IMPOSSIBLE de lire les données qu'il m'envoie O_o.
Je travaille avec un ARV32 d'atmel, Quand j'utilise la fonction test SPI ça marche bien, car je recois les données que j'envois dans le registre de réception RDR. (Cette fonction relie en interne MOSI à MISO).
PAr contre, sans ça, le registre RDR n'est jamais remplis .. c'est embéttant.
Le protocole de communication avec l'ADC :
- J'envois un octet de commande RDATA (lecture d'une mesure)
- après un temps d'environ 13 µs il me répond ses 24bits de mesures. (pour cela j'effectue un temps d'attente de 13µs puis j'envois 3octets à 0xFF)
Jusqu'ici tout va bien, voici ce que je comptais faire ensuite:
- Si j'ai bien compris la datasheet, on peut activer un registre FIFO de lecture qui acceuille 4 caractères.
- Ensuite on fait quatres lecture consécutives pour le vider et enregistrer notre mesure.
J'ai activé les intérruption SPI pour voir ce qui se passe un peu : souvent l'intérruption RDRF s'active (data has been received and the received data has been transfered from the serializer to RDR since the last read of RDR), mais quand je regarde/lis le registre RDR, il y a WALOU dedans.
Mais voilà, ça serait trop simple .
Mes questions :
- Est-ce que mon résonnement est le bon ?
- Comment procéder à des tests pour voir si je vais vers une solution ?
- Est-ce que je devrais plutôt effectuer mes propres fonctions SPI avec les TIMER du µcontroleur? (du coup je lirais les données reçues par intérruption sur une pin GPIO)
Je n'arrive pas à trouver la chose qui cloche et le temps passe, passe... Merci de vos futures réponses Youri
-----