SPI read et transmit buffer [Forums - Hardware]
SPI read et transmit buffer [Forums - Hardware]
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 

Parcourir ce sujet :   1 Utilisateur(s) anonymes





SPI read et transmit buffer
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1918
Hors Ligne
Bonjour

Je suis en train de perdre mon dernier cheveux sur un problème de SPI avec les drivers Freescale.

En gros ils proposent un truc de malade où on donne un buffer d’émission + un buffer de réception + une quantité et hop ça se débrouille pour envoyer ce qu'il faut.
Mon soucis est que ça fonctionne à merveille SI le périphérique parle sur MISO mais leur fonction reste bloquée si le périphérique est muet sur MISO. Concrètement si je vais lire une valeur sur une EPPROM SPI par exemple ça fonctionne parfaitement (la mémoire cause sur la SPI) si j’envoie juste une commande à l'eeprom pour la mettre en mode écriture par exemple, l'eeprom ne parle pas sur MISO et le driver reste en attente avec un rxRemainingBytes >0 .

Là je m'embrouille complètement : pourquoi sur la SPI y a t-il une interruption read buffer full et une autre transmit buffer empty ?
Dans la mesure où la SPI "tourne" au rythme des clock entre le maitre et l'esclave, le buffer de réception n'est il pas forcément plein quand celui d’émission est vide ?

Je ne comprends pas comment leur truc arrive à faire la différence entre un escalve qui cause sur MISO et un esclave qui reste silencieux sur MISO quand on parle sur MOSI ! pour moi quand on parle sur MOSI le buffer réception se remplit avec ce qui est présent sur MISO, que le slave parle ou pas.

Merci par avance de me sortir du bouillon



Posté le : 14/05/2016 18:47
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: SPI read et transmit buffer
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1918
Hors Ligne
bon grâce à Yvan mon cerveau est revenu pour la différence entre read buffer full et transmit buffer empty... transmit buffer empty indique finalement le début du transfert.

Mais comment leur driver arrive à faire la différence entre un slave qui dit rien et un slave qui dirait 0 ou 255 ?
Electriquement c'est bien pareil !

et pourtant c'est ce que je vérifie en envoyant le même code de lecture d'un octet sur une EEPROM et une RTC
sur la EEPROM j'ai la réponse: la valeur de l'octet à lire
sur la RTC, j'ai évidement pas de réponse et là leur code reste en attente d'une réponse...??????????????

Posté le : 14/05/2016 19:15
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: SPI read et transmit buffer
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1162
Hors Ligne
Bah... fais ton propre driver en t'inspirant de ce que tu trouves sur le net... ou ailleurs. J'en ai un qui est surement plus simple mais qui fait papa maman si tu veux

Posté le : 15/05/2016 14:53
Transférer la contribution vers d'autres applications Transférer


Re: SPI read et transmit buffer
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1918
Hors Ligne
hier j'ai commencé à faire ce que tu dis : je fais mon propre driver.
Je suis tombé sur une fonction du driver qui n'existe pas dans la doc du dit driver (et qui manque dans logique du dit driver)
Cette fonction gère un simple envoi de X octet sous it et en la regardant j'ai vu un simple gavage du fifo de 8octet du module SPI, sans même prendre la peine de vérifier qu'il est libre ! Autant dire une fonction de .erde.
Si le reste du driver est abouti comme ça, ça fait peur !

J'ai réussi à confirmer mon diagnostic cité plus haut à savoir que le driver reste bloqué si le salve ne parle pas sur MISO. En forçant un compteur à 0 quand il n'y a rien à attendre j'ai pu empêcher le blocage du driver. Mais je n'ai pas compris comment ils arrivent à faire la différence entre un slave qui parle sur MISO et un slave qui n'y parle pas ; chose qui est électriquement impossible pour moi. La seule solution que j'ai imaginé était que le driver filtre les cas où le slave retourne 0 ou 255 mais il n'y a pas trace d'un tel test dans le driver...et comme la doc du truc se limite à citer les fonctions et le nom de leurs paramètres je n'ai pas d'explications.

Le point positif dans mon exploration de leur driver, c'est que j'ai appris énormément de choses sur le C ; plutôt que de le prendre comme une perte de temps (être parti sur un driver mal fichu), je le prends comme une formation au C basée sur un beau code bien concret.

Posté le : 15/05/2016 20:16
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: SPI read et transmit buffer
Accro
Inscrit:
06/07/2007 09:17
Messages: 694
Hors Ligne
Je suis d'accord avec Stephane.
Moi je me fais mes propres drivers.
D'autant plus qu'il y a pas mal de chip spi qui donnent leur réponses lors du message suivant...

Posté le : 17/05/2016 08:36
Transférer la contribution vers d'autres applications Transférer


Re: SPI read et transmit buffer
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1918
Hors Ligne
Ça y est je me suis fait le mien et ça prend près de 4k de code en moins... (certes avec les 32 bits ça grimpe vite mais quand même)

le fond de mon problème vient surement d'une mauvaise utilisation de leur driver (mais vu qu'il n'a pas de doc explicative à qui la faute ?); Je ne comprends toujours pas comment leur driver arrive à faire la différence entre un slave qui répond et un qui ne répond pas mais dans la mesure où il utilise le mode FIFO du module SPI et que ce mode FIFO ne sait pas déclencher d'it réception avant d'avoir recu 8 octet alors que j'en envoi et reçoit que 4 dans mes tests... il y a de toute manière un truc bien inutilement complexe.

Posté le : 17/05/2016 09:16
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: SPI read et transmit buffer
Accro
Inscrit:
06/07/2007 09:17
Messages: 694
Hors Ligne
Je n'ai jamais eu le cas, mais j'imagine que l'IT de réception n'est utile que dans le cas où nous somme le SLAVE ^^

Posté le : 17/05/2016 18:03
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

SPI read et transmit buffer [Forums - Hardware]