This driver is possible to use Waveshare e-Paper module on Renesas RA MCU.
Renesas RA MCU provides software called Flexible Software Package (FSP) that includes HAL driver, RTOS, and various middleware. This driver is designed to implemet on this FSP, and user can use the e-Paper module without any special modification.
This driver is created by modifying the e-Paper driver for STM32 published on Waveshare's github. For more information on how to use the API, please refer to the Waveshare website.
In addition, this driver has been confirmed to work only with 1.02 inch, 2.9 inch, 4.2 inch (black, white), and 4.2 inch (black, white and yellow) modules. In other modules, the author have confirmed that the build passes, but please note that the author have not confirmed the operation on the actual device.
Note: The author does not take any responsibility caused by this software, so please evaluate it carefully before using it in the system.
Here are two ways to use the e-Paper driver.
- Create a project from scratch.
- Use sample project.
Create a project from scratch, and apply the driver.
Create an FSP project. There is no particular specification.
Create a project by referring to "2.3.4 Create a New Project for Blinky" in the FSP User's manual.
Select the pin to connect the e-Paper in the FSP Configurator. Pins used for SPI communication are selected from Peripherals on the Pins tab. In addition, GPIOs such as RST pin are selected from Ports.
Change the Heap size according to the size of the image cache of e-Paper to be used. Select the BSP tab on the FSP Configurator and make changes in the Properties view.
Open the Stacks tab and add the r_spi module / driver from the New Stack in the upper right.
Select the clock frequency. Select the module added in (a) and select the clock in the properties. For a 2.9 inch e-Paper module, the data sheet says that the clock cycle time should be a minimum of 250ns, so choose 4MHz.
Select the SPI module callback. This driver uses a callback to get the data transmission completion timing. Set the default "spi_callback" to the callback function name. If you want to change it, also change the driver in DEV_Config.c.
Copy the driver into your project. Copy it directly under the project you want to apply by dragging and dropping.
Just copying it may not be the target of the build, so enable it. Right-click on the folder you want to enable and open its properties. Select C/C++ Build and chuck out Exclude Resource from build. Select "Apply and Close" to apply.
Add the driver path to your project. Right-click on the project and open its properties. Open "Paths and Symbols" in "C/C++ General". Add the path to "GNU C" in "Includes" as follows. If you want to add it, chuck "Is a workspace path".
- /${ProjName}/e_paper_driver
- /${ProjName}/e_paper_driver/Config
- /${ProjName}/e_paper_driver/e-Paper
- /${ProjName}/e_paper_driver/Examples
- /${ProjName}/e_paper_driver/Fonts
- /${ProjName}/e_paper_driver/GUI
Create the main processing program as you like.
One caveat is that you should call the DEV_Config_Set function before executing the DEV_Module_Init function to use the SPI module configuration and pin information available to the driver. Please refer to the sample project for the setting method.
Build and run the project.
The author provides a sample project. For the import method, refer to "2.2.12 Importing an Existing Project into e2 studio" in the FSP User's manual. The environment and pin connection information are shown below.
- e2studio 2021-01
- FSP v2.3.0
- EK-RA4W1
- 2.9inch e-Paper module
RA4W1 | EK-RA4W1 | e-Paper module | |
---|---|---|---|
GPIO P103 | PMOD1-1 | -> | CS #low active |
SPI0 MOSI P101 | PMOD1-2 | -> | DIN |
SPI0 MISO P100 | PMOD1-3 | -- | (NC) |
SPI0 RSPCK P102 | PMOD1-4 | -> | CLK |
GPIO P107 | PMOD1-8 | -> | RST #low active |
GPIO P204 | PMOD1-9 | -> | DC #High: Data, Low: Command |
GPIO P407 | PMOD1-10 | <- | BUSY #high active |
GND | PMOD1-5 | -- | GND |
VCC 3.3V | PMOD1-6 | -- | VCC |
本ドライバはルネサスRA MCUでWaveshare e-Papaerモジュールを使用することを可能にします。
ルネサスRA MCUは、HALドライバやRTOS、各種ミドルウェアを含んだFlexible Software Package (FSP)と呼ぶソフトウェアを提供しています。本ドライバはこのFSP上で動作するように設計してあり、ユーザは特に手を加える必要なくe-Paperモジュールを動作させることができます。
本ドライバはWaveshareのgithubに公開されているSTM32用のe-Paperドライバを改変して作成しています。APIの使用方法などの詳しい情報はWaveshareのHPなどをご参照ください。
また、本ドライバは、1.02インチ、2.9インチ、4.2インチ白黒、4.2インチ白黒黄のモジュールのみ、実機にて動作確認しています。他のモジュールはビルドがパスすることは確認していますが、実機では動作を確認できていないことをご了承ください。
※筆者は本ソフトウェアによって生じた責任は一切負いませんので、システムに組み込む際は十分に評価してご使用ください。
e-Papaerドライバを使用する2つの方法を以下に示します。
- 1からプロジェクトを生成
- サンプルプロジェクトを使用
プロジェクトを1から作成し、ドライバを適用します。
FSPのプロジェクトを作成します。特に指定はありません。 FSP User's manualの「2.3.4 Create a New Project for Blinky」などを参考にプロジェクトを作成してください。
e-Paperを接続するピンをFSPコンフィグレータで選択します。 SPI通信で使用するピンはPinsタブのPeripheralsから追加します。その他、RSTピンなどのGPIOはPortsから追加します。
使用するe-Paperのイメージキャッシュのサイズに合わせて、Heapサイズを変更してください。 FSPコンフィグレータのBSPタブを選択し、プロパティービューで変更します。
Stacksタブを開き、右上のNew Stackからr_spiモジュール/ドライバを追加します。
クロック周波数を選択します。 (a)で追加したモジュールを選択し、プロパティでクロックを選択します。2.9インチのe-Paperモジュールの場合、データシートによるとクロックサイクル時間は最小250nsにしなければならないので、4MHzを選択します。
SPIモジュールのコールバックを選択します。 本ドライバはコールバックを使用し、データ送信完了タイミングを取得します。コールバック関数名はデフォルトの「spi_callback」を設定してください。変更する場合はドライバのDEV_Config.cも合わせて変更してください。
ドライバをプロジェクト内にコピーします。 ドラッグ&ドロップで適用したいプロジェクトの直下にコピーします。
コピーしただけではビルドの対象でない場合がありますので有効にします。 有効にしたいフォルダを右クリックし、プロパティを開きます。C/C++ Buildを選択し、Exclude Resource from buildをチャックアウトします。Apply and Closeを選択し、適用します。
ドライバのパスをプロジェクトに追加します。 プロジェクトを右クリックし、プロパティを開きます。C/C++ GeneralのPaths and Symbolsを開きます。IncludesのGNU Cに以下のようにパスを追加します。追加する場合は、Is a workspace pathをチャックしてください。
- /${ProjName}/e_paper_driver
- /${ProjName}/e_paper_driver/Config
- /${ProjName}/e_paper_driver/e-Paper
- /${ProjName}/e_paper_driver/Examples
- /${ProjName}/e_paper_driver/Fonts
- /${ProjName}/e_paper_driver/GUI
お好きなようにメイン処理プログラムを作成してください。
1点注意として、DEV_Module_Init関数を実行する前に、DEV_Config_Set関数をコールして、SPIモジュール構成とピン情報をドライバが使用できるようにしてください。設定方法はサンプルプロジェクトをご参照ください。
ビルドして、実行します。
サンプルプロジェクトを提供します。 インポート方法はFSP User's manualの「2.2.12 Importing an Existing Project into e2 studio」をご参照ください。 環境とピン接続情報を以下に示します。
- e2studio 2021-01
- FSP v2.3.0
- EK-RA4W1
- 2.9インチe-Paperモジュール
RA4W1 | EK-RA4W1 | e-Paper module | |
---|---|---|---|
GPIO P103 | PMOD1-1 | -> | CS #low active |
SPI0 MOSI P101 | PMOD1-2 | -> | DIN |
SPI0 MISO P100 | PMOD1-3 | -- | (NC) |
SPI0 RSPCK P102 | PMOD1-4 | -> | CLK |
GPIO P107 | PMOD1-8 | -> | RST #low active |
GPIO P204 | PMOD1-9 | -> | DC #High: Data, Low: Command |
GPIO P407 | PMOD1-10 | <- | BUSY #high active |
GND | PMOD1-5 | -- | GND |
VCC 3.3V | PMOD1-6 | -- | VCC |