MSP432 ssd1306 128x32


 https://github.com/boykod/SSD1306-I2C-library-for-MSP430-432

ライブラリーを作ってくださっているので、ダウンロードし、必要なファイルをコピーする。

ssd1306_i2c_lib.c
ssd1306_lib.c
の2つは、ccsの下に入れて、
address.h
font12x16.h
font6x8.h
ssd1306_i2c_lib.h
ssd1306_lib.h
はmainと同じ階層にドラッグしてもってくる。

SSD1306の128x32のものを利用する際は、ちょっと2つのファイルをいじる必要がある。
address.hを開いて、上から3行目に
#define SSD1306_HEIGHT                 64
と定義されているので、これを
#define SSD1306_HEIGHT                 32
に変更する。これだけでは正しく動いてくれないので、
ssd1306_lib.cを開いて20行目付近に
sendCommand(0x3F); /* 64 COM lines */
があるので、
#if (SSD1306_HEIGHT == 32)
    sendCommand(0x1F);                                                  /* 64 COM lines */
#elif
    sendCommand(0x3F);
#endif
に置換し
同じく、
sendCommand(0x12); /* Alternative com pin configuration, disable com left/right remap */ /
という箇所を
#if (SSD1306_HEIGHT == 32)
    sendCommand(0x02);                                                  /* Alternative com pin configuration, disable com left/right remap */ //0x12
#elif
    sendCommand(0x12);
#endif
とする。

/******************************************************************************
 * MSP432 Empty Project
 *
 * Description: An empty project that uses DriverLib
 *
 *                MSP432P401
 *             ------------------
 *         /|\|                  |
 *          | |                  |
 *          --|RST               |
 *            |                  |
 *            |                  |
 *            |                  |
//            |         SDA/P6.4|------->
//            |         SCK/P6.5|------->
 * Author: 
*******************************************************************************/
/* DriverLib Includes */
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>
#include "ti/devices/msp432p4xx/inc/msp.h"
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include "ssd1306_lib.h"

char printNum[80];
unsigned char num = 5;

int main(void) {
    volatile uint32_t i;

    WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD;

    ssd1306Init();

    fillDisplay (0x00);

//    darwPixel(5, 5, 1);

    while (1) {
        for (num = 0; num < 10; num++){
            sprintf (printNum, "%d", num);
            draw6x8Str(0, 0, printNum, 1,0);
            draw6x8Str(0, 1, "/* MSP432P401R */",1,0);
            draw6x8Str(0, 2, "/* Hello World*/",1,0);
            draw6x8Str(0, 3*************/",1,0);
            //for (i = 100; i > 0; i--);
        }
        num = 0;
    }

}
【欠点】
すべてを自分でいつか作るしかないのだが、遅い・・・連続的にwhileの中で数字をカウントアップしているが、1秒に一回数字が更新される。
文字数が多くなればなるほど遅くなるので、そこいらに解決の糸口があると思う。
STM32で使ったルーチンを移植したいところだが、先伸ばしに


コメント

このブログの人気の投稿

Attiny85とAQM0802A(LCD)のI2C接続

ILI9341 240X320 Arduino

Attiny85 FuseRest