TOPPERS BASE PLATFORM (RP) V1.4.5

担当者

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

竹内良輔

変更履歴
リリース
1.4.4
1.4.5

日付
2023/05/19
2023/12/12

作成者
竹内良輔
竹内良輔

変更内容
初版
lwIP の TCP ロック機能を追加,別コアアクセス時のドラ
イバの不具合対応、標準出力処理の変更、ネットワーク
モニタ対応、fmp サンプルに adfruit2.8”シールドを追加、RTC の自動設定機能を追加、DMA 割込みの不具合
対応、TEB003 を REV.D に修正、ADC ドライバの不具合対応、USB デバイス MSC を追加

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

目次
変更履歴 ..................................................................................................................................................... 2
1 背景 ..................................................................................................................................................... 5
2 目的 ..................................................................................................................................................... 5
3 TOPPERS BASE PLATFORM (RP)仕様 .......................................................................................... 5
3.1
プラットフォームのターゲット .................................................................................................. 5
3.2
レイア構造 ................................................................................................................................... 8
3.3
開発環境 ....................................................................................................................................... 9
4 Device Driver 仕様 ........................................................................................................................... 10
4.1
Basic Driver .............................................................................................................................. 10
4.1.1
概要 ........................................................................................................................................ 10
4.1.2
ドライバ一覧 .......................................................................................................................... 10
4.1.3
GPIO ...................................................................................................................................... 10
4.1.3.1
データ仕様 .......................................................................................................................... 10
4.1.3.2
インターフェイス仕様........................................................................................................ 11
4.1.3.3
フローチャート .................................................................................................................. 11
4.1.4
DMA ....................................................................................................................................... 12
4.1.4.1
データ仕様 .......................................................................................................................... 12
4.1.4.2
インターフェイス仕様........................................................................................................ 124.1.5
RTC ........................................................................................................................................ 13
4.1.5.1
データ仕様 .......................................................................................................................... 13
4.1.5.2
インターフェイス仕様........................................................................................................ 13
4.1.5.3
設定手順 ............................................................................................................................. 14
4.1.6
WATCH DOG ........................................................................................................................ 14
4.1.6.1
データ仕様 .......................................................................................................................... 14
4.1.6.2
インターフェイス仕様........................................................................................................ 14
4.1.7
UART ..................................................................................................................................... 15
4.2Standard Driver ....................................................................................................................... 16
4.2.1
概要 ........................................................................................................................................ 16
4.2.2
SPI ......................................................................................................................................... 16
4.2.2.1
データ仕様 .......................................................................................................................... 17
4.2.2.2
インターフェイス仕様........................................................................................................ 19
4.2.2.3
フローチャート .................................................................................................................. 19
4.2.3
I2C ......................................................................................................................................... 21
4.2.3.1
データ仕様 .......................................................................................................................... 21
4.2.3.2
インターフェイス仕様........................................................................................................ 22
4.2.3.3
フローチャート .................................................................................................................. 23
4.2.4
ADC........................................................................................................................................ 24
4.2.4.1
データ仕様 .......................................................................................................................... 24
4.2.4.2 インターフェイス仕様.............................................................................................................. 26
4.2.4.3 フローチャート......................................................................................................................... 26
4.2.5
USB ........................................................................................................................................ 26
4.2.5.1
データ仕様 .......................................................................................................................... 27
4.2.7.2 インターフェイス仕様.............................................................................................................. 29
4.2.7.3 フローチャート......................................................................................................................... 30
5 タスクモニタ ..................................................................................................................................... 31
5.1
概要 ............................................................................................................................................ 31
5.2
標準入出力 ................................................................................................................................. 31
5.3
標準デバッグコマンド ............................................................................................................... 32
5.4
デバッグコマンド拡張 ............................................................................................................... 33
5.4.1
データ仕様 ............................................................................................................................. 33
5.4.2
インターフェイス仕様 ........................................................................................................... 33

6

API 層 ............................................................................................................................................... 34
6.1
概要 ............................................................................................................................................ 34
6.2
ファイルシステム ...................................................................................................................... 34
6.3
USB ミドルウェア..................................................................................................................... 34
6.4
UI ミドルウェア ........................................................................................................................ 34
6.5
LWIP ミドルウェア ................................................................................................................... 34
6.6
RTOS 隠蔽機能.......................................................................................................................... 34
7 ファイルの構成 ................................................................................................................................. 36
7.1
共通部 ........................................................................................................................................ 36
7.2
PDIC(Base/Standard)ドライバ ................................................................................................ 36
7.3
GDIC ドライバ .......................................................................................................................... 36
8 変更履歴 ............................................................................................................................................ 37
Appendix A Raspberry Pi PICO(W) TEB003(Arduino connector)ボード ............................................ 37

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

4

1 背景
TOPPERS BASE PLATFORM の 拡 張 と し て RP2040(Cortex-M0+) プ ロ セ ッ サ に 対 応 す る 。
Raspberry Pi PICO ボ ー ド に Arduino コ ネ ク タ 対 応 し た ボ ー ド に 実 装 し TOPPERS BASE
PLATFORM(RP)を開発することとなった。

2 目的
本リファレンスマニュアルは、ターゲットボードとターゲットボード上に作成したソフトウェアプラ
ットフォーム(TOPPERS BASE PLATFORM(RP))の仕様について記載する。
■ターゲットボード
・PICO Raspberry PI 社
・PICO W Raspberry PI 社

3 TOPPERS BASE PLATFORM (RP)仕様
本章では、TOPPERS BASE PLATFORM (RP)の仕様について記載する。

3.1 プラットフォームのターゲット
TOPPERS BASE PLATFORM(RP) は上記３つのボードに対応した TOPPERS ASP-1.9.3 カーネルと FMP-1.4.0 カーネル上で実行するデバイスドライバとミドルウェアに対応する。
TOPPERS 教育 WG の多くの資産を使用するために、TEB003（Arduino Connector ボード）を開発し、このボード上で円滑に動作することを想定する。TEB003 は DIP 半田で部品を実装して使用する。

図 3.1.1TEB003 ボード

図 3.1.2 実装し、PICO W と TEB002 を追加

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

5図 3.1.3 TEB003 回路図
TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

6

名称

型番

Raspberry Pi PICO W

M-17947

1200

1

Raspberry Pi PICO

M-16132770

1

細ピンヘッダ 1x20 (20P)

C-0439820

240

細ピンヘッダ 1x3 (3P) (10 個入)

C-043915

1

5K-14745

550

1 U2

550

マイクロ USB コネクタ電源供給用

C-10398

40

1 J1

40

USBtype-C コネクタ DIP 化キット

K-15426

180

1 J1

ARDUINO 用ピンソケット 10P+8P FH-10+8-S

C-1750480

1 CN3,CN480

ARDUINO 用ピンソケット 8P+6P FH-8+6-S

C-1750370

1 CN1,CN270

ピンソケット（メス） 1x20 (20P)

C-03077

50

2 U1

100

ピンソケット（メス） 1x6 (6P)

C-03784

20

1 CN7

20

ピンソケット（メス） 1x6 (6P)赤C-10284

20

1 CN5

20

ピンソケット（メス） 1x6(6P)青C-10286

20

1 CN6

20

DISP-SW 4

P-00586

60

1 SW1

20

プラスチックナット＋連結スペーサー10mm セット

P-01864

100

1

100

タクトスイッチ（黄色）P-03650

10

1 SW2

10

セラミックコンデンサ 0.01μF

P-02281

100

1 C4

100

抵抗 10KΩ 1/6W

R-16103

100

1 R5

100

抵抗 100Ω 1/4W

R-25101

100

1 R6

100

ＣＨ３４０Ｅ

ＵＳＢシリアル変換モジュール

Ｔｙｐ

ｅ－Ｃ

単価

個数

実装

部品代
1200

2575

表 3.1.1 TEB003 部品表(2023 年 11 月時点の価格)
asp/fmp カーネルには、
PICO/PICO W のボードの依存はありません。
TOPPERS BASE PLATFORM
でのボード指定コンパイルスイッチ BOARDTYPE で、正しくボードを指定してください。
BOARDTYPE=PICO : RASPBERRY PI PICO ボードを指定
BOARDTYPE=PICO_W : RASPBERRY PI PICO W ボードを指定
BOARDTYPE と実際のボードが異なった状態で実行した場合、デバッグコマンドにて LED の点灯、消灯を指定しても、LED は正しく動作しません。また、BOARDTYPE=PICO_W でビルドした実行モ
ジュールを PICO ボードで実行した場合、LED や WIFI 制御で cyw43 の通信エラーが発生します。

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

7

3.2 レイア構造
TOPPERS BASE PLATFORM(RP)のハードウェアドライバは下層から３層のレイヤ構造を持ち、その上に API 層、ライブラリの I/F 層をもつ。PDIC の API が ASP-1.9.3 カーネルを使用している TOPPERSBASE PLATFORM(ST)とほぼ同じため、GDIC やミドルウェアは、そのまま使用可能である。また、ASP
カーネルのもつデバッグ機能以外に、教育ＷＧで提供するタスクモニタを標準に装備し、システムデバッグ
用にデバッグコマンドを用いて開発補助を行う。FMP-1.4.0 カーネルに関しては、TOPPERS BASE
PLATFORM(CV)のリソース上に、ASP カーネルで作成したドライバを展開して使用する。
図 3.2.1 に TOPPERS BASE PLATFORM (RP)の構造図を示す。Base Driver、Standard Driver、GDIC、
UI ミドルウェア等により、アプリケーションから以下の機能が使用可能になる。
① SPI
② I2C
③ UART④ RTC⑤ WDOG⑥ ADC⑦ USB ホスト・デバイス
Application

