Check refresh speed by transfermode 4bit,3bit,1bit with MIP8F_SPI_Ver50
Dependencies: MIP8F_SPI_Ver50 MIP8f_FRDM_LineBuffer_sample mbed
Dependents: MIP8f_FRDM_Animation_sample
Introduction
this sample is checking the refresh display speed between 4bit,3bit and 1bit transfer mode.
- 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. x bit is Dummy. 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.
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/400x240_ver30.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_transfermode_sample.k64f.bin
StateSw/StateSW.cpp
- Committer:
- JDI_Mbed_Team
- Date:
- 2018-09-04
- Revision:
- 0:33fe30a2b785
File content as of revision 0:33fe30a2b785:
#include "StateSW.h" #include "mbed.h" StateSW::StateSW(PinName SWPin) : _SW(SWPin) {} void StateSW::Enable(int StateNum, int NoiseCancel, int OpenTime) { // _PRSCNT -- unit [times] ,_OPNCNT -- unit [s] _STATENUM = StateNum; _REPEAT = NoiseCancel; _OPNCNT = OpenTime; _preSW = 1; _PressCount= 0; _IfCntOpen = 0; _IfCntClose= 0; _IfCntState= 0; _IfAtTime = 0; _StateCounter.attach(this, &StateSW::_SeekPress, 0.05); // Ticker[s] } int StateSW::State(void){ return _State; } bool StateSW::IfAtTime(void){ return _IfAtTime; } void StateSW::IfCntState(bool IfCntState){ _IfCntState = IfCntState; } void StateSW::IfCntClose(bool IfCntClose){ _IfCntClose = IfCntClose; if(_IfCntClose == 0 ){ _Timer_SW.stop(); _Timer_SW.reset(); } } void StateSW::IfCntOpen(bool IfCntOpen){ _IfCntOpen = IfCntOpen; if(_IfCntOpen == 0 ){ _Timer_SW.stop(); _Timer_SW.reset(); } } /* void StateSW::Reset(void){ } bool StateSW::IfOnetime(void){ if(IfOnetime==1){ IfOnetime = 0; return 1; } else return 0; } */ void StateSW::_SeekPress(void) { // instead of InterruptIn -- for against noise if(_preSW != _SW) _PressCount++; else _PressCount=0; if(_PressCount > _REPEAT ) { if(_SW) StateSW::_rise(); else StateSW::_fall(); _preSW = _SW; _PressCount = 0; } if(_Timer_SW.read() > _OPNCNT){ _Timer_SW.stop(); _Timer_SW.reset(); _IfAtTime =1; } } void StateSW::_fall(void) { if(_IfCntOpen == 1 ){ _Timer_SW.stop(); _Timer_SW.reset(); } if(_IfCntClose== 1 ) _Timer_SW.start(); } void StateSW::_rise(void) { if(_IfCntOpen == 1 ) _Timer_SW.start(); if(_IfCntClose== 1 ){ _Timer_SW.stop(); _Timer_SW.reset(); } if(_IfCntState) { _State++; _State = _State%_STATENUM; // IfOnetime=1; } }