Compatible with ATM0177B3A

Dependencies:   mbed

秋月電子で販売されているATM0177B3AをNucleo F303K8で動かしました。https://akizukidenshi.com/catalog/g/gK-14032/

フォーク元は以下になります。ピン番号の変更とライブラリの更新のみでも一応動きます。https://os.mbed.com/users/morita/code/DL144128_LCD/file/c0be4e018a09/ili9163lcd.h/

変更点

  • SPIクロックの極性を変更→データシートでは立下りでデータ出力です。

void lcdWriteCommand(uint8_t address)
{
    uint8_t i;

    CS_ = 0;
    A0_ = 0;
    for(i=0;i<8;i++){
        if(address & 128)SDA_= 1; else SDA_ = 0;
        SCK_ = 0;//変更箇所
        address <<= 1;
        SCK_ = 1;//変更箇所
    }
    wait_us(1);
    CS_ = 1;
}
  • RGBの並びを変更→データシートではMSBファーストでRGBの並びです。

inline uint16_t decodeRgbValue(uint8_t r, uint8_t g, uint8_t b)
{
    return (r << 11) | (g << 6) | (b);
}   
  • 画面サイズをdefine

//128x160
#define COL_MAX   0x7f
#define PAGE_MAX  0x9f
  • 画面表示方向のdefine定義名を変更 →LCD_ORIENTATION0 がエラーのため

#define LCD_ORIENTATION0  0//変更前
#define ROT_TOP           0b00000000//変更後

機能追加

  • グラデーション

void grade(void);
  • カラーバー

void colorbar(void);
  • バースト機能→ 1byte転送毎にwait_us(1)が呼び出され、速度低下していました。 wait_us(1)を削除した関数を2つ作成しました。

void lcdWriteData_burst(uint16_t *burst_data,uint16_t length);
void lcdWriteData_sameburst(uint16_t data,uint16_t length);

他省略

  • ガンマカーブ設定のコメントアウト →初期設定で問題なし
  • 画面サイズ設定のコメントアウト →HWで設定済、ballとbatはVRAMを部分的に書き換えているため、毎度caset、rasetの設定が必要です。

HW構成

https://os.mbed.com/media/uploads/gitakichi/img_20210101_231750_2.jpg

  • VFのTYPが3.3Vと精度が疑わしく、電流制限抵抗の設計が難しい→バックライトの実測

負荷抵抗:10Ω、電源電圧:3.276V時 VR=0.335V、従ってVF=2.941V、IF=33.5mA

負荷抵抗:100Ω時 VR=0.621V、従ってVF=2.655V、IF=26.55mA →若干暗いけど問題ないので採用

  • ピン配置

DigitalOut SCK_(A4);
DigitalOut SDA_(A6);
DigitalOut A0_(A2);
DigitalOut RESET_(A1);//10kプルアップ
DigitalOut CS_(A3);
Download repository: zip gz