STDIO

UI

File Library

TASK MONITOR

GDIC Driver

USBHOST/DEVICE

Standard Driver

USB GDICTOPPERS/ASP Release1.9.3
TOPPERS/FMP Release1.4.0

Basec
DriverlwIPStandard driver
USB driver

WIFI

Raspberry PI PICO/PICO W

図 3.2.1 TOPPERS BASE PLATFORM(RV)構造図

以下に、レイア構造の概要を示す。
(1)basic driver ハードウェア仕様により API が変わるドライバ層(2)standard driver 拡張ボードの標準化により、API がある程度標準化されているドライバ層(3)GDIC driver 下位の driver を使用して構築する特定のデバイス用 driver(4)TOPPERS BASE PLATFORM で標準化している API 層(5)open source のライブラリ等

PLATFORM(RP)
DeviceBasic
DriverDriverStandard
Drivergdic
api
middlewarehigh driver
File
Systemターゲットボード
gpio
dma
watch doc
rtc
(uart)
i2c
spi
adc
usb host/device
wifi
fatfs
file librarydetail

対象の講座
基礎１，２，３
上級１
上級 USB

カーネル用を使用
CLCD/senser/eeprom
GLCD/SD card
MSC/HIDCYW43 用
デバイス結合FATC language file

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

上級１，２

8

Graphic UI(Opensource)library

stdio
ui
USB
lwip (*1)

stdio
文字グラフィック表示
USB ミドルウェア
プロトコル・スタック*1：一部パッチによる修正が必要：ソースコードは対応 Web からダウンロードする必要がある

3.3 開発環境
TOPPERS BASE PLATFORM(RP)は Windows10/11 上に MSYS2 をインストールし、GCC コンパイ
ラソースをビルドして開発を行っている。ソースコードを公開しているため、LINUX でも開発可能である。
(1) gcc version 5.4(GCC ARM-2016q2-20160926)(2) gcc version 10.2.1(GCC ARM-2020q4-major)

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

9

4 Device Driver 仕様
ハードウェア用デバイスドライバの仕様について記載を行う。本 TOPPERS BASE PLATFORM(RP)では、３種類のデバイスドライバを提供する。

4.1 Basic Driver
4.1.1 概要
Basic Driver は、ハードウェアを制御する基本的なドライバ群である。制御は簡単な制御手順であるが、初期化や拡張機能は、SoC によってまちまちの実装が行われており、標準的な API では作成できないものが多い。また、Basic Driver は直接ミドルウェアやアプリから制御を行うより、上位のドライバ
から使用機能として呼び出すケースが多い。逆に Basic Driver は他のドライバの呼び出しは行わない。
Basic Driver はハードウェアの依存性が大きいため、PLATFORM を別の SoC にポーティングする場
合、別の API の実装となる。
UART は、asp カーネルで使用されている。基本的には asp カーネルのドライバを使用する。差分のみを Basic Driver として記載する。タイマーに関しては、FE310-G000 は machine timer しか持たな
い、machine timer が asp カーネルのシステムタイマーとして使用しているので、タイマーの使用はサービス・コールに順ずる。

4.1.2 ドライバ一覧
Basic Driver として分類するドライバは以下の４つである。
(1) gpio 汎用ＩＯドライバ(2) dma DMA ドライバ
(3) rtc
リアルタイム制御ドライバ(4) wdoc ウォッチドックタイマードライバ(5) uart シリアルインターフェイスドライバ

4.1.3 GPIO
GPIO は汎用のＩＯを制御するドライバである。GPIO はピン設定を入力または出力に設定し、ピンに対してデータを読み込むまたは書き込みことにより、外部のロジックとのデータ交換を行う機能を持つ。機能的には単純であるが、ピンアサイン、ベースの電圧設定、出力モード設定、割込みの対応等、初期化に関して SoC の設計により、設定仕様がまちまちであり、標準的な初期化手順を作ることが難しい。
K210 では GPIO ポートはひとつでピン番号は、0 から 29 までの 30 ピンである。GPIO ピンは
pinmux_setup 関数でモードファンクションを設定し、gpio_setup 関数でピンの細かな属性を設定する。

4.1.3.1 データ仕様
GPIO の初期化に用いるデータと構造体について記載する。GPIO の初期化には表 4.1.3.1 のGPIO_Init_t 型を使用する。
番号

項目

型

機能

1
2
3

mode
pull
over

uint32_t
uint32_t
uint32_t

対象のピンアサインの設定モード
出力 Pull-Up/Pull-Down 設定
オーバーライド設定

表 4.1.3.1 GPIO_Init_t 型① modeモードはピンアサインの GPIO モードを設定する
定義

GPIO_MODE_INPUTGPIO_MODE_IT_FALLING

値

0x00000000
0x10010000

内容

GPIO 入力モード
GPIO 入力フォーリングエッジ割込み

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

10GPIO_MODE_IT_RISINGGPIO_MODE_IT_RISING_FALLINGGPIO_MODE_LVL_LOW
GPIO_MODE_LVL_HIGH
GPIO_MODE_OUTPUT
GPIO_MODE_ANALOG
GPIO_MODE_FUNCTION

0x10110000
0x10210000
0x10000000
0x10100000
0x00000001
0x00000002
0x00000011

GPIO 入力ライジングエッジ割込み
GPIO 入力両エッジ割込み
GPIO 入力 LOW レベル割込み
GPIO 入力 HIGH レベル割込み
GPIO 出力モード
GPIO アナログ入力設定
ファンクション設定

表 4.1.3.2 mode 設定値② pullpull は GPIO 出力設定。
定義

値

GPIO_NOPULLGPIO_PULLUPGPIO_PULLDOWN

内容

0x00000000
0x00000008
0x00000004

プルアップ無効
プルアップ有効
プルダウン有効表 4.1.3.3 pull 設定値③ over
オーバーライド設定を行う
定義

GPIO_OUTOVER_NORMALGPIO_OUTOVER_INVERTGPIO_OUTOVER_LOW
GPIO_OUTOVER_HIGH
GPIO_OEOVER_NORMALGPIO_OEOVER_INVERTGPIO_OEOVER_DISABLE
GPIO_OEOVER_ENABLE
GPIO_INOVER_NORMALGPIO_INOVER_INVERTGPIO_INOVER_LOW
GPIO_INOVER_HIGH

値

内容0x00000000
0x00000100
0x00000200
0x00000300
0x00000000
0x00001000
0x00002000
0x00003000
0x00000000
0x00010000
0x00020000
0x00030000

未設定

未設定

未設定

表 4.1.3.4 over 設定値

4.1.3.2 インターフェイス仕様
GPIO を初期設定するドライバ関数を以下に示す。
関数名

型

引数

機能

備考

pinmix_setup

void

uint8_t gpio
uint8_t modefunc

gpio 番号で指定されたポートをモードファンクション設定
する

GPIO のモード
ファンクション
は
VALUE_SIO(5)である

gpio_setup

void

GPIO_Init_t *init
uint8_t gpio

gpio 番号で指定されたポートを初期化する。

表 4.1.3.6 GPIO 設定関数

4.1.3.3 フローチャート
基本的な GPIO の出力設定のフローチャートを以下に示す。

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

11図 4.1.3.3.1 GPIO の設定フローチャート

4.1.4 DMADMA は CPU を通さず、直接メモリとデバイスまたはメモリ間でデータ転送を行う機構である。デバ
イスとメモリ間で高速にデータ通信した場合、オーバーラン・エラーやアンダーラン・エラーが発生するケースが多く、Standard Driver では DMA を使用している。

4.1.4.1

データ仕様

DMA ド ライ バは 初期設 定 用 に DMA_Init_t 型 、 制 御 を行 うた めに ハ ン ドラ とし て使 用する
DMA_Handle_t 型の二つの型を持つ。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10

Channel
ChainChannel
RequestMode
MultiRequest
Priority
Width
Increment
RingSize
SniffData

uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t

DMA のチャネル番号
転送終了後、次に起動する DMA チャネル番号
転送に使用するペリフェラルの DMA リクエスト番号
転送モード
ペリフェラルのデータアラインメントを設定する
転送開始のトリガ設定
転送データ幅
転送幅転送終了後のアドレスインクリメント設定
レング転送する場合のデータサイズ
スニフデータ指定

表 4.1.4.1 DMA_Init_t 型
番号

項目

型

機能

1
2
3
4
5
8
9
10

base
cbase
Init
controlxfercallback
ErrorCodelocaldata
localvalue

uint32_t
uint32_t
DMA_Init_t
uint32_tvoid *func
uint32_t
void*
uint32_t

DMA チャネルコントローラのベースアドレス
DMA チャネル領域の先頭アドレス
DMA 初期化情報
DMA 制御レジスタ保存値
転送終了時のコールバック関数
エラーコードローカル領域へのポインタ
ローカル領域で保存予定のデータ領域

表 4.1.4.2 DMA_Handle_t 型

4.1.4.2

インターフェイス仕様

RTC を設定するドライバ関数を以下に示す。
TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

12

関数名

型

引数

機能

dma_init
dma_deinit
dma_start

ER
ER
ER

DMA チャネルの初期化
DMA チャネル終了関数
指定のアドレスでデータ転送を開始する

dma_enddma_change_increment

ER
ER

DMA_Handle_t *DMA_Handle_t *DMA_Handle_t *uint32_t SrcAddress
uint32_t DstAddress
uint32_t DataLength
DMA_Handle_t *DMA_Handle_t *uint32_t Increment

dma_int

void

備考

転送終了
DMA のインクリメント設定変更
DMA 割込みハンドラ

表 4.1.4.2.1 DMA 設定関数

