MIP8 Frame buffer sample. Color display
Fork of MIP8f_FRDM_sample by
Introduction
This Wiki page describes how to use the sample code to evaluate JDI_MIP. For JDI_MIP, please refer to the following Wiki page
https://os.mbed.com/teams/JapanDisplayInc/wiki/MIP-Reflective-type-Color-Display
https://os.mbed.com/teams/JapanDisplayInc/wiki/SPI_MIP8
Constitution
- FRDM-K64F(NXP)
- JDI_MIP Panel
- JDI_MIP Interface board.
Usage
1. Get MIP-panel, and JDI_MIP Interface Board, FRDM-K64F(NXP).
2. Import into compiler & Compile Program.
/media/uploads/JDI_Mbed_Team/anordertodownloadthesamplecodecompilerunonthetargetboard_u3lVTcw.pdf
3. Copy Setting File and Image to micro SD-CARD.
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.
- LPM013M126x (176x176) :/media/uploads/JDI_Mbed_Team/sdcard_176x176.bin
- LPM027M128x (400x240) :/media/uploads/JDI_Mbed_Team/sdcard_400x240.bin
- LPM044M141x (640x480) & TX11D200 : /media/uploads/JDI_Mbed_Team/sdcard_640x480.bin
ex.) in case of LPM044M141x (640x480) :
b) Insert micro SD-CARD to FRDM-K64F.
4. Upload binary file to FRDM-K64F.and push Reset Button.
Interface board
- Get from Switch Science
- Schematic/Parts list
- Gerber data(rename bin->zup, and unzip)
/media/uploads/STakayama/jdi_mip8_lcd_last.pdf
/media/uploads/STakayama/jdi-mip-pcb_partslist.pdf
/media/uploads/STakayama/jdi_mip8_lcd_last.bin
- Rename .bin to .zip,and unzip -> gerber data files.
FRDM Pin(Port) assign
Program Overview
Sample Code (.bin)
/media/uploads/JDI_Mbed_Team/mip8f_frdm_sample.k64f.bin
- MIP8f_FRDM_sample demo
Special Thanks
- ARM mbed team
- NXP for FRDM-K64F
- Switch Science for Interface Board
- Adafruit Industries for Adafruit_LEDBackpack.
- Neil Thiessen for SDFileSystem.
- MikroElektronika for GLCD Font
- Many developers
Diff: main.cpp
- Revision:
- 1:e5796aa9f1aa
- Parent:
- 0:33fe30a2b785
--- a/main.cpp Tue Sep 04 06:44:01 2018 +0000 +++ b/main.cpp Mon Oct 22 04:03:54 2018 +0000 @@ -1,19 +1,29 @@ /** - * Copyright 2018 Japan Display Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - #include "stdio.h" +* @file main.cpp +* @brief Sample source code for MIP8 diplay. +* @details +* +* Addtional function is Monochome display by 1bit mode of SPI transfer. +* +* spi-transfer to Display has 3 mode. +* 4bit mode is color display, this bit arrange is R,G,B,x. R,G,B = R,G,B subpixel bit. a x bit is Dummy. +* No ues(3bit mode is color display, this bit arrange is R,G,B. R,G,B = R,G,B subpixel bit. No bit is Dummy.) +* 1bit mode is monocrome display,high speed refresh mode. a only Green subpixel of bitmap data is transfered. +* <License> +* Copyright 2018 Japan Display Inc. +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#include "stdio.h" #include "string" #include "mbed.h" #include "MIP8F_SPI.h" @@ -21,7 +31,6 @@ #include "StateSW.h" #include "TglSW.h" - #include "Arial12x12.h" #include "Arial24x23.h" #include "Arial28x28.h" @@ -35,26 +44,24 @@ #define ON 1 #define OFF 0 - //K64F SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // mosi,miso,sck,cs memLCD8 WD(PTD2,PTD3,PTD1,PTD0,PTC4,PTD3); //PTC12); // mosi,miso,clk,cs,disp,power PwmOut BK(PTC3); PwmOut COM60HZ(PTC10); //add 20161108 DigitalOut COMSEL(PTA2,0); //add 20161108 - DigitalOut BLCTRL(PTB10,0); //add 20171115 - // SW2 StateSW swPWMorOFF(SW2); //PTC6); InterruptIn PWMorOFF(SW2); - // SW3 TglSW HaltSW(SW3); //PTA4); DigitalIn TexSW(SW3); +//for debug +//Serial pc(USBTX, USBRX); // tx, rx - +//function prototype void SD2BUF(char *filepath); void ifOFFseq(void); void ifswPWM(void); @@ -62,6 +69,7 @@ void DispAllDir(const char *fsrc); void ReadBmp(const char *fsrc, uint32_t FileNum); uint32_t CntFile(const char *fsrc); +//Grobal value int ifMargeTXT = 0; int width = 400; int height= 240; @@ -72,14 +80,13 @@ float bk_timer = 1.0; int blduty = 0; int bloff = 0; -int blctrl_sel = 1; //0:40mA, 1:160mA +int blctrl_sel = 0; //0:40mA, 1:160mA //Y.S int main() { uint32_t filenum=0; char filepath[40]; - sd.disk_initialize(); HaltSW.Enable(1); @@ -130,33 +137,26 @@ BK.period_ms(1); //1ms cycle 20161012 BK.write(0); //low output 20160725 <- high output - while(1){ //BITMAPS + while(1) + { //BITMAPS filenum = CntFile(filepath); //file number read - for(uint32_t i=0; i<filenum; i++){ + for(uint32_t i=0; i<filenum; i++) + { ReadBmp(filepath,i); - - while(HaltSW.State()){ // VCOM invert when image is still - // pol++; - // WD.command( (pol << 6) & 0x40 ); + while(HaltSW.State()) { // VCOM invert when image is still + // pol++; + // WD.command( (pol << 6) & 0x40 ); // wait(bk_timer); //1Hz - } -/* - // Brink - for(char j = 0; j < 8; j++){ - pol = j&0x01; - EnterOrLeave = (j+1)&0x01; - WD.command( (pol << 6) | (EnterOrLeave << 3) ); - wait(0.2); - } -*/ - HaltSW.Clear(); - WD.writeDISP(); - wait(2); + } + HaltSW.Clear(); + //1bit trasfer mode = monochro diplay + WD.writeDISP(TrBIT1); + wait(2); } } } - +//4bit mode void SD2BUF(char *filepath){ char R8[1],G8[1],B8[1] ,DUMMY[1]; int RGB; @@ -175,7 +175,7 @@ WD.pixel(x,y,RGB); } if( y!=0) // The last data column doesn't need padding - for(int x=(width*3)%4; (x%4 !=0); x++) fscanf(fp, "%c",DUMMY); // 4byte boundery for every column + for(int x=(width*3)%4; (x%4 !=0); x++) fscanf(fp, "%c",DUMMY); // 4byte boundery for every column(only windows bitmap format) } } fclose(fp);