Animation demo with MIP8F_SPI_Ver60

Dependencies:   mbed MIP8F_SPI_Ver60 MIP8f_FRDM_LineBuffer_sample MIP8f_FRDM_TransferMode_sample

Introduction

Animation Demo. Some Goldfish swin in water, from left to right, from bottom to top. Color and monochrome version

Only for LPM027M128x (400x240) ,JDI DIsplay.

Other information , please refer to https://os.mbed.com/teams/JapanDisplayInc/code/MIP8f_FRDM_sample/

Usage

Copy Setting File and Image to micro SD-CARD. you can NOT use same sample color images of OTHER VERSION SAMPLE.

a) Download the following file corresponding to the target panel, and rename file identifier (.bin -> .zip), and unzip the file on micro SD Card's root directory.

LPM027M128x (400x240) :/media/uploads/JDI_Mbed_Team/goldfish_400x240.bin

b) Insert micro SD-CARD to FRDM-K64F. c) Upload binary file to FRDM-K64F.and push Reset Button.

Other information

refer to Usage on https://os.mbed.com/teams/JapanDisplayInc/code/MIP8f_FRDM_sample/

this Sample Code (.bin)

/media/uploads/JDI_Mbed_Team/mip8f_frdm_animation_sample.k64f.bin

Committer:
JDI_Mbed_Team
Date:
Thu Nov 22 07:46:49 2018 +0000
Revision:
21:d1beeb6c4a53
Parent:
0:33fe30a2b785
bug fixed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JDI_Mbed_Team 0:33fe30a2b785 1 /* mbed Microcontroller Library
JDI_Mbed_Team 0:33fe30a2b785 2 * Copyright (c) 2006-2012 ARM Limited
JDI_Mbed_Team 0:33fe30a2b785 3 *
JDI_Mbed_Team 0:33fe30a2b785 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
JDI_Mbed_Team 0:33fe30a2b785 5 * of this software and associated documentation files (the "Software"), to deal
JDI_Mbed_Team 0:33fe30a2b785 6 * in the Software without restriction, including without limitation the rights
JDI_Mbed_Team 0:33fe30a2b785 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
JDI_Mbed_Team 0:33fe30a2b785 8 * copies of the Software, and to permit persons to whom the Software is
JDI_Mbed_Team 0:33fe30a2b785 9 * furnished to do so, subject to the following conditions:
JDI_Mbed_Team 0:33fe30a2b785 10 *
JDI_Mbed_Team 0:33fe30a2b785 11 * The above copyright notice and this permission notice shall be included in
JDI_Mbed_Team 0:33fe30a2b785 12 * all copies or substantial portions of the Software.
JDI_Mbed_Team 0:33fe30a2b785 13 *
JDI_Mbed_Team 0:33fe30a2b785 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
JDI_Mbed_Team 0:33fe30a2b785 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
JDI_Mbed_Team 0:33fe30a2b785 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
JDI_Mbed_Team 0:33fe30a2b785 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
JDI_Mbed_Team 0:33fe30a2b785 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
JDI_Mbed_Team 0:33fe30a2b785 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
JDI_Mbed_Team 0:33fe30a2b785 20 * SOFTWARE.
JDI_Mbed_Team 0:33fe30a2b785 21 */
JDI_Mbed_Team 0:33fe30a2b785 22 #include "mbed.h"
JDI_Mbed_Team 0:33fe30a2b785 23
JDI_Mbed_Team 0:33fe30a2b785 24 #include "ffconf.h"
JDI_Mbed_Team 0:33fe30a2b785 25 #include "mbed_debug.h"
JDI_Mbed_Team 0:33fe30a2b785 26
JDI_Mbed_Team 0:33fe30a2b785 27 #include "FATFileSystem.h"
JDI_Mbed_Team 0:33fe30a2b785 28 #include "FATFileHandle.h"
JDI_Mbed_Team 0:33fe30a2b785 29 #include "FATDirHandle.h"
JDI_Mbed_Team 0:33fe30a2b785 30
JDI_Mbed_Team 0:33fe30a2b785 31 DWORD get_fattime(void) {
JDI_Mbed_Team 0:33fe30a2b785 32 time_t rawtime;
JDI_Mbed_Team 0:33fe30a2b785 33 time(&rawtime);
JDI_Mbed_Team 0:33fe30a2b785 34 struct tm *ptm = localtime(&rawtime);
JDI_Mbed_Team 0:33fe30a2b785 35 return (DWORD)(ptm->tm_year - 80) << 25
JDI_Mbed_Team 0:33fe30a2b785 36 | (DWORD)(ptm->tm_mon + 1 ) << 21
JDI_Mbed_Team 0:33fe30a2b785 37 | (DWORD)(ptm->tm_mday ) << 16
JDI_Mbed_Team 0:33fe30a2b785 38 | (DWORD)(ptm->tm_hour ) << 11
JDI_Mbed_Team 0:33fe30a2b785 39 | (DWORD)(ptm->tm_min ) << 5
JDI_Mbed_Team 0:33fe30a2b785 40 | (DWORD)(ptm->tm_sec/2 );
JDI_Mbed_Team 0:33fe30a2b785 41 }
JDI_Mbed_Team 0:33fe30a2b785 42
JDI_Mbed_Team 0:33fe30a2b785 43 FATFileSystem *FATFileSystem::_ffs[_VOLUMES] = {0};
JDI_Mbed_Team 0:33fe30a2b785 44
JDI_Mbed_Team 0:33fe30a2b785 45 FATFileSystem::FATFileSystem(const char* n) : FileSystemLike(n) {
JDI_Mbed_Team 0:33fe30a2b785 46 debug_if(FFS_DBG, "FATFileSystem(%s)\n", n);
JDI_Mbed_Team 0:33fe30a2b785 47 for(int i=0; i<_VOLUMES; i++) {
JDI_Mbed_Team 0:33fe30a2b785 48 if(_ffs[i] == 0) {
JDI_Mbed_Team 0:33fe30a2b785 49 _ffs[i] = this;
JDI_Mbed_Team 0:33fe30a2b785 50 _fsid[0] = '0' + i;
JDI_Mbed_Team 0:33fe30a2b785 51 _fsid[1] = '\0';
JDI_Mbed_Team 0:33fe30a2b785 52 debug_if(FFS_DBG, "Mounting [%s] on ffs drive [%s]\n", getName(), _fsid);
JDI_Mbed_Team 0:33fe30a2b785 53 f_mount(&_fs, _fsid, 0);
JDI_Mbed_Team 0:33fe30a2b785 54 return;
JDI_Mbed_Team 0:33fe30a2b785 55 }
JDI_Mbed_Team 0:33fe30a2b785 56 }
JDI_Mbed_Team 0:33fe30a2b785 57 error("Couldn't create %s in FATFileSystem::FATFileSystem\n", n);
JDI_Mbed_Team 0:33fe30a2b785 58 }
JDI_Mbed_Team 0:33fe30a2b785 59
JDI_Mbed_Team 0:33fe30a2b785 60 FATFileSystem::~FATFileSystem() {
JDI_Mbed_Team 0:33fe30a2b785 61 for (int i=0; i<_VOLUMES; i++) {
JDI_Mbed_Team 0:33fe30a2b785 62 if (_ffs[i] == this) {
JDI_Mbed_Team 0:33fe30a2b785 63 _ffs[i] = 0;
JDI_Mbed_Team 0:33fe30a2b785 64 f_mount(NULL, _fsid, 0);
JDI_Mbed_Team 0:33fe30a2b785 65 }
JDI_Mbed_Team 0:33fe30a2b785 66 }
JDI_Mbed_Team 0:33fe30a2b785 67 }
JDI_Mbed_Team 0:33fe30a2b785 68
JDI_Mbed_Team 0:33fe30a2b785 69 FileHandle *FATFileSystem::open(const char* name, int flags) {
JDI_Mbed_Team 0:33fe30a2b785 70 debug_if(FFS_DBG, "open(%s) on filesystem [%s], drv [%s]\n", name, getName(), _fsid);
JDI_Mbed_Team 0:33fe30a2b785 71 char n[64];
JDI_Mbed_Team 0:33fe30a2b785 72 sprintf(n, "%s:/%s", _fsid, name);
JDI_Mbed_Team 0:33fe30a2b785 73
JDI_Mbed_Team 0:33fe30a2b785 74 /* POSIX flags -> FatFS open mode */
JDI_Mbed_Team 0:33fe30a2b785 75 BYTE openmode;
JDI_Mbed_Team 0:33fe30a2b785 76 if (flags & O_RDWR) {
JDI_Mbed_Team 0:33fe30a2b785 77 openmode = FA_READ|FA_WRITE;
JDI_Mbed_Team 0:33fe30a2b785 78 } else if(flags & O_WRONLY) {
JDI_Mbed_Team 0:33fe30a2b785 79 openmode = FA_WRITE;
JDI_Mbed_Team 0:33fe30a2b785 80 } else {
JDI_Mbed_Team 0:33fe30a2b785 81 openmode = FA_READ;
JDI_Mbed_Team 0:33fe30a2b785 82 }
JDI_Mbed_Team 0:33fe30a2b785 83 if(flags & O_CREAT) {
JDI_Mbed_Team 0:33fe30a2b785 84 if(flags & O_TRUNC) {
JDI_Mbed_Team 0:33fe30a2b785 85 openmode |= FA_CREATE_ALWAYS;
JDI_Mbed_Team 0:33fe30a2b785 86 } else {
JDI_Mbed_Team 0:33fe30a2b785 87 openmode |= FA_OPEN_ALWAYS;
JDI_Mbed_Team 0:33fe30a2b785 88 }
JDI_Mbed_Team 0:33fe30a2b785 89 }
JDI_Mbed_Team 0:33fe30a2b785 90
JDI_Mbed_Team 0:33fe30a2b785 91 FIL fh;
JDI_Mbed_Team 0:33fe30a2b785 92 FRESULT res = f_open(&fh, n, openmode);
JDI_Mbed_Team 0:33fe30a2b785 93 if (res) {
JDI_Mbed_Team 0:33fe30a2b785 94 debug_if(FFS_DBG, "f_open('w') failed: %d\n", res);
JDI_Mbed_Team 0:33fe30a2b785 95 return NULL;
JDI_Mbed_Team 0:33fe30a2b785 96 }
JDI_Mbed_Team 0:33fe30a2b785 97 if (flags & O_APPEND) {
JDI_Mbed_Team 0:33fe30a2b785 98 f_lseek(&fh, fh.fsize);
JDI_Mbed_Team 0:33fe30a2b785 99 }
JDI_Mbed_Team 0:33fe30a2b785 100 return new FATFileHandle(fh);
JDI_Mbed_Team 0:33fe30a2b785 101 }
JDI_Mbed_Team 0:33fe30a2b785 102
JDI_Mbed_Team 0:33fe30a2b785 103 int FATFileSystem::open(FileHandle **file, const char *name, int flags) {
JDI_Mbed_Team 0:33fe30a2b785 104 FileHandle *temp = open(name, flags);
JDI_Mbed_Team 0:33fe30a2b785 105 if (!temp) {
JDI_Mbed_Team 0:33fe30a2b785 106 return -1;
JDI_Mbed_Team 0:33fe30a2b785 107 }
JDI_Mbed_Team 0:33fe30a2b785 108
JDI_Mbed_Team 0:33fe30a2b785 109 *file = temp;
JDI_Mbed_Team 0:33fe30a2b785 110 return 0;
JDI_Mbed_Team 0:33fe30a2b785 111 }
JDI_Mbed_Team 0:33fe30a2b785 112
JDI_Mbed_Team 0:33fe30a2b785 113 int FATFileSystem::remove(const char *filename) {
JDI_Mbed_Team 0:33fe30a2b785 114 FRESULT res = f_unlink(filename);
JDI_Mbed_Team 0:33fe30a2b785 115 if (res) {
JDI_Mbed_Team 0:33fe30a2b785 116 debug_if(FFS_DBG, "f_unlink() failed: %d\n", res);
JDI_Mbed_Team 0:33fe30a2b785 117 return -1;
JDI_Mbed_Team 0:33fe30a2b785 118 }
JDI_Mbed_Team 0:33fe30a2b785 119 return 0;
JDI_Mbed_Team 0:33fe30a2b785 120 }
JDI_Mbed_Team 0:33fe30a2b785 121
JDI_Mbed_Team 0:33fe30a2b785 122 int FATFileSystem::rename(const char *oldname, const char *newname) {
JDI_Mbed_Team 0:33fe30a2b785 123 FRESULT res = f_rename(oldname, newname);
JDI_Mbed_Team 0:33fe30a2b785 124 if (res) {
JDI_Mbed_Team 0:33fe30a2b785 125 debug_if(FFS_DBG, "f_rename() failed: %d\n", res);
JDI_Mbed_Team 0:33fe30a2b785 126 return -1;
JDI_Mbed_Team 0:33fe30a2b785 127 }
JDI_Mbed_Team 0:33fe30a2b785 128 return 0;
JDI_Mbed_Team 0:33fe30a2b785 129 }
JDI_Mbed_Team 0:33fe30a2b785 130
JDI_Mbed_Team 0:33fe30a2b785 131 int FATFileSystem::format() {
JDI_Mbed_Team 0:33fe30a2b785 132 FRESULT res = f_mkfs(_fsid, 0, 512); // Logical drive number, Partitioning rule, Allocation unit size (bytes per cluster)
JDI_Mbed_Team 0:33fe30a2b785 133 if (res) {
JDI_Mbed_Team 0:33fe30a2b785 134 debug_if(FFS_DBG, "f_mkfs() failed: %d\n", res);
JDI_Mbed_Team 0:33fe30a2b785 135 return -1;
JDI_Mbed_Team 0:33fe30a2b785 136 }
JDI_Mbed_Team 0:33fe30a2b785 137 return 0;
JDI_Mbed_Team 0:33fe30a2b785 138 }
JDI_Mbed_Team 0:33fe30a2b785 139
JDI_Mbed_Team 0:33fe30a2b785 140 DirHandle *FATFileSystem::opendir(const char *name) {
JDI_Mbed_Team 0:33fe30a2b785 141 FATFS_DIR dir;
JDI_Mbed_Team 0:33fe30a2b785 142 FRESULT res = f_opendir(&dir, name);
JDI_Mbed_Team 0:33fe30a2b785 143 if (res != 0) {
JDI_Mbed_Team 0:33fe30a2b785 144 return NULL;
JDI_Mbed_Team 0:33fe30a2b785 145 }
JDI_Mbed_Team 0:33fe30a2b785 146 return new FATDirHandle(dir);
JDI_Mbed_Team 0:33fe30a2b785 147 }
JDI_Mbed_Team 0:33fe30a2b785 148
JDI_Mbed_Team 0:33fe30a2b785 149 int FATFileSystem::open(DirHandle **dir, const char *name) {
JDI_Mbed_Team 0:33fe30a2b785 150 DirHandle *temp = opendir(name);
JDI_Mbed_Team 0:33fe30a2b785 151 if (!temp) {
JDI_Mbed_Team 0:33fe30a2b785 152 return -1;
JDI_Mbed_Team 0:33fe30a2b785 153 }
JDI_Mbed_Team 0:33fe30a2b785 154
JDI_Mbed_Team 0:33fe30a2b785 155 *dir = temp;
JDI_Mbed_Team 0:33fe30a2b785 156 return 0;
JDI_Mbed_Team 0:33fe30a2b785 157 }
JDI_Mbed_Team 0:33fe30a2b785 158
JDI_Mbed_Team 0:33fe30a2b785 159 int FATFileSystem::mkdir(const char *name, mode_t mode) {
JDI_Mbed_Team 0:33fe30a2b785 160 FRESULT res = f_mkdir(name);
JDI_Mbed_Team 0:33fe30a2b785 161 return res == 0 ? 0 : -1;
JDI_Mbed_Team 0:33fe30a2b785 162 }
JDI_Mbed_Team 0:33fe30a2b785 163
JDI_Mbed_Team 0:33fe30a2b785 164 int FATFileSystem::mount() {
JDI_Mbed_Team 0:33fe30a2b785 165 FRESULT res = f_mount(&_fs, _fsid, 1);
JDI_Mbed_Team 0:33fe30a2b785 166 return res == 0 ? 0 : -1;
JDI_Mbed_Team 0:33fe30a2b785 167 }
JDI_Mbed_Team 0:33fe30a2b785 168
JDI_Mbed_Team 0:33fe30a2b785 169 int FATFileSystem::unmount() {
JDI_Mbed_Team 0:33fe30a2b785 170 if (disk_sync())
JDI_Mbed_Team 0:33fe30a2b785 171 return -1;
JDI_Mbed_Team 0:33fe30a2b785 172 FRESULT res = f_mount(NULL, _fsid, 0);
JDI_Mbed_Team 0:33fe30a2b785 173 return res == 0 ? 0 : -1;
JDI_Mbed_Team 0:33fe30a2b785 174 }