4.1.5 RTC
RTC(Real-time clock)は時刻を管理するハードウェアである。HI-FIVE1 ボードでは RTC 用のクロックは実装されているが、バックアップ用バッテリは実装されていないため電源を落とすと時刻はリセットされる。RTC は時刻管理以外にアラート機能があり、アラート時刻を設定すると割込みにより、アラート通知を受け取ることができる。

4.1.5.1

データ仕様

RTC では UNIX で使用されている時刻管理構造体 tm と共有して時刻データのやり取りを行えるように表 4.2.6.1.1 として構造体名を変えた tm2 構造体を定義する。この構造体は tm 構造体と混在して使用されても定しくデータの受け渡しを行える。
RTC のアラーム動作設定用に割込みからのコールバック関数を用意する。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9

tm_sectm_mintm_hour
tm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdst

int
int
int
int
int
int
int
int
int

秒(0～59)分(1～60)時(0～23)
月の中の日
月
年(1970 を 0 とした年数)
曜日
年の中の日
夏時間：０以外の値

表 4.1.5.1.1 tm2 構造体

4.1.5.2

インターフェイス仕様

RTC を設定するドライバ関数を以下に示す。
関数名

型

引数

機能

rtc_init
rtc_set_time
rtc_get_time
rtc_setalarm

void
ER
ER
ER

RTC の初期化を行う。引数に意味なし
時刻をセットする
時刻を取り出す
アラートをセットする

rtc_handler

void

intptr_exinf
struct tm2 *ptm
struct tm2 *ptm
struct tm2 *ptm
void *func
void

備考

割込みハンドラ

表 4.1.5.2.1 RTC 設定関数

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

13

4.1.5.3

設定手順

初期化は rtc_init 関数を用いて行う。ATT_INI を使用して設定が行えるように引数を用意したが、この引数に意味はない。使用は以下の手順に従う。
① rtc_set_time
時刻の設定を行う。tm2 構造体中に設定に使用するのは以下の６つの項目で他の項目は意味を持たない。
(1) tm_year(2) tm_mon(3) tm_mday(4) tm_hour(5) tm_min(6) tm_sec② rtc_get_time
時刻を取り出す。tm2 構造体中に実際に設定される項目は以下の７つの項目である。
他の設定も設定したい場合は mktime 関数を用いて設定を行う必要がある。
(1) tm_year(2) tm_mon(3) tm_mday(4) tm_wday(5) tm_hour(6) tm_min(7) tm_sec③ rtc_setalarm
ptm の時刻と現在時刻の比較を行い、ptm の時刻に達した場合、割込みが発生しコールバック関
数が呼び出される。

4.1.6 WATCH DOG
WATCH DOG はシステムに異常が発生した場合、リセットを行う機能である。システムは WATCH
DOG TIMER を起動し、一定周期でタイマーのリセットを行うことにより WATCH DOG に正常動作を通知する。

4.1.6.1

データ仕様

WATCH DOG はポート番号により選択できる。ドライバ I/F はポート番号を用いて制御を行う。
番号

項目

値

機能

1

WDOG1_PORTID

1

Watch Dog のポート 0 を示す

表 4.1.6.1.1 WATCH DOG ポート番号
番号

項目

型

機能

1
2
3

FeedTime
Debug
Magic

uint32_t
uint32_t
uint32_t

Feed Timeout
Debug mode request
Scratch magic value

表 4.1.6.1.2 WDOG_Init_t 構造体

4.1.6.2

インターフェイス仕様

WATCH DOG を制御するドライバ関数は以下の通りである。wdog_init でウォッチドックタイマーを起動した場合、リセット以外停止することはできない。
関数名

型

引数

機能

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

備考

14

wdog_init

ERID portid
uint16_t wdogtime

wdog_deinit
wdog_resetERER

ID portid
ID portid

指定ポート ID の WATCH DOG ペ
リフェラルを初期化する
wdogtime はタイムアウト時間で秒単位である
停止不可（意味をもたいない）
タイマーのリセットを行う

表 4.1.6.2.1 WATCH DOG ドライバ関数

4.1.7 UART
UART 用のデバイスドライバは asp/fmp カーネルで実装済のデバイスドライバを使用しているため、ここでは記載しない。

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

15

4.2 Standard Driver
スタンダードドライバは拡張ボード（シールド）の標準化により、ドライバ API がデファクトスタン
ダードとなっているドライバを指す。但し、ペリフェラルの実装は標準化されたドライバ API 以上の機能を持つものが多く、ハードウェアを最大限に利用するのは拡張インターフェイスにて拡張を行う必要がある。

4.2.1 概要B TOPPERS BASE PLATFORM として、スタンダードドライバとしたのは、以下の３つのペリフェラルである。ADC 以外はいずれもインターフェイス用のペリフェラルであり、接続先にセンサー、LCD、
GLCD、SD card、ネットワークハードウェア等の機器の制御用に用いられる。個々のハードウェアのドライバは別途上位に GDIC ドライバを用意しなければならない。
① I2C
② SPI
③ ADC
④ USB
スタンダードドライバは、基本的にポート ID を指定してハンドラを取り出しハンドラを用いてペリフェラルを制御する構成を取る。

4.2.2 SPISPI はシリアル・ペリフェラル・インターフェイスの略で、I2C と同様にペリフェラル間の通信規格である。I2C が高速でも 400kbps であるのに比べ SPI は 1Mbps から 20Mbps まで高速転送が可能である。本実装では 8 つの FIFO フレームを使った実装とした。SS(Slave Select または CS)の設定については AUTO モードと、AUTO オフモードが設定可能である。Arduino コネクタ互換用には、AUTO オ
フモードを推奨する。SPI は４本の信号で通信を行う。スレーブが複数ある場合は、SS(Slave Select)
を LOW にしたスレーブに対して通信を行う。そのため、SS 信号はスレーブの数だけ必要となる。また、双方向通信時は MISO と MOSI は同時にデータ通信するので、同時にデータ交換が行われる形となる。
① SCLK クロック信号② MISO スレーブからのデータ信号③ MOSI マスタからのデータ信号④ SS
スレーブのセレクト信号

図 4.2.2.1 SPI 接続図
SPI 通信は、クロックの論理（正と負）、クロックに対するデータ設定タイミングにより４つのモードのデータ・タイミングが定義されている。
① モード０：正パルス、前縁ラッチ、後端シフト② モード１：正パルス、前縁シフト、後端ラッチ③ モード２：負パルス、前縁ラッチ、後端シフト④ モード３：負パルス、前縁シフト、後端ラッチ
図 4.2.3.2 はもっとも一般的なモード０の動作タイミングを示す。
TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

16

SS

SCLK

MOSI
MSB

MISO

LSB

図 4.2.2.2 モード０、正パルス、前縁ラッチ、後端シフトのタイミング図

4.2.2.1

データ仕様

SPI ドライバは初期化用の型として、表 4.2.2.1.1 の SPI コンフィギュレーション型と、ハンドラとして表 4.2.2.1.2 の SPI ハンドラ型を持つ。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10
11

Baudrate
Mode
Direction
DataSize
CLKPolarity
CLKPhase
FrameFormat
DMARxChannel
DMATxChannel
semid
smlockuint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t
int
int

SPI 転送クロック
SPI マスタ、スレーブ等転送モード
SPI 転送方向
SPI 転送データサイズ
SPI 転送クロックの極性

SPI 転送クロック位相
SPI フレーム設定
SPI 受信用 DMA のチャネル番号（-1 で割込み通信）
SPI 送信用 DMA のチャネル番号（-1 で割込み通信）
通信用セマフォ ID（0 でセマフォなし）
排他制御用セマフォ ID(0 で排他制御なし)

表 4.2.2.1.1 SPI コンフィギュレーション型
semid はセマフォ通信用のセマフォ番号、ゼロで設定なし。このセマフォは割込みとドライバ間の伝達用に使用するため、設定なしの場合、通信遅延が発生する。smlock は、ドライバの排他制御に使用するセマフォ番号を指定する。ゼロの設定で排他制御なしとなる。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9

base
Init
pTxBuffPtr
TxXferSize
TxXferCount
pRxBuffPtr
RxXferSize
RxXferCount
hdmatxhdmarxxmode
spino
statusErrorCodeuint32_t
SPI_Init_t
uint8_t *uint16_t
uint16_t
uint8_t *uint16_t
uint16_t
DMA_Handle_t *DMA_Handle_t *uint16_t
uint16_t
volatile uint32_t
volatile uint32_t

SPI ベースアドレス
SPI コンフィギュレーション型
送信データ領域へのポインタ
要求送信サイズ
送信済みサイズ
受信データ領域へのポインタ
受信要求サイズ
受信済みサイズ
送信用 DMA ハンドラ
受信用 DMA ハンドラ
転送モード
SPI ポート番号
SPI の状態
SPI エラーコード

10
11
12
13

表 4.2.2.1.2 SPI ハンドラ型
TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

17

① ModeSPI 通信モード
定義

値

SPI_MODE_SLAVESPI_MODE_MASTERSPI_MODE_RESET_ERRORSPI_SSPCR1_MS
0x00000000
0x80000000

内容

スレーブモード
マスターモード
転送エラー時、状態設定を戻す

表 4.2.2.1.3 Mode 設定値② Direction
SPI の転送指定。
定義

値

SPI_DIRECTION_2LINESSPI_DIRECTION_1LINE_RX
SPI_DIRECTION_1LINE_TX

(0)
(1)
(2)

内容

2 ライン転送
1 ライン受信転送
1 ライン送信転送

表 4.2.2.1.4 Direction 設定値③ DataSize
SPI の転送サイズ指定
定義

値

