Je programme un bare-metal Cortex M3 pour parler avec SPI Flash. L'un des bits de configuration d'un registre de contrôle SPI est FRF
(format de trame). Il peut être réglé en mode Motorola SPI (0) ou en mode SPI TI (1). (Voir le manuel de référence ARM page 695 ici .)
La fiche technique du SPI Flash (disponible ici ) ne donne aucune indication sur le mode à utiliser.
Quels sont les deux modes différents et lesquels dois-je utiliser pour la puce Flash spécifique que j'utilise?
{CPOL=0, CPHA=0}
Motorola ou TI?Un bref coup d'œil à la fiche technique ARM suggère que la principale différence entre le mode TI et le mode Motorola est liée à la gestion d'un signal de sortie appelé SSPFSSOUT dont de nombreux appareils n'ont tout simplement pas besoin. Ce signal est censé pulser haut entre les octets afin d'indiquer quel bit de chaque octet doit être considéré comme le premier. En mode TI, il passe à l'état haut lors de la transmission du dernier bit d'un octet, tandis qu'en mode Motorola, il passe à l'état haut puis bas entre les octets. La puce flash veut un signal de sélection de puce qui est maintenu bas pendant toute la durée d'une transaction, donc une sortie qui monte haut entre les octets ne lui sera pas utile.
Je m'attendrais à ce que même lorsque SSPFSSOUT n'est pas utilisé, le mode Motorola faciliterait la lecture des données sur une étendue (car il y aurait une pause après chaque octet) mais le mode TI pourrait être plus rapide (car il ne perdrait pas de temps à faire une pause entre octets). Ce qui est important, cependant, est de s'assurer que la séquence de signaux que le contrôleur génère répond aux exigences données dans la fiche technique des périphériques.
la source