STM32F103を使ってみる
自作8ビットパラレルTFTモジュール
こちらにIL9341 8ビットパラレルTFT用のライブラリが公開されています。
@ https://github.com/iwalpola/Adafruit_ILI9341_8bit_STM
A https://github.com/stevstrong/Adafruit_TFTLCD_8bit_STM32
これらのライブラリは非常に高速に動作しますが、利用できるドライバーが限られています。
またサポートするTFTの解像度も限られています。
そこで、以下のドライバーをサポートする8ビットパラレルTFT用のライブラリを作りました。
ILI9325
ILI9341
ILI9342
SPFD5408
R61505
ILI9481
R61509V
TFTの解像度も、ある程度自由に変更することができます。
ライブラリソースはこちらで
公開しています。

「Generic STM32F103C Series」のPCポートは、PC13からPC15のポートだけを使うことができますが
「Generic STM32F103R Series」のPCポートは、PC0からPC15の全てのポートを使うことができます。
そこで、データポートとしてPAポートかPCポートを選べるようにしました。
STM32F103R Seriesの時、データポートとしてPCポートを選ぶと、PAポートを全て空けることができます。
8 bit parallel interface
Port data |D7 |D6 |D5 |D4 |D3 |D2 |D1 |D0 |
Pin stm32 |PA7|PA6|PA5|PA4|PA3|PA2|PA1|PA0|
または
Port data |D7 |D6 |D5 |D4 |D3 |D2 |D1 |D0 |
Pin stm32 |PC7|PC6|PC5|PC4|PC3|PC2|PC1|PC0|
Control Pins
Control pins |RD |WR |RS |CS |RST|
Pin stm32 |PB3|PB4|PB5|PB6|PB7|
メモリーに余裕があるので、複数のドライバーを1つのライブラリでサポートしても、あまり苦になりません。
64Kメモリーボード
最大65536バイトのフラッシュメモリのうち、スケッチが36844バイト(56%)を使っています。
最大20480バイトのRAMのうち、グローバル変数が3992バイト(19%)を使っていて、ローカル変数で16488バイト使うことができま
す。
128Kメモリーボード
最大131072バイトのフラッシュメモリのうち、スケッチが36844バイト(28%)を使っています。
最大20480バイトのRAMのうち、グローバル変数が3992バイト(19%)を使っていて、ローカル変数で16488バイト使うことができま
す。
複数のドライバーをサポートできるように関数は汎用化したのでスピードはかなり犠牲になっています。
ILI9341のTFTを使って、今までのライブラリと処理速度を比べて見ました。
UNOの処理時間も比較のために掲載します。
時間の単位はmicrosecondsです。
|
STM32F103(SPI) |
STM32F103(SPI-DMA) |
STM32F103(8Bit) |
STM32F103(8Bit自作) |
Arduino UNO(8Bit) |
Screen fill |
705842 |
170778 |
315797 |
1192237 |
1379560 |
Text |
46723 |
30783 |
26873 |
81870 |
344024 |
Lines |
413007 |
153931 |
127669 |
776629 |
3390180 |
Horiz/Vert Lines |
57334 |
15107 |
24582 |
98542 |
144664 |
Rectangles (outline) |
36807 |
10155 |
15937 |
63769 |
104260 |
Rectangles (filled) |
1465912 |
354919 |
656000 |
2474990 |
3267476 |
Circles (filled) |
224149 |
94395 |
105220 |
406540 |
1211484 |
Circles (outline) |
178859 |
121121 |
94079 |
341776 |
1475108 |
Triangles (outline) |
131026 |
34792 |
30080 |
173610 |
1075596 |
Triangles (filled) |
473196 |
140148 |
209074 |
837614 |
1721636 |
Rounded rects (outline) |
80083 |
43570 |
39953 |
146978 |
506428 |
Rounded rects (filled) |
1604185 |
400474 |
708444 |
2709478 |
3795228 |
自作ライブラリはSPI版よりも遅く、UNOよりも早い結果となりました。
高速描画をしたいのなら、ILI9341を使ったSPI-DMA版ライブラリがお勧めです。
続く...