SPI_DATASIZE_4BIT
SPI_DATASIZE_5BIT
SPI_DATASIZE_6BIT
SPI_DATASIZE_7BIT
SPI_DATASIZE_8BIT
SPI_DATASIZE_9BIT
SPI_DATASIZE_10BITSPI_DATASIZE_11BITSPI_DATASIZE_12BITSPI_DATASIZE_13BITSPI_DATASIZE_14BITSPI_DATASIZE_15BITSPI_DATASIZE_16BITSPI_SSPCR0_DSS_4
SPI_SSPCR0_DSS_5
SPI_SSPCR0_DSS_6
SPI_SSPCR0_DSS_7
SPI_SSPCR0_DSS_8
SPI_SSPCR0_DSS_9
SPI_SSPCR0_DSS_10
SPI_SSPCR0_DSS_11
SPI_SSPCR0_DSS_12
SPI_SSPCR0_DSS_13
SPI_SSPCR0_DSS_14
SPI_SSPCR0_DSS_15
SPI_SSPCR0_DSS_16

内容

4 ビット転送5 ビット転送
6 ビット転送7 ビット転送8 ビット転送9 ビット転送
10 ビット転送
11 ビット転送
12 ビット転送
13 ビット転送
14 ビット転送
15 ビット転送
16 ビット転送

表 4.2.2.1.5 DataSize 設定値④ CLKPolarity
SPI 転送クロック極性定義。
定義

SPI_POLARITY_LOW
SPI_POLARITY_HIGH

値0x00000000
SPI_SSPCR0_SP0

内容

極性 LOW
極性 HIGH

表 4.2.2.1.6 CLKPolarity 設定値⑤ CLKPhase
SPI 転送クロック位相定義。
定義

SPI_PHASE_1EDGE
SPI_PHASE_2EDGE

値

0x00000000
SPI_SSPCR0_SPH

内容

前縁ラッチ
後縁ラッチ

表 4.2.2.1.7 CLKPhase 設定値⑥ FrameFormat
SPI のフレームフォーマットを設定する。
定義

値

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

内容18

SPI_MOTOROLA_MODE
SPI_TI_MODE
SPI_MICROWARE_MODE

SPI_SSPCR0_MOTOROLASPI_SSPCR0_TI
SPI_SSPCR0_MICROWARE

モトローラ・フォーマット
テキサスインスツルメンツ・モード
マイクロウェア・モード

表 4.2.2.1.8 FrameFormat 設定値⑦ DMARxChannl
SPI の受信 DMA のチャネル番号を設定する。
⑧ DMATxChannel
SPI の送信 DMA のチャネル番号を設定する。
⑨ semid
DMA 転送終了割込みをドライバに伝えるためのセマファ ID。
⑩ semlock
タスク間で、関数をロックするためのセマフォ ID。

4.2.2.2

インターフェイス仕様

SPI を制御するドライバ関数は以下の通りである。SS の設定は、GPIO を使って別途制御しなければならない。TOPPERS BASE PLATFORM(ST)の SPI 設定は、AUTO モードオフなので、SPI 用のサン
プルプログラムは、この設定になっている。
関数名

型

引数

機能

spi_init

SPI_Handle_t*

ID portid
SPI_Init_t *spii

spi_deinit
spi_reset
spi_transmit

ER
ER
ER

spi_receiveER

spi_transrecv

ER

spi_isrvoid

SPI_Handle_t* hspi
SPI_Handle_t* hspi
SPI_Handle_t* hspi
uint32_t slave_selectuint8_t *tx_buf
uint32_t len
SPI_Handle_t* hspi
uint32_t slave_selectuint8_t *rx_buf
uint32_t len
SPI_Handle_t* hspi
uint32_t slave_selectuint8_t *tx_buf
uint8_t *rx_buf
uint32_t len
intptr_t exinf

指定ポート ID の SPI ペリフェラルを初期化し、ハンドラへのポインタを返す
SPI を未使用状態に戻す
SPI をリセットする
SPI 送信を行う。転送終了まで関数内で待ちとなる。

備考

SPI 受信を行う。転送終了まで関数内で待ちとなる。
SPI 送受信を行う。転送終了まで関数内で待ちとなる。

SPI 割込みサービスルーチン

表 4.2.2.2.1 SPI ドライバ関数

4.2.2.3

フローチャート

SPI ドライバは、FIFO による通信を指定するように設計しています。SPI の初期設定は、spi_init
関数を指定して対象ポート番号と初期設定したコンフィギュレーション構造体のポインタを指定します。
ペリフェラルには受信のみ、送信のみ、送受信があり、それぞれの転送関数を用意しています。転送
待ちは各関数内で行われます。実際はほとんどの場合、spi_transsrev ですべての転送を行えます。転送の終了待ちを行う場合、spi_wait 関数を呼び出せば関数内で終了待ちを行います。SPI ハンドラ内のErrorCode は表 4.2.2.3.1 のように制御中に発生したエラーを格納する。
TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

19

定義

SPI_ERROR_NONE
SPI_ERROR_OVR
SPI_ERROR_TIMEOUT

値

0x00000000
0x00000004
0x00000020

内容

エラーなし
オーバーランエラー
ステート変更タイムアウト

表 4.2.2.3.1 ErrorCode の内容
図 4.2.2.3.1 に SPI の初期化フローチャートを記載します。SPI 割込み、通信と排他制御用セマフォの静的 API を用いて登録する。

図 4.2.2.3.1 SPI 初期化フローチャート
図 4.2.2.3.2 に SPI の送受信のフローチャートを記載します。複数のスレーブの対応を行う場合は、
SS の設定を行わなければならない。送受信の処理は、送信のみの通信や受信のみの通信であっても、
spi_tranrecv 関数で処理を代用できる。送信のみの通信でこの関数を使用した場合、受信データとして0xFF が受信され、受信のみの通信でこの関数を代用した場合、送信データとして 0xFF をパディング
した方が安全である。
送受信の場合、送信と同期して受信データが受信領域にセットされる。転送待ちは関数内で行う。戻
り値が E_OK 以外はエラーが発生している。
エラーの詳細は SPI ハンドラの errorcode にセットされる。

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

20

図 4.2.2.3.2 SPI 送受信フローチャート

4.2.3 I2C
I2C（アイ・スクエア・シー）は周辺機との通信用にフィリップス社が開発した低速なシリアルバス
である。メインボード側がマスタ、周辺機側がスレーブとなり、スレーブアドレスをキーにデータの送受信を行う。基本的な通信速度は 100kbit/sec の通常モードと 10kbit/sec の低速モードがあるが、基本
以上、または、基本以下の速度で通信を行う場合も多い。スレーブアドレスは通常は７ビットであるが、拡張として１０ビットのスレーブアドレスも通信可能となっている。
I2C は SCL（クロック）と SDA（データ）の２つの線で通信を行う、周辺機が複数ある場合はこの２つの線を共有する形となる。マスタ側が常に制御権を持っており基本のクロック SCL はマスタ側が設定する。但し、スレーブ側で待ちが必要な場合は、スレーブ側 SCL 信号を Low に落として待ち状態を作る。送信を行う場合は、送信側がクロックに合わせて SDA 上にデータ信号を乗せる。最後の８ビ
ット目で受信側が SDA を Low にした場合は ACK となり、Hi のままならば NACK となる。スレーブ
アドレス 7bit の一般的なデータ転送を図 4.2.3.1 に示す。

図 4.2.3.1 スレーブアドレス 7bit のデータ転送

4.2.3.1

データ仕様

I2C ドライバは初期化用の型として、表 4.2.3.1.1 の I2C コンフィギュレーション型と、ハンドラとして表 4.2.3.1.2 の I2C ハンドラ型を持つ。SoC に I2C 用の IP はないため、本ドライバは GPIO のソ
TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

21

フト制御で実装している。SDA のデータ入力が不定のため、送信のみ実行可能となっている。
番号

項目

型

機能

1
2
3
4
5
6
7

Bardrate
SpeedMode
OwnAddress
AddressingMode
GeneralCallModesemid
smlockuint32_t
uint32_t
uint32_t
uint32_t
uint32_tintint

I2C のクロック値
I2C コアのスピード設定モード
I2C スレーブの場合のスレーブアドレス
I2C アドレッシングモード
I2C ジェネラルコールのアドレッシングモード
終了割込みをドライバに伝えるためのセマフォ ID
排他制御用セマフォ ID(0 で排他制御なし)

表 4.2.3.1.1 I2C コンフィギュレーション型
本ドライバは SCL と SDA に GPIO を指定してソフトウェア制御で I2C 制御を行う設定となっているため、コンフュギュレーション型は、ロック制御を行うセマフォ以外の設定はない。smlock は、ドライバの排他制御に使用するセマフォ番号を指定する。ゼロの設定で排他制御なしとなる。
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

base
Init
txsize1
txsize2
rxsizetxcount1
txcount2
rxcount
txbuf1
txbuf2rxbuf
slave_transwritecallback
readcallback
finishcallback
errorcallback
i2cno
statusErrorCodeuint32_t
I2C_Init_t
uint32_t
uint32_t
uint16_t
uint16_t
uint16_t
uint16_t
uint8_t *uint8_t *uint8_t *bool_tvoid(*)()
void(*)()
void(*)()
void(*)()
uint32_t
uint32_t
uint32_t

I2C ベースアドレス
I2C コンフィギュレーション型
I2C ポート ID
ナノ秒単位のクロック待ち時間
SCL のピン番号
SDA のピン番号
GPIO の PULLUP 設定保存領域
GPIO の IOF 設定保存領域

送信終了コールバック

I2C ポート番号
現在の実行状態
I2C エラーコード

表 4.2.3.1.2 I2C ハンドラ型

4.2.3.2

