STM32のFlashに関するいくつかの問題

 

注:私はこの問題STM32のFlash自体を感じます。

 

STM32のリモートアップグレード最近、およびステータス情報を更新するレコードの理由もなくきれいに常にある、フラッシュに保存

最終テストは、STM32のFlash消去動作は意志必ずしも本当の明確ではないました

テストコードは、下地層は、兄弟原子、注意です:いいえ問題基礎となるプログラム。

FLASH_DATA_ADDRアドレス0x800f802

U16 ReadDat [10] = {10000,0x3031,0x3032,0x3033,0x3034,0x3035,0x3036,0x3037,0x3038,0x3038}。
U16 ReadDatata = 0。

    
printf(" 0000000000000000000000000の\ r \ n " ); Delay_ms(1000年); // IAPSetUpdateVersionServer( "22,222,222,222,222"); // ストアドライブバージョン STMFLASH_Write(+ FLASH_DATA_ADDR 6。 、&​​ReadDat [ 0 ]、1); // データ書き込み Delay_ms(1000 )。 printf(" 1111111111111111111111111111111111の\ r \ n " ); delay_ms(1000年); STMFLASH_Write(FLASH_DATA_ADDR、&ReadDatata、1。); //データの書き込み Delay_ms(1000 ); printf(" ReadDatata%= D \ R&LT \ N- "、ReadDatata); // リードデータを出力 IF(ReadDatataの== 65535)ReadDatata = 0 delay_ms(1000年); printf(" 222222222222222222222222の\ r \ n " ); delay_ms(1000年); STMFLASH_Write(FLASH_DATA_ADDR + 2、&​​ReadDatata、1。); // データ書き込み Delay_ms(1000 )。 printf(" 333333333333333333333の\ r \ n " ); delay_ms(1000年); ReadDatata = 1 STMFLASH_Write(FLASH_DATA_ADDR、&ReadDatata、1。); // 書き込みデータ ながら、1。);

 

 

テストを発見し、消去動作の後、データは位置であることが判明し0xbfの

 

 

 

 

4周りのすべてを消去、操作は問題ありません!!!!!!

 

 

 

 

しかし、消去、それ後........

 

 

 

 

だから、書き込みデータはエラーになるとき

   

 

STM32のFlashの説明はバグを持っています

これはバグが発生し...ちょっとモンゴル、

 

 

この問題に対処するために、私はいくつかの変更を行いました

 

それが消去されているかどうかを判断するために、再度消去した後、まず、

 

 

 

第二に、アドレスデータは、各ページの先頭から10番目のバイトに保存されています

 

 

 

テストされている現在の方法は、一度10S更新手順を切り替え、すべてのオペレーションフラッシュの多くになりますたびに、私はそれが1日に実行持って、データエラーの確率を見てください。

 

 

 

注:実際には、最善の方法は、A、B潔問題あれば確実に、好ましくは、初期化データの領域に配置するために、前後のデータを格納するための2つの領域A、B、2つの領域に分割されています!

再取得したデータ。

 

おすすめ

転載: www.cnblogs.com/yangfengwu/p/11730033.html