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:
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:
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: 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.