インターフェイス仕様

I2C を制御するドライバ関数は以下の通りである。
関数名

型

引数

機能

i2c_init

I2C_Handler*

ID portid
I2C_Init_t *ii2ci2c_deinit
i2c_slaveactivei2c_slavewrite

ER
ER
ER

I2C_Handler* hi2c
I2C_Handler* hi2c
I2C_Handler* hi2ci2c_slavereadER

I2C_Handler* hi2c
uint8_t data

指定ポート ID の I2C ペリフェラルを初期化し、ハンドラへのポインタを返す
I2C を未使用状態に戻す
スレーブモードを設定する
スレーブモードのデータ送信、コー
ルバック関数で送信
スレーブモードのデータ受信、コー
ルバック関数で受信

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

備考

22

i2c_masterwrite(i2c_memwrite)ER

i2c_masterread(i2c_memread)ER

I2C_Handler* hi2c
uint16_t DevAddr
uint16_t MemAddr
uint16_t MemAddSize
uint8_t *pData
uint16_t Size
I2C_Handler* hi2c
uint16_t DevAddr
uint16_t MemAddr
uint16_t MemAddSize
uint8_t *pData
uint16_t Size

マスターモードのデータ送信、
MemAddSize をゼロにするとアドレス設定を行わない

マスターモードのデータ受信、
MemAddSize をゼロにするとアドレス設定を行わない

表 4.2.3.2.1 I2C ドライバ関数

4.2.3.3

フローチャート

I2C の初期設定は、i2c_init 関数を指定して対象ポート番号と初期設定したコンフィギュレーション
構造体のポインタを指定します。本実装ではマスタ機能のみの実装となっています。基本的に、このドライバではタスク上でデータの送受信を行います。また、スタート、ストップ、ACK 処理はソフトウ
ェア処理にて処理しますので、特別にデータを管理する項目を用意する必要はありません。
図 4.2.3.3.1 に初期化のフローチャートを示します。i2c_init で取得した I2C ハンドラへのポインタは
以後、I2C の制御用に使用する。

図 4.2.3.3.1 初期化フローチャート
図 4.2.3.3.2 にマスタのデータ送信のフローチャート、図 4.2.3.3.3 に受信のフローチャートを示します。送信ならば i2c_masterwrite(i2c_memwrite)、受信ならば i2c_masterread(i2c_memread)関数を呼び出せば指定サイズの送受信が行えます。送受信の結果は、関数の戻り値確認できます。E_OK 以外の戻り値の場合エラー処理を行ってください。ペリフェラルには、データアドレスを持つもの（EEPROMや RTC など）があり、送受信のとき、データアドレスの設定を行う必要があります。この場合、MemAddr
でデータアドレス、MemAddSize でデータアドレスのバイトサイズを指定します。データアドレスの設定を行わない場合は、MemAddrSize をゼロして、送受信関数を呼び出します。
I2C ペリフェラルを終了させたい場合は、引数として I2C ハンドラへのポインタを指定して i2c_deinit関数を呼び出せば、ペリフェラルとハンドラは未使用状態に戻ります。ErrorCode はアプリケーションのプログラム互換用に項目を用意しており、エラーコードは設定されません。

定義

I2C_ERROR_NONE

値

0x00000000

内容

エラーなし

表 4.2.3.3.1 ErrorCode の内容

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

23

図 4.2.3.3.2 I2C 送信フローチャート

図 4.2.3.3.3 I2C 受信フローチャート

4.2.4 ADC
ADC(アナログ・データ・コントローラ)は、アナログ入力データをデジタル・データに変換するドライバである。

4.2.4.1

データ仕様

ADC ドライバは初期化用の型として、表 4.2.4.1.1 の ADC コンフィギュレーション型と、ハンドラ
として表 4.2.4.1.4 の ADC ハンドラ型を持つ。ADC の設定後、チャネルの設定用に表 4.2.4.1.2 の ADC
チャネル設定型がある。
番号

項目

型

機能

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

24

1
2
3
4

ClockPrescaler
FIFOMode
ConvertCount
RxDMAChannel

uint32_t
uint32_t
uint32_t
int32_t

ADC クロックプリスケーラ値
ADC のリゾリューション
ADC 結果データアライン設定
ADC の DMA 受信チャネル番号(-1 で DMA を使用しない)

表 4.2.4.1.1 ADC コンフィギュレーション型
番号

項目

型

機能

1
2

ChannelGpioPinuint32_t
uint32_t

ADC チャンネル番号
ADC-GPIO ピン番号

表 4.2.4.1.2 ADC チャネル設定型
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10
11

base
Init
hdmarxRxBuf
Count
xfercallback
errorcallback
dstaddrtranslenstatusErrorCodeuint32_t
ADC_Init_t
DMA_Handle_t*
uint32_t*
int32_tvoid (*)()
void (*)()
uint32_t
uint32_t
volatile uint32_t
volatile uint32_t

ADC ペリフェラルのベースアドレス
ADC 初期化設定パラメータ
ADC 受信 DMA のハンドラ
コンバージョン受信データ領域へのポインタ
ADC コンバージョンカウンタ
転送完了時のコールバック関数

ADC エラー発生時のコールバック関数
ADC デスティネーションアドレス
ADC 転送数
ADC の状態
ADC エラーコード

表 4.2.4.1.3 ADC ハンドラ型① ClockPrescaler
ADC クロック分周設定。0 から 65535 までの分周値② FIFOModeADCFIFO モード設定。
定義

値

ADC_VALUE_SHIFTADC_ERROR_CONVERT

内容

ADC_FCS_SHIFTADC_FCS_ERR

設定により結果値を右シフトする
エラーの場合、結果を FIFO に置く

表 4.2.4.1.4 FIFOmode 設定値③ ConvertCountADC 変換の変換数を指定する④ RxDMAChannel
ADC 変換結果転送に DMA を使用する場合、チャネル番号をド設定。
⑤ Channel
ADC のチャネル番号を設定（0～4）
。
⑥ GpioPin
ADC チャネルの GPIO のピン番号を設定。
GPIO ピンチャネル番号定義

0
1
2
4

26
27
28
-

温度センサーの入力チャネル

表 4.2.4.1.5 チャネルピン番号
TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

25

4.2.4.2 インターフェイス仕様
ADC を制御するドライバ関数は以下の通りである。入力ピンの設定は、GPIO を使って別途制御しなければならない。
関数名

型

引数

機能

adc_init

ADC_Handler*

ID portid
ADC_Init_t *pini

adc_deinit
adc_start_int
adc_end_int
adc_start_dma

ER
ER
ER
ER

adc_end_dma
adc_setupchannelERER

adc_set_int_bufferER

adc_getvalue

int32_t

ADC_Handler* hadc
ADC_Handler* hadc
ADC_Handler* hadc
ADC_Handler* hadc
uint32_t *pdata
uint32_t length
ADC_Handler* hadc
ADC_Handler* hadc
ADC_ChannelConf_t*
sConfig
ADC_Handler* hadc
uint32_t *pdata
ADC_Handler* hadc

指定ポート ID の ADC ペリフェ
ラルを初期化し、ハンドラへのポ
インタを返す
ADC を未使用状態に戻す
ADC 割込みモード開始
ADC 割込みモード終了
ADC DMA モード開始

adc_int_handler

void

void

備考

ADC DMA モード終了
ADC チャネル設定
ADC 割込み用のバッファポイン
タをセットする
ADC の現在の変換結果を取り込む
ADC 割込みハンドラ

表 4.2.4.2.1 ADC ドライバ関数

4.2.4.3 フローチャート
実行手順に影響を与えるモードは、以下の３つである。
(1) FIFOMode
変換データのフォーマットを設定する。
(2) ConvertCount
連続変換の場合、AD 変換回数を指定する。
(3) RxDmaChannel
変換結果の転送に DMA を使用する場合、DMA のチャネル番号を指定する。
変換の手順は、サンプルプログラム ADC を参照のこと。EXEC_MODE の設定で以下の変換を行う。
① EXEC_MODE=0 DMA CIRCULAR CONTINUOUS② EXEC_MODE=1 DMA CIRCULAR CONTINUOUS FREE RUN③ EXEC_MODE=2 割込み CONTINUOUS COUNT 設定④ EXEC_MODE=3 割込み NOT CONTINUOUS

4.2.5 USB
USB モジュールは、ホスト、デバイスの USB 管理を行うドライバである。USB のメインコントロ
ールレジスタの HOST_NDEVICE 設定により、USB ホスト、デバイスを選択が可能である。USB ホストとして動作させるためには USB ホストクラスドライバ、USB デバイスとして動作させるためにはUSB デバイスライブラリを上位のモジュールとして用意する必要がある。

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

26

4.2.5.1

データ仕様

USB ホストドライバと USB デバイスドライバで管理用のデータ定義が異なる。USB デバイス用の型として、表 4.2.7.1.1～3 の USB デバイス初期設定定義型、USB デバイスエンドポイント定義型、
USB デバイスハンドラを定義する。USB ホスト用の型として表 4.2.7.1.4～6 の USB ホスト初期設定
定義型 USB ホストエンドポイント定義、USB ホストハンドラ型を持つ。
番号

項目

型

機能

1
2
3

dev_endpoints
speed
sof_enable

uint32_t
uint32_t
uint32_t

デバイス用のエンドポイントの数(1-126)
USB コアスピード

デバイスモードでの SOF 割込みの有効無効設定

表 4.2.7.1.1 USB デバイス初期設定定義型
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10
11
12

num
is_in
is_stalltype
next_pid
endpoint_control
buffer_control
data_buffer
maxpacket
xfer_buff
xfer_lenrequest_countuint8_tuint8_t : 1
uint8_t : 1
uint8_t : 2
uint8_t : 1
uint32_t*
uint32_t*
uint8_t*uint32_t
uint8_t*uint32_t
uint32_t

