Je n'arrive pas à écrire sur flash spi

9

Eh bien, je suis coincé là-dessus depuis un certain temps, peut-être 2-3 semaines à ce stade. Je ne suis tout simplement pas sûr de ce que je fais mal. J'essaie d'écrire dans cette partie flash spi , et maintenant j'exécute juste des routines pour l'effacer, l'écrire et la lire pour essayer de l'isoler mais jusqu'à présent, pas de chance. Bien sûr, j'ai résolu un tas de bugs en cours de route ...

Quoi qu'il en soit, ma ligne WP est attachée haut sur la planche, et j'ai ralenti le chemin de l'horloge à 200 kHz, puis j'exécute ma routine d'effacement et cela ressemble à ceci:

entrez la description de l'image ici Je vérifie d'abord l'ID juste pour le débogage, c'est la commande 9F, puis je définis WREN avec la commande 06, C7 est l'effacement complet de la puce, puis je vérifie le bit d'état avec 05 et c'est clair. Le temps d'effacement des puces de cette chose n'est que de 35 ms.

Maintenant, je recharge mon code et j'essaie d'écrire:

entrez la description de l'image ici J'ai d'abord défini WREN avec 06, je vérifie l'état pour voir que WREN est défini avec 05, c'est le cas, puis j'envoie la commande de programme de page 02 à l'adresse 0x000000. Vous pouvez voir que j'écris deadcafe comme les premiers bits. Également non illustré ici, une fois l'écriture terminée (une page ou 256 octets), j'envoie la commande 0x04 pour désactiver WREN. J'ai observé cela et j'ai défini les quatre derniers octets de mon tampon de page sur 0xAA, 0x55, 0xAA, 0x55 et je les ai vus juste avant que le CS ne monte.

Maintenant, arrêtez de recharger le code et essayez d'exécuter un cycle de lecture: entrez la description de l'image ici envoyez 0x03 comme commande de lecture et 0x000000 comme adresse, et ... tous les 0xFF de l'appareil.

Je peux voir l'appareil répondre à mon ID de lecture et définir les commandes WREN afin que je sache qu'il m'entend et que je peux répondre. Je ne sais pas ce que je fais mal à ce stade. Je suppose que je vais revenir à la lecture de la fiche technique et essayer certaines choses, mais si quelqu'un a une idée, j'apprécierais l'aide. Cela s'annonce comme un autre week-end frustrant pour travailler sur cette chose.

confus
la source
10
Et ... je l'ai compris. Si j'avais un dollar pour chaque fois, je trouvais quelque chose après avoir finalement été suffisamment désespéré pour poster quelque part de l'aide. Il s'avère qu'il existe une autre commande 0x98 appelée Global Unlock, qui n'est pas mentionnée dans les sections sur l'écriture ou la programmation ... Quoi qu'il en soit, l'ajout de ma commande WREN et cela a fonctionné. Désolé pour le dérangement.
confondu le
10
Ajoutez votre commentaire comme réponse et acceptez-le.
geometrikal
En convenant avec @geometrikal que vous devez répondre à votre propre question. Je n'ai eu que des problèmes avec l'interface PIC SPI; pour les mêmes raisons: la documentation.
User.1
2
Salut! Vous avez publié une bonne question il y a environ un an, puis vous avez publié une bonne réponse dans les commentaires. Mais la question apparaît toujours en haut de la liste "sans réponse"! Veuillez copier vos commentaires dans une réponse et cochez-la "Acceptée". De cette façon, il sera géré correctement et nous pouvons voter pour votre réponse :)
bitsmack
1
@confused veuillez poster votre réponse et la marquer comme répondue afin que nous puissions fermer la question, merci
Voltage Spike

Réponses:

3

Je déteste juste que ce soit toujours en haut de la liste des «sans réponses», alors je vais répondre.

Comme indiqué dans les commentaires de «confused», il existe une commande appelée «Global Unlock» qui doit être exécutée avant d'écrire dans la partie flash.

légèrement brouillé
la source
1
Vous devez accepter votre réponse, sinon cette question sera toujours marquée comme "sans réponse".
Étienne