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で使ったルーチンを移植したいところだが、先伸ばしに
コメント
コメントを投稿