エンドポイント番号(0-15)
エンドポイントのディレクション(1:IN 0:OUT)
スティール状態(1:スティール状態)
通信タイプ
エンドポイントの次の PID
エンドポイント制御領域へのポインタ
エンドポイントバッファ制御領域へのポインタ
データ領域へのポインタ
最大パケットサイズ
転送バッファポインタ
現在転送サイズ
指定の転送サイズ

表 4.2.7.1.2 USB デバイスエンドポイント定義型
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10
11

base
dpram
Init
IN_ep
OUT_ep*Setupusb_address
usb_suspend
ep0_out_length
usbno
devsetupstagecallback

uint32_t
USB_DEV_Dpram_t*
USB_DEV_Init_t
USB_DEV_EPTypedef
USB_DEV_EPTypedef
volatile uint8_t*
volatile uint8_t
uint8_tuint8_tuint8_tvoid(*)()

USB デバイスレジスタベースアドレス
USB デバイス PMA ベースアドレス
USB デバイス初期設定定義
エンドポイント IN の定義領域
エンドポイント OUT の定義領域
Setup パケットバッファ
USB アドレスUSB サスペンドモード
受信した EP0.OUT の長さ
USB デバイス番号（常に 0）

12

devdataoutstagecallback

void(*)()

13
14

devdatainstagecallback
devsofcallback

void(*)()
void(*)()

15
16
17
18
19

devresetcallback
devsuspendcallback
devresumecallback
devconnectcallback
devdisconnectcallback
devlpmcallback

void(*)()
void(*)()
void(*)()
void(*)()
void(*)()
void(*)()

デバイスセットアップステージコールバック
関数
デバイスデータアウトステージコールバック
関数
デバイス SOF 割込みコールバック関数
デバイスデータインステージコールバック関
数
デバイスリセットコールバック関数
デバイスサスペンドコールバック関数
デバイスレジュームコールバック関数
デバイスコネクトコールバック関数
デバイスディスコネクトコールバック関数
デバイス LPM コールバック関数

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

27

pDev

void *

上位デバイスハンドラ格納領域

表 4.2.7.1.3 USB デバイスハンドラ定義型
番号

項目

型

機能

1
2

host_channels
sof_enable

uint32_t
uint32_t

ホストチャネルの数(未使用)

デバイスモードでの SOF 割込みの有効無効設定

表 4.2.7.1.4 USB ホスト初期設定定義型
番号

項目

型

機能

1
2
3
4
5
6
7
8
8
9
10
11
12
13
14
15
16
17
18
19
20
21

dev_addr
ch_numep_numep_is_inspeed
do_ping
process_ping
ep_typemax_packet
data_pid
xfer_buff
xfer_len
xfer_countremain_len
toggle_intoggle_out
endpoint_control
buffer_control
data_buffer
next_pid
urb_state
state

uint8_tuint8_tuint8_tuint8_tuint8_tuint8_tuint8_tuint8_tuint16_t
uint8_tuint8_t *uint16_t
uint16_t
uint16_t
uint8_tuint8_tuint32_t *uint32_t *uint8_t *uint8_tvolatile uint8_t
volatile uint8_t

USB デバイスアドレス(1-255)
HOST チャネル番号(1-10)
エンドポイント番号(1-15)
エンドポイントのディレクション
USB Host のスピード
HS モードの PING プロトコルの有無
PING プロトコル実行中フラグ(1 で実行中)
エンドポイントタイプ(0-3)
最大パケットサイズ(64B 以内)
初期設定データの PID
送受信バッファへのポインタ
現在転送サイズ
指定の転送サイズ
残り転送サイズIN 転送のトグルフラグ
OUT 転送のトグルフラグ
エンドポイント制御領域へのポインタ
エンドポイントバッファ制御領域へのポインタ
データ領域へのポインタ
次の PID
URB ステート
HOST チャネルのステート

表 4.2.7.1.5 USB ホストクラス定義型
番号

項目

型

機能

1
2
3
4
5
6
7
8
9
10
11
12
13

base
dpram
Init
hc[15]
enabledconnected
intep0_ch
usbno
hostsofcallback
hostconnectcallback
hostdisconnectcallback
hostchangeurbcallback
pHost

uint32_t
USB_HOST_Dpram_t*
USB_HOST_Init_t
USB_HOST_HCTypeDef
uint8_tuint8_tuint8_tuint8_tvoid (*)()
void (*)()
void (*)()
void (*)()
void *

USB-OTG ペリフェラルのベースアドレス
USB ホスト PMA 領域へのポインタ
USB ホスト初期化設定パラメータ
ホストチャネル領域
デバイスイネーブル
デバイス接続中EP0 割込みチャネル番号
USB デバイス番号

ホスト用 SOF 割込みコールバック関数
ホストコネクト時コールバック関数
ホストディスコネクト時コールバック関数
ホスト URB 変更時コールバック関数
上位ホストハンドラ格納領域

表 4.2.7.1.6 USB ホストハンドラ型

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

28

4.2.7.2 インターフェイス仕様
USB デバイスを制御するドライバ関数を表 4.2.7.2.1 に、USB ホストを制御するドライバ関数を表
4.2.7.2.2 に記載する。
関数名

型

引数

機能

usbd_init

USB_DEV_
Handler*

ID portid
USB_DEV_Init_t *pini

usbd_deinitER

USB_DEV_Handler* husb

usbd_devconnect
usbd_devdisconnect
usbd_setDevAddress

ER
ER
ER

usbd_activateEndpoi
nt
usbd_deactivateEndp
oint
usbd_epstartreceiveERER

usbd_epstartsend

ER

usbd_epsetStallER

usbd_epclearStallER

usbd_setupepdata

ER

usb_isrvoid

USB_DEV_Handler* husb
USB_DEV_Handler* husb
USB_DEV_Handler* husb
uint8_t address
USB_DEV_Handler* husb
USB_DEV_EPTypeDef *ep
USB_DEV_Handler* husb
USB_DEV_EPTypeDef*ep
USB_DEV_Handler* husb
USB_DEV_EPTypeDef*ep
USB_DEV_Handler* husb
USB_DEV_EPTypeDef*ep
USB_DEV_Handler* husb
USB_DEV_EPTypeDef*ep
USB_DEV_Handler* husb
USB_DEV_EPTypeDef*ep
USB_DEV_Handler* husb
uint16_t ep_addr
uint8_t ch_num
intptr_t exinf

指定ポート ID の USB
デバイスペリフェラル
を初期化
USB デバイスモジュー
ルの無効化
デバイス接続設定
デバイス切断設定
確定したデバイスアド
レスを設定
エンドポイントを有効化設定
エンドポイントを無効化
エンドポイント受信を開始する
エンドポイント送信を開始する
エンドポイントをステ
ィール状態に移行する
エンドポイントのスティール状態を解除する
エンドポイントのデータ領域を設定する

ER

備考

USB 割込みサービスルーチン

表 4.2.7.2.1 USB デバイスドライバ関数
USB OTG を制御するドライバ関数は以下の通りである。
関数名

型

引数

機能

usbh_init

USB_OTG_
Handler*

ID portid
USB_HOST_Init_t *pini

usbh_deinit

ER

USB_HOST_Handler* husb

usbh_coreinit

ER

USB_HOST_Handler* husb

usbh_setupint
usbh_enableglobalint
usbh_hostinit
usbh_starthostusbh_resethostusbh_drivevbus

ER
ER
ER
ER
ER
ER

usbh_gethostspeed

uint32_t

USB_HOST_Handler* husb
USB_HOST_Handler* husb
USB_HOST_Handler* husb
USB_HOST_Handler* husb
USB_HOST_Handler* husb
USB_HOST_Handler* husb
uint8_t state
USB_HOST_Handler* husb

指定ポート ID の USB
ホストペリフェラルを初期化
USB ホストモジュールの無効化
USB ホストコアの初期化
USB ホスト割込み設定
未処理
USB ホスト初期化する
未処理
未処理
ホスト用 VBUS のオン
オフ設定を行う
ホストのコアスピード
を取り出す

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

備考

29

usbh_getcurrentspeedusbh_hc_init

uint32_t

USB_HOST_Handler* husb

常に 0

ER

ホストチャネルの初期化

usbh_hc_startxfer

ERusbh_hc_haltERusbh_stophost
usb_isrER
void

USB_HOST_Handler* husb
uint8_t chnum
uint8_t epnum
USB_HOST_Handler* husb
uint8_t chnum
USB_HOST_Handler* husb
uint8_t chnum
USB_HOST_Handler* husb
intptr_t exinf

ホストチャネルの送信
要求
ホ スト チ ャ ネ ルを
HALT 状態にする
ホストコア停止
USB 割込みサービスルーチン

表 4.2.7.2.2 USB ホストドライバ関数

4.2.7.3 フローチャート
USB モジュールはホスト機能とデバイス機能をもつペリフェラルである。ホスト機能をデバイスの接続を待って以下の機能を実行する。
(1) ホスト処理
サンプルプログラム USBH を参照のこと。
(2) デバイス処理
サンプルプログラム USBD を参照のこと。

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

30

5 タスクモニタ
本章では、標準入出力機能付きのタスクモニタの仕様に関して記載する。

5.1 概要タスクモニタはタスク上で動作し、デバッグ用のコマンドを用いてプラットフォーム部の機能確認やテストを行う。デバックコマンドは設定によりコマンド追加が可能である。これによりアプリケーショ
ンでも、アプリケーション用デバッグコマンドを追加することができる。タスクモニタの入出力は標準入出力に対して行う、デフォルトの標準入出力は FMP カーネルにて実装されているシリアルデバイス
であるが、入出力の切り替えにより、telnet の端末等に切り替えが可能である。

