Skip to content
fvio spi common plugin for RZ/T1
C Assembly
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Upload project Jul 24, 2019
fvio Upload project Jul 24, 2019
images Update fvio_platform.jpg Jul 25, 2019
lib/ecl Upload project Jul 24, 2019
sample Upload project Jul 24, 2019
.gitattributes Initial commit Jul 23, 2019
LICENSE Initial commit Jul 23, 2019
README.md

README.md

fvio_rzt1_spi_cmn

fvio_rzt1_spi_cmnはfvIO技術を使用したSPIマスタのプラグイン(south plugin)です。プラグインは1スロット版と信号線の本数を拡張した2スロット版を用意しています。
マイコン内蔵SPIインタフェースとは別に、最大8スロット(2スロット版では4スロット)分のSPI通信を実行することができます。

fvIO(functions-virtualized Input/Output)とは、シマフジ電機(株)が開発した「マイコン/マイクロプロセッサが内蔵するI/O端子機能を仮想化する技術」であり、以下の特徴があります。

  • ソフトウェアによる通信プロトコル実装と比べて通信速度を高速化
  • マイコンのCPU負荷の軽減
  • FPGAと比較して開発コストが低い(マイコン単体で実現できるため)
  • プラグインの組み合わせは自由
  • 各プラグイン間の同期を数十ns単位で実現


目次

1.プラグイン機能

下記は基本機能になります。カスタマイズにより機能の拡張が可能です。

  • SPIパケットの送受信(1パケットあたりの最大通信長は8byte)
  • 通信速度設定は約40kbit/s~10Mbit/sまで可能
  • 同一パケットのリピート転送
  • DMAを利用したパケットの連続転送
  • 外部同期信号によるプラグイン間の同期

2.動作環境

2.1 対応ボード

fvio_rzt1_spi_cmnはルネサス エレクトロニクス(以下ルネサス)製マイクロプロセッサ「RZ/T1」上でのみ動作します。現在対応しているボードは以下になります。

2.2 対応デバイス

fvio_rzt1_spi_cmnの現在対応しているデバイスは以下になります。

3.ビルド手順

3.1 ビルド環境

ビルドには以下のツールが必要です。

3.2 ベースプログラム

fvio_rzt1_spi_cmnは以下のルネサス製のRZ/T1サンプルプログラムに組み込む形で動作します。ビルドを実行する前にルネサスのHPで必要なサンプルプログラムをダウンロードして下さい。

ファイル名 概要
an-r01an2554jj0141-rzt1-initial-settings.zip RZ/T1グループ 初期設定(ベースプログラム)
an-r01an3569jj0200-rzt1-encoder.zip RZ/T1 Encoder I/F(ライブラリ)

3.3 ファイル追加

リポジトリから取得したファイルをルネサス製のサンプルプログラム(an-r01an2554jj0141-rzt1-initial-settings)に対して以下のように追加して下さい。

★:fvio_rzt1_spi_cmnから追加
◎:an-r01an3569jj0200-rzt1-encoderから追加

RZ_T_sflash_sample/(※1)
    ┣inc/
    ┃ ┗◎r_ecl_rzt1_if.h
    ┃
    ┣★lib/
    ┃ ┗ ★ecl/
    ┃  ┣ ◎r_ecl_rzt1.a
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_0.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_1.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_2.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_3.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_4.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_5.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_6.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_7.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_01.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_23.dat
    ┃  ┣ ★s_fvIO_rzt1_comn_spi_45.dat
    ┃  ┗ ★s_fvIO_rzt1_comn_spi_67.dat
    ┗src/
      ┣★fvio/
      ┃ ┣ ★dev_driver/(※2)
      ┃ ┃ ┣ ★mpu6500/
      ┃ ┃ ┃    ┣★fvIO_rzt1_spi_mpu6500.c
      ┃ ┃ ┃    ┗★fvIO_rzt1_spi_mpu6500.h
      ┃ ┃ ┗ ★ssd1306/
      ┃ ┃      ┣★fvIO_rzt1_spi_ssd1306.c
      ┃ ┃      ┗★fvIO_rzt1_spi_ssd1306.h
      ┃ ┣ ★fvio_driver/
      ┃ ┃ ┣ ★fvIO_cmn_if.h
      ┃ ┃ ┣ ★fvIO_cmn_2s_if.h
      ┃ ┃ ┣ ★fvIO_rzt1_dma.c
      ┃ ┃ ┣ ★fvIO_rzt1_dma.h
      ┃ ┃ ┣ ★fvIO_rzt1_spi_cmn.c
      ┃ ┃ ┣ ★fvIO_rzt1_spi_cmn.h
      ┃ ┃ ┣ ★fvIO_rzt1_spi_cmn_2s.c
      ┃ ┃ ┣ ★fvIO_rzt1_spi_cmn_2s.h
      ┃ ┃ ┗ ★fvIO_dat.asm
      ┃ ┃
      ┃ ┗ ★fvio_if/
      ┃ ┣ ★fvIO_if.c
      ┃ ┗ ★fvIO_if.h
      ┃
      ┗sample/
        ┣★main.c(※3)
        ┣★utility.c
        ┗★utility.h

※1 RZ_T_ram_sampleでも同様の追加を行います。
※2 リポジトリのdev_driver内の必要なディレクトリを追加します。
※3 リポジトリのサンプルプログラムを使用するかは任意です。

3.4 ファイル修正

SEMB1401を使用する場合、src/common/sflash_boot/spibsc_ioset_userdef.cに以下の修正が必要です。

修正前:

#define SPIBSC_BUS_WITDH    (4)
#define SPIBSC_OUTPUT_ADDR  (SPIBSC_OUTPUT_ADDR_32)

修正後:

#define SPIBSC_BUS_WITDH    (1)
#define SPIBSC_OUTPUT_ADDR  (SPIBSC_OUTPUT_ADDR_24)

3.5 ビルド

プロジェクトのプロパティで以下のように修正してからビルドを実行します。

(1)Target Processor

(2)Cross ARM C Compiler/Includes
~/src/fvio/dev_driver以下のパス設定は、ユーザーが組み込んだ任意のディレクトリ名を入力します。


(3)Cross ARM C Linker/Other

4.使用方法

各種プラグインでは共通して以下のI/F関数を提供しています。

I/F関数 概要
fvio_sys_init プラグイン内部で使用する変数やモジュール等の初期化を行う。
fvio_entry プラグインを登録する。
fvio_release プラグイン登録を削除する。
fvio_assign プラグインとスロットの紐づけを行う。
fvio_unassign プラグインとスロットの紐づけを解除する。
fvio_sys_start プラグインを紐づけたスロットにロードし、fvIOを一斉に起動する。(全fvIOスロットは同時に起動)
fvio_stop fvIOを停止する。(スロット毎に可能)
fvio_write fvIOに対してライト制御を実行。(プラグイン内部の設定に対しても可能)
fvio_read fvIOに対してリード制御を実行。(プラグイン内部の設定に対しても可能)

基本的な使用方法としては、以下の順にI/F関数をコールし、デバイスを制御します。詳細については、プラグインのアプリケーションノートを参照して下さい。

1.fvio_sys_initでプラグインを初期化
2.fvio_entryでプラグインを登録
3.fvio_assignでプラグインをスロットにアサイン
4.fvio_sys_startで全スロットのfvIOを起動
5.fvio_write/fvio_readを使用して各スロットのデバイスを制御

5.ライセンス

MITライセンス

You can’t perform that action at this time.