FM25W256, it was write protect first. 初期状態ではライトプロテクトがかかっていることに対応。 "The WREN command must be issued prior to any write operation." from FM25W256 datasheet.

Dependencies:   FM25W256 mbed

Fork of Hello-FM25W256 by Toyomasa Watarai

Committer:
ohneta
Date:
Sat Jan 07 16:27:38 2017 +0000
Revision:
4:e66d916797c5
Parent:
3:d4a2357f06e3
"The WREN command must be issued prior to any write operation." from FM25W256 datasheet.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 2:980e3d46d20e 1 /* Cypress FM25W256 F-RAM component library test program
MACRUM 2:980e3d46d20e 2 *
MACRUM 2:980e3d46d20e 3 * Copyright (c) 2016 ARM Limited
MACRUM 2:980e3d46d20e 4 *
MACRUM 2:980e3d46d20e 5 * Licensed under the Apache License, Version 2.0 (the "License");
MACRUM 2:980e3d46d20e 6 * you may not use this file except in compliance with the License.
MACRUM 2:980e3d46d20e 7 * You may obtain a copy of the License at
MACRUM 2:980e3d46d20e 8 *
MACRUM 2:980e3d46d20e 9 * http://www.apache.org/licenses/LICENSE-2.0
MACRUM 2:980e3d46d20e 10 *
MACRUM 2:980e3d46d20e 11 * Unless required by applicable law or agreed to in writing, software
MACRUM 2:980e3d46d20e 12 * distributed under the License is distributed on an "AS IS" BASIS,
MACRUM 2:980e3d46d20e 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
MACRUM 2:980e3d46d20e 14 * See the License for the specific language governing permissions and
MACRUM 2:980e3d46d20e 15 * limitations under the License.
MACRUM 2:980e3d46d20e 16 * *
MACRUM 2:980e3d46d20e 17 * @author Toyomasa Watarai
MACRUM 2:980e3d46d20e 18 * @version 1.0
MACRUM 2:980e3d46d20e 19 * @date 5-March-2016
MACRUM 2:980e3d46d20e 20 *
MACRUM 2:980e3d46d20e 21 * http://www.cypress.com/products/nonvolatile-ram
MACRUM 2:980e3d46d20e 22 * http://www.cypress.com/documentation/datasheets/fm25w256-256-kbit-32-k-8-serial-spi-f-ram?source=search&keywords=FM25W256&cat=technical_documents
MACRUM 2:980e3d46d20e 23 *
MACRUM 2:980e3d46d20e 24 */
MACRUM 2:980e3d46d20e 25
MACRUM 0:3efb18460968 26 #include "mbed.h"
MACRUM 1:be908b1aafe6 27 #include "FM25W256.h"
MACRUM 0:3efb18460968 28
MACRUM 0:3efb18460968 29 Serial pc(USBTX, USBRX);
MACRUM 3:d4a2357f06e3 30 #if defined(TARGET_LPC1114)
MACRUM 1:be908b1aafe6 31 FM25W256 f_ram(dp2, dp1, dp6, dp18);
MACRUM 3:d4a2357f06e3 32 #elif defined(TARGET_LPC1768)
MACRUM 3:d4a2357f06e3 33 FM25W256 f_ram(p5, p6, p7, p8);
MACRUM 3:d4a2357f06e3 34 #endif
MACRUM 0:3efb18460968 35
MACRUM 0:3efb18460968 36 void read_test()
MACRUM 0:3efb18460968 37 {
MACRUM 0:3efb18460968 38 uint16_t adrs = 0;
MACRUM 0:3efb18460968 39 for(int i=0; i<16; i++) {
MACRUM 0:3efb18460968 40 pc.printf("0x%04X : ", i * 16);
MACRUM 0:3efb18460968 41 for(int j=0; j<16; j++) {
MACRUM 1:be908b1aafe6 42 pc.printf("%02X ", f_ram.read(adrs++));
MACRUM 0:3efb18460968 43 }
MACRUM 0:3efb18460968 44 pc.printf("\n");
MACRUM 0:3efb18460968 45 }
MACRUM 0:3efb18460968 46 }
MACRUM 0:3efb18460968 47
MACRUM 0:3efb18460968 48 void write_test()
MACRUM 0:3efb18460968 49 {
MACRUM 1:be908b1aafe6 50 uint8_t buf[16];
MACRUM 1:be908b1aafe6 51 for(int i=0; i<16; i++) {
MACRUM 1:be908b1aafe6 52 buf[i] = (15 - i);
MACRUM 0:3efb18460968 53 }
MACRUM 1:be908b1aafe6 54 f_ram.write(0, buf, 16);
MACRUM 0:3efb18460968 55 }
MACRUM 0:3efb18460968 56
MACRUM 2:980e3d46d20e 57 void write_protect_test()
MACRUM 2:980e3d46d20e 58 {
MACRUM 2:980e3d46d20e 59 f_ram.set_write_protect(FM25W256::BANK_ALL);
MACRUM 2:980e3d46d20e 60
MACRUM 2:980e3d46d20e 61 pc.printf("[write data]\n");
MACRUM 2:980e3d46d20e 62 pc.printf("0x0000 : ");
MACRUM 2:980e3d46d20e 63 uint8_t buf[16];
MACRUM 2:980e3d46d20e 64 for(int i=0; i<16; i++) {
MACRUM 2:980e3d46d20e 65 buf[i] = i;
MACRUM 2:980e3d46d20e 66 pc.printf("%02X ", buf[i]);
MACRUM 2:980e3d46d20e 67 }
MACRUM 2:980e3d46d20e 68 pc.printf("\n");
MACRUM 2:980e3d46d20e 69 f_ram.write(0, buf, 16);
MACRUM 2:980e3d46d20e 70
MACRUM 2:980e3d46d20e 71 pc.printf("[read data]\n");
MACRUM 2:980e3d46d20e 72 read_test();
MACRUM 2:980e3d46d20e 73
MACRUM 2:980e3d46d20e 74 f_ram.clear_write_protect();
MACRUM 2:980e3d46d20e 75 }
MACRUM 2:980e3d46d20e 76
MACRUM 0:3efb18460968 77 int main()
MACRUM 0:3efb18460968 78 {
ohneta 4:e66d916797c5 79 f_ram.clear_write_protect();
ohneta 4:e66d916797c5 80
MACRUM 0:3efb18460968 81 pc.printf("\nFM25W256 test program - write test? (y/n) ");
MACRUM 0:3efb18460968 82 if (pc.getc() == 'y') {
MACRUM 0:3efb18460968 83 write_test();
MACRUM 0:3efb18460968 84 }
MACRUM 0:3efb18460968 85
MACRUM 0:3efb18460968 86 pc.printf("\nFM25W256 test program - read test? (y/n) ");
MACRUM 0:3efb18460968 87 if (pc.getc() == 'y') {
MACRUM 0:3efb18460968 88 pc.printf("\n");
MACRUM 0:3efb18460968 89 read_test();
MACRUM 0:3efb18460968 90 }
MACRUM 2:980e3d46d20e 91
MACRUM 2:980e3d46d20e 92 pc.printf("\nFM25W256 test program - write protect test? (y/n) ");
MACRUM 2:980e3d46d20e 93 if (pc.getc() == 'y') {
MACRUM 2:980e3d46d20e 94 pc.printf("\n");
MACRUM 2:980e3d46d20e 95 write_protect_test();
MACRUM 2:980e3d46d20e 96 }
MACRUM 0:3efb18460968 97
MACRUM 0:3efb18460968 98 while(1) {
MACRUM 0:3efb18460968 99 }
MACRUM 0:3efb18460968 100 }