5.2 標準入出力
タスクモニタの入出力は標準入出力に対して行う。標準入出力は FILE 型を定義し、入力、出力、エラーの３つの FILE へのポインタを以下の名称で定義することで実現する。
① stdin② stdout③ stderr
FILE 型は表 5.2.1 の構成となる。FILE 型は fread や fwrite でファイルにアクセスする場合のハンドラとして使用される。
番号

項目

型

機能

1
2
3
4
5
6
7
8

_flags_file_func_in_func_ins_func_out_func_outs_func_flush
_dev

int
int
int
int
void
int
int
void *

ファイル用フラグ
ファイル番号
1byte 入力コールバック関数
n bytes 入力コールバック関数
1byte 出力コールバック関数
n bytes 出力コールバック関数
データフラッシュコールバック関数
デバイス構造体へのポインタ

表 5.2.1 FILE 型
標準入出力では、以下の関数をサポートする。
関数名

型

引数

機能

fgetc
fgets

int
int

ファイルから 1byte 読み込みファイルから文字列読み込み

fputc

int

fputs

int

putcharputs
printf

int
int
int

sprintf

int

scanf

int

sscanfint

fflushint

FILE *fp
char *c
FILE *fp
int c
FILE *fp
const char *str
FILE *
int c
const char *str
const char const…
char *cconst char const…
const char const…
char *cconst char const…
FILE *fp

備考

ファイルに 1byte 書き込みファイルに文字列書き込み
1byte 書き込み
文字列を標準出力に書き込み
標準出力へのプリント
バッファへプリント

標準入力からスキャン
スキャンしバッファにセット

結果は項目
数
結果は項目
数
結果は項目
数
結果は項目
数

ファイルのフラッシュ

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

31

freadsize_tfwritesize_tfprintf

int

putc

int

getchar
getc

int
int

void *buf
size_t len
size_t num
FILE *fp
const void *buf
size_t len
size_t num
FILE *fp
FILE *fp
const char *const…
int c
FILE *fp
FILE *fp

ファイルからデータ読み込み

結果は num数

ファイルへデータ書き込み

結果は num数

ファイルへプリント

結果は項目数

fputc と同様
標準入力から 1byte 読み込み
fgetc と同様

表 5.2.2 サポートしている標準入出力関数

5.3 標準デバッグコマンド
タスクモニタは、標準のデバッグコマンドとして以下のコマンドをサポートする。タスクモニタのデバッグコマンドは第１（カテゴリ）、第２の２つのコマンドで機能を指定する形をとる。また、コマンドを設定する場合、最初の１文字以降を省略可能である。省略名で同一のコマンドがある場合、はじめにディスパッチするコマンドが選択される。
第１コマンド第２コマンド引数

DISPLAY

BYTE
start address[hex]
HALF
start address[hex]
WORD
start address[hex]TASK
REGISTER
SET
BYTE
set address[hex]
HALF
set address[hex]WORD
set address[hex]COMMAND
mode[1 or 2]
SERIAL
portnoTASKtaskidTASK
ACTIVATETERMINATE SUSPENDRESUMERELEASE
WAKEUPPRIORITY
priority
LOG
MODE[logmask][lowmask]
TASK[time]
PORT[no][logno][portaddress]
HELP
Arg1
表 5.3.1 標準デバッグコマンド

機能

バイト単位でメモリ DUMP する
２バイト単位でメモリ DUMP する
４バイト単位でメモリ DUMP する
タスクの状態を表示する
CPU レジスタの内容を表示する
バイト単位で、メモリ内容を変更する
２バイト単位で、メモリ内容を変更する
４バイト単位で、メモリ内容を変更する
デフォルト 2、1 の場合最初の 1 文字のみ比較
標準入出力のシリアルポート番号を変更
TASK コマンドの対象タスクを指定する
タスクの起動要求(act_tsk)
タスクを終了する(ter_tsk)
タスクの待ち要求(sus_tsk)
タスクの待ち再開(rsm_tsk)
タスクの待ち解除(rel_wai)
タスクの起床(wup_tsk)
タスクの優先度を変更する
syslog の表示モードを変更する
タスクの実行状態表示(指定が必要)
ポートアクセスログ
コマンドヘルプ

DEVICE ドライバをサポートした場合、以下のコマンドを追加でサポートする。
第１コマンド第２コマンド

引数

機能

DEV

CLK
VER

0～9
-

指定のデバイスの現在のクロックを表示
バージョンを表示、PICO W の場合、cyw43 のバージョン等を表示

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

32

RDT
year month day
RTMhour min sec
RAL
count
RST
LED
number on/off
DIP
number on/off
CUP
command
表 5.3.2 DEVICE デバッグコマンド

日にちを設定、または、表示
時間を設定、または、表示
アラームカウントを設定
ソフトリセットする
LED を点灯消灯
ソフト DIP SW のオンオフ
1 文字を get_cup_commnad()に送る

ファイルライブラリが追加された場合、以下のコマンドを追加でサポートする。
第１コマンド第２コマンド

引数

機能

VOLUMEFORMAT
drive
DIR
path
MKDIR
path
RMDIR
path
ERASE
path
表 5.3.3 ファイルデバッグコマンド

ドライブのフォーマット(未サポート)
ディレクトリの表示
ディレクトリの作成
ディレクトリの消去
ファイルの消去

5.4 デバッグコマンド拡張
タスクモニタは、コマンドを拡張する機能を持つ。コマンドの拡張は第１（カテゴリ）コマンド単位で追加される。

5.4.1 データ仕様
コマンド追加には２つの型を使用する。COMMAND_INFO 型は第２コマンドの設定を行い、COMMAND_LINK 型 は、 複 数 の COMMAND_INFO 型を ま と め て 登録 カ テ ゴ リ を 指 定す る。
COMMAND_LINK 型 の pcnext は デ バ ッ グ コ マ ン ド の リ ン ク に 使 用 す る 、 そ の た め 、COMMAND_LINK は値付きの変数で作成しなければならない。
番号

項目

型

機能

1
2

commandfunc

const char *int_t (*)()

第２コマンド名
第２コマンド関数へのポインタ

表 5.4.1.1 COMMAND_INFO 型
番号

項目

型

機能

1
2
3
4
5
6

pcnextnum_command
commandfunc
help
pcinfoCOMMAND_LINK *int
const char *int_t (*)()
const char *COMMAND_INFO *COMMAND_LINK のチェーン用
第２コマンドの数
第１（カテゴリ）コマンド名
カテゴリコマンドの実行関数（通常は NULL）
カテゴリの HELP メッセージ
COMMAND_INFO の配列へのポインタ

表 5.4.1.2 COMMAND_LINK 型

5.4.2 インターフェイス仕様
デバッグコマンドの追加は、COMMAND_LINK のインスタンスへのポインタを引数に以下の関数コールにて追加される。
関数名

型

引数

機能

setup_command

int

COMMAND_LINK *コマンドカテゴリを追加する

備考

表 5.4.2.1 デバッグコマンド追加定関数

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

33

6 API 層
API 層はアプリケーションに対して標準的なインターフェイスを提供する層である。この層はハードウェアや RTOS の仕様に影響されず、一意のインターフェイスを提供することにより、アプリケーショ
ンを汎用的に作成することができる。また、C 言語の規約や POSIX のように汎用的な API に準拠すれ
ば、LINUX 等のオープンソースのライブラリを未修整で使用することができる。

6.1 概要TOPPERS BASE PLATFORM でサポートするストレージ機能で使用するファイルシステムと時刻の管理を行う時間管理の２つの API について説明を行う。
FE310-G000 環境では、使用可能な RAM サイズが小さくファイルシステムは動作しない。

6.2 ファイルシステム
ファイルシステムは TOPPERS BASE PLATFORM で提供するストレージ機能である。ファイルシ
ステムは以下の３つのモジュールで構成される。
① ファイルライブラリ
Ｃ言語標準のファイル関数をサポートするライブラリ② ストレージデバイスマネージャー
ストレージデバイスの管理モジュール③ FATFs
赤松武史氏が開発し、フリーソフトウェアとして公開されている、FAT 仕様準拠のローカルファイルシステム
TOPPERS BASE PLATFORM アプリケーション、ハードウェアを除く部分を供給している。
内容は、TOPPERS BASE PLATFORM(ST)を参照してください。

6.3

USB ミドルウェア

USB ミドルウェアとして、TOPPERS USB MIDDLEWARE を対応する。これは USB OTG デバイ
ス用の USB ホスト、デバイス機能、USB デバイスに対して USB デバイス機能を提供する。内容は、
TOPPERS BASE PLATFORM(ST)を参照してください。

6.4 UI ミドルウェア
UI ミドルウェアとして、グラフィック LCD に対して、図形描画、文字描画を行うインターフェイス
を追加する。図形描画の API は GDIC/adafuit_st7735 の描画関数を使用する。文字描画は、TOPPERSECHONET WG で作成した東雲フォントの文字環境に対応できるように設計した。内容は、TOPPERSBASE PLATFORM(ST)を参照してください

6.5 LWIP ミドルウェア
TCP/IP スタック lwip の拡張手順について記載する。
現状 lwip は以下のバージョンに対応している。
RTOS 上で実行するには問題があるソースに関しては PATCH を用意している。
・lwip-2.1.3
3 つのパッチ・contrib-2.1.0
3 つのパッチ
ASP/FMP カーネル用のドライバを contrib-2.1.0/ports/toppers に追加している。WIFI ドライバはlwip の ETHERNET を gdic の wifi(cyw43)ドライバにて接続を行う。
lwip のポーティング方法は、TOPPERS BASE PLATFORM(CV)を参照してください。

6.6 RTOS 隠蔽機能
pdic ディレクトリの直下に base_platform.h インクルード ファ イルを置く、このファイルは
TOPPERS BASE PLATFORM 内の以下のモジュールから参照される。このファイル内に RTOS とのTOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

34

API のマクロ化定義を行い。マクロ定義を書き換えることにより、種々の RTOS の API に対応することができる。このマクロを参照するディレクトリは 7.1 共通部に記載。内容は、TOPPERS BASE
PLATFORM(ST)を参照してください

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

35

7 ファイルの構成
TOPPERS BASE PLATFORM のソースファイル構造について記載する。共通部はファイルシステム
やタスクモニタ等共通となる部分について記載する。BASE PLATFORM のソフトウェア部品は asp のベースディレクトリ上に配置する。

7.1 共通部
共通部のディレクトリ構成を表 7.1.1 に示す。
ディレクトリ

内容

備考

files
monitor
gdic
lwip
pdic
syssvcui
usb

ファイルシステムのソースとインクルードファイル
タスクモニタと標準入手力のソースとインクルードファイル
GDIC ドライバ
lwIP V2.1.3 のソースファイル置き場所
PDIC ドライバ、RISC/V ボード依存ドライバを持つ
malloc,calloc,free 関数
GLCD に文字、グラフィックデータ表示
USB ホスト、デバイスのミドルウェア

RTOS 隠蔽化対応
RTOS 隠蔽化対応
RTOS 隠蔽化対応
RTOS 隠蔽化対応
RTOS 隠蔽化対応

表 7.1.1 共通部ディレクトリ
pdic の直下に RTOS 隠蔽用のインクルードファイル base_platform.h を置く。

7.2 PDIC(Base/Standard)ドライバ
RP2040 用 Base/Standard 用ドライバ部は pdic/fe310 にソースファイルがある。
ファイル

内容

備考

device.cdevice.cfg
device.h
adc.c
adc.h
i2c.c
i2c.h
spi.c
spi.h
pinmode.cpinmode.hpio_spi.c
pio_spi.h
pwm.c
pwm.h
usb_device.c
usb_device.c
usb_host.c
usb_host.h
pinmode.hpinmode.crp2040.h

GPIO,DMA,WDOG,RTC,LED,SW ドライバ・ソースファイル
LED,SW の RTOS リソースファイル
GPIO,DMA,LED,SW ドライバ・インクルードファイル
ADC ドライバ・ソースファイル
ADC ドライバ・インクルードファイル
I2C ドライバ・ソースファイル
I2C ドライバ・インクルードファイル
SPI ドライバ・ソースファイル
SPI ドライバ・インクルードファイル
Arduino コネクタピン配列関数変換プログラム・ソースファイル
Arduino コネクタピン配列関数変換プログラム・インクルードファイル
Cyw43 用 SPI ドライバ・ソースファイル
Cyw43 用 SPI ドライバ・インクルードファイル
PWM ドライバ・ソースファイル
PWM ドライバ・インクルードファイル
USB デバイスドライバ・ソースファイル
USB デバイスドライバ・インクルードファイル
USB ホストドライバ・ソースファイル
USB ホストドライバ・インクルードファイル
Arduino の GPIO ピン設定・ソースファイル
Arduino の GPIO ピン設定・インクルードファイル
RP2040 デバイスアドレス定義ファイル

Base
Base
Base

PICO W 用
PICO W 用

表 7.2.1 PICO ドライバファイル

7.3 GDIC ドライバ
ディレクトリ gdic 以下に GDIC ドライバを持つ。GDIC ドライバは PDIC に依存性し、デバイスに依存した機能を提供する。
ディレクトリ

内容

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

備考

36

usb_device
usb_host
spi_driveradafruit_st7789
aqm1284_st7565
aqm0804_st07032
cyw43

usb_device 上に位置し、USB ミドルウェアにてデバイス機能を提供する
usb_host 上に位置し、USB ミドルウェアにてホスト機能を提供する
SPI インターフェイスの SD カード用ドライバ、ファイルシステムに
SD カードドライバを提供する
SPI インターフェイスの Adafruit 1.54”LCD に対して、グラフィック
API を提供する
SPI インターフェイスの AQM1284 LCD に対して、
グラフィック API
を提供
I2C インターフェイスの AQM0804LCD に対してキャラクタ API を提供
Cyw43 通信用ドライバ群

PICO(W)用PICO W 用

表 7.3.1 GDIC ディレクトリ

8 変更履歴Version 1.4.4 以降の変更履歴を記載する。
versiondate

functions

1.4.5

7/13/2023
8/12/2023

lwIP の OPTTEST 用 TCPIP ロック機能を追加
pdic ドライバ中のビット演算を修正(別コアアクセス時のデータ化け対応)
device.c/pio_spi.c/pwm/c
fmp カーネルのマルチコアで G_SYSLOG 設定時、システムログと標準出力時の排他制御を行う。ネットワークモニタ用に標準出力処理の変更

10/26/2023
11/13/2023

Adfruit2.8”シールド LCD 表示テストプログラムを追加、RTC_INIT_ACTIVE
コンパイルスイッチで初期化時、RTC をアクティブにする機能を追加

11/14/2023

DMA 割込みの不具合対応：チャネルを 0 から順番に使わないとハングア
ップ
TEB003 を REV.D に修正
ADC ドライバの温度センサー値を取り出せない不具合の対応、マルチファ
ンクションシールドのサンプルプログラムを追加
USB デバイス MSC を追加

11/20/2023
11/28/2023
12/12/2023

Appendix A Raspberry Pi PICO(W) TEB003(Arduino connector)ボード
TEB003 ボード依存仕様を記載する。
(1)Arduino connectors 定義
CN No.

Pin No.

Pin 名

MCU pin

機能

CN6
power

1
2
3
4
5
6
7

NC
IOREF
RESET
+3V3
+5V
GND
GND

VCC3P3
VCC5
GND
GND

3.3V Ref
3.3V input/output
5V output
GroundGroundTOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

37

CN8
analog

8
1
2
3
4
5
6

VIN
A0
A1
A2
A3
A4
A5

VCC9
GP26
GP27
GP22
GP28
GP0
GP1

Power input-

表 A.1.1 左 Arduino connector 設定
CN No.

Pin No.

Pin 名

MCU pin機能

CN5
digital

10
9
8
7
6
5
4
3
2
1
8
7
6
5
4
3
2
1

D15
D14
AREF
GND
D13
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0

GP21
GP20
AREF
GND
GP2
GP4
GP3
GP5
GP6
GP7
GP14
GP15
GP10
GP11
GP12
GP13
GP8
GP9

(SCL)
(SDA)
AVDD
Ground
CLK
MISO
MOSI
SS(CS0)
GP6
GP7
GP14
GP15
GP10
GP11
GP12
GP13
TX
RX

CN9
degital

表 A.1.2 右 Arduino connector 設定(2)サンプルプログラム
Program name

ADC
CORE1
I2C_SLAVE
i2cshield
iwhishieldlcdshield2
PWM
SPI
TIMER
sdlogshieldsdlogshield2

ulcdshieldshieldenvironment

detail

RTOS

TEB002 シー
ルド
TEB001I2C シールド
TEB002 シールド
Adfruit2.8” シールド
データロギングシールド
Arduino UNORAM

ADC テストプログラム

ASP

RAM
RAM
RAM

CORE1 テストプログラム
I2C スレーブテストプログラム
I2C シールドを使った I2C マスターテストプロ
グラム
グラフィック LCD 表示テストプログラム

ASP
ASP

Adfruit2.8”シールド LCD 表示テストプログラ
ム
LED を使った PWM テストプログラム
SPI ループバックテストプログラム
タイマーモジュールテストプログラム
温度を一定時間毎に、ファイルにログアウトする。
シールドの実行には、以下の追加工が必要。
A4-SDA,A5-SCL の接続をカット
SD カードを USB メモリとして使用する
シールドの実行には、以下の追加工が必要。
A4-SDA,A5-SCL の接続をカット
FMP カーネルの場合、UART を使ってプロセッ

FMP

データロギングシールド
Arduino UNO
TEB001

RAM
RAM
RAM
RAM
RAM
RAM

RAM

RAM

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

ASP
ASP
ASP
FMP

FMP

38

umfshield

USBD
USBH
WDOG
WIFI

WIFI_SD

UART/LCD
シールド
UNO 用 マ ル
チファンクションシールドTEB002 シー
ルド

データロギングシールド
Arduino UNO

サ２のログ表示が可能
RAM

SW1 で時刻、SW2 で温度、SW3 で可変抵抗値
を７SEG に表示する

FMP

RAM
RAM
RAM
ROM

USB デバイステストプログラム
USB ホストテストプログラム
ウォッチドックタイマーテスト
WIFI テストプログラム(PICO W 専用)
lwIP の DHCP クライアント、ping テストが可
能な実装
但し、ディレクトリ lwip に LWIP のソース設定(lwip-2.0.3/cntrib-2.0.1)が必要
また、設定ソースに数か所のパッチが必要
SSID,PASSWORD,HOSTNAME が TEB002 シールドの SD カード内のファイルとして保存し使用する設定となる
WIFI の TEB002 シールドを「データロギングシ
ールド Arduino UNO」に置き換えたもの
シールドの実行には、以下の追加工が必要。
A4-SDA,A5-SCL の接続をカット

FMP
FMP
ASP
FMP

ROM

TOPPERS BASE PLATFORM (RP) REFERENCE MANUAL

FMP

39