Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //フラッシュメモリコマンド Flash Memory M25P16-VMN6T
- #define FCMD_EN_WR (0x06) // 書き込み許可有効コマンド
- #define FCMD_DI_WR (0x04) // 書き込み許可無効コマンド
- #define FCMD_RD_ID (0x9F) // デバイス識別読み出しコマンド
- #define FCMD_RD_SR (0x05) // ステータスレジスタ読み出しコマンド
- #define FCMD_WR_SR (0x01) // ステータスレジスタ書き込みコマンド
- #define FCMD_RD_BYTE (0x03) // 読み出しコマンド
- #define FCMD_RD_FAST (0x0B) // 高速読み出しコマンド
- #define FCMD_PP (0x02) // ページプログラム(書き込み)コマンド
- #define FCMD_SE (0xD8) // セクタ消去コマンド
- #define FCMD_BE (0xC7) // 一括消去コマンド
- #define FCMD_DP (0xB9) // ディープパワーダウンコマンド
- #define FCMD_RES (0xAB) // ディープパワーダウン解除コマンド
- #define FCMD_STAT_WIP (0x01u) // ステータスレジスタ書き込み中ビット
- // フラッシュメモリ
- #define ERR_WR_RD (0x1) // 書き込み前読み出し失敗 0000 0001
- #define ERR_SE (0x2) // セクター消去失敗 0000 0010
- #define ERR_WR (0x4) // 書き込み失敗 0000 0100
- #define ERR_RD (0x8) // 起動時読み出し失敗 0000 1000
- #define SAME_DATA (0x80) // 受信,記憶済みデータ同一 1000 0000
- // フラッシュメモリアドレス
- #define FLS_ADDR (0x1E0000) // セクター30
- #define WR_ADDR (0x1E0003)
- #define RD_ADDR (0x1E0003)
- // フラッシュメモリに書き込み許可コマンド転送
- static void spi_flash_write_enable(void)
- {
- // SPI通信開始
- spi_flash_comm_start();
- // 書き込み許可
- spi_flash_transfer(FCMD_EN_WR);
- // SPI通信終了
- spi_flash_comm_end();
- }
- // 書き込み終了まで待機
- static void spi_flash_wait_for_write(void)
- {
- // SPI通信開始
- spi_flash_comm_start();
- // コマンド送信
- spi_flash_transfer(FCMD_RD_SR);
- // WIPビットが0になるまで待機
- while((spi_flash_transfer(0) & FCMD_STAT_WIP) != 0) ssync();
- // SPI通信終了
- spi_flash_comm_end();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement