メインコンテンツまでスキップ
Knowledgebase
Home
Renesas Electronics Japan - Knowledgebase

Synergy_MCU用のSSPに外部バスインタフェースを作成する方法

最終更新日:2017/07/05

Question:

Synergy MCU用のSynergyソフトウェアパッケージ(SSP)に外部バスインタフェースを作成するにはどうすればよいですか?

Answer:

MCUバスインタフェースリソースを使用して外部バスインタフェースを作成することが可能です。

S3A7 MCUでの例をご紹介します。
S3A7 MCUのユーザーマニュアル セクション15.2.3に示すとおり、外部アクセス用の外部バスインタフェースを使用します。

手順
8ビットまたは16ビット接続のためのレジスタ設定方法を示すサンプルコードは、以下のテキストファイルをご参照ください。レジスタの詳細は、S3A7 MCUハードウェアリファレンスマニュアル(以下)をご参照ください。
https://www.renesas.com/ja-jp/products/synergy/microcontrollers/s3-series.html#

R_BSP_Warmstart()コールはsystem_<core>.cに配置されている”weak”参照 であり、以下のコードをお客様のsrcフォルダに配置して”weak”参照を『置き換える』必要があることにご留意ください。

/***********************************************************************************************************************
 * Copyright [2016] Renesas Electronics Corporation and/or its licensors.All Rights Reserved.
 *
 * The contents of this file (the �contents�) are proprietary and confidential to Renesas Electronics Corporation
 * and/or its licensors (�Renesas�) and subject to statutory and contractual protections.
 *
 * Unless otherwise expressly agreed in writing between Renesas and you:1) you may not use, copy, modify, distribute,
 * display, or perform the contents; 2) you may not use any name or mark of Renesas for advertising or publicity
 * purposes or in connection with your use of the contents; 3) RENESAS MAKES NO WARRANTY OR REPRESENTATIONS ABOUT THE
 * SUITABILITY OF THE CONTENTS FOR ANY PURPOSE; THE CONTENTS ARE PROVIDED �AS IS� WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
 * NON-INFRINGEMENT; AND 4) RENESAS SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES,
 * INCLUDING DAMAGES RESULTING FROM LOSS OF USE, DATA, OR PROJECTS, WHETHER IN AN ACTION OF CONTRACT OR TORT, ARISING
 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE CONTENTS.Third-party contents included in this file may
 * be subject to different terms.
**********************************************************************************************************************/
/**********************************************************************************************************************
 * File Name : bsp_exbus.c
 * Description :External Bus initialization.
***********************************************************************************************************************
 * History :DD.MM.YYYY Version Description
 * 03.23.2015 1.00 Initial Release.
 * 03.07.2016 1.10 Edits to Comments.
***********************************************************************************************************************/
/***********************************************************************************************************************
 Includes
***********************************************************************************************************************/
 #include "bsp_api.h"

#ifdef EX_16BIT_BUS
 void bsp_exbus_init(void)
 {
  R_BUS->CSRC1[0].CSnCR_b.BSIZE = 0; // 16 bit bus
  R_BUS->CSRC1[0].CSnCR_b.EMODE = 0; // Little Endian
  R_BUS->CSRC0[0].CSnMOD_b.WRMOD = 1; // Single Write Strobe
  R_BUS->CSRC0[0].CSnWCR2_b.CSWOFF = 0; // Write-Access CS Extension Cycle Select=> 1wait
 // R_BUS->CSRC0[0].CSnWCR2_b.WDOFF = 1; // Write-Access CS Extension Cycle Select=> 1wait
  R_BUS->CSRECEN = 0x3e00; // No recovery cycle wait states
  R_BUS->CSRC0[0].CSnWCR1_b.CSPRWAIT = 0;
  R_BUS->CSRC0[0].CSnWCR1_b.CSPWWAIT = 0;
  R_BUS->CSRC0[0].CSnWCR1_b.CSRWAIT = 0;
  R_BUS->CSRC0[0].CSnWCR1_b.CSWWAIT = 0;

 R_BUS->CSRC1[0].CSnREC_b.WRCV =1;
  R_BUS->CSRECEN_b.RECVEN6 = 1;
  R_BUS->CSRECEN_b.RECVEN7 = 1;

}
 #else
 void bsp_exbus_init(void)
{
  R_BUS->CSRC1[0].CSnCR_b.BSIZE = 2; // 8 bit bus
  R_BUS->CSRC1[0].CSnCR_b.EMODE = 1; // Big Endian
  R_BUS->CSRC0[0].CSnMOD_b.WRMOD = 0; // Byte Mode Strobe
  R_BUS->CSRC0[0].CSnWCR2_b.CSWOFF = 0; // Write-Access CS Extension Cycle Select=> 1wait
   R_BUS->CSRC0[0].CSnWCR2_b.WDOFF = 0; // Write-Data Output Extension Cycle Select=> 1wait
  R_BUS->CSRECEN = 0x3e00; // No recovery cycle wait states
  R_BUS->CSRC0[0].CSnWCR1_b.CSPRWAIT = 0;
  R_BUS->CSRC0[0].CSnWCR1_b.CSPWWAIT = 0;
  R_BUS->CSRC0[0].CSnWCR1_b.CSRWAIT = 0;
  R_BUS->CSRC0[0].CSnWCR1_b.CSWWAIT = 0;

 R_BUS->CSRC1[0].CSnREC_b.WRCV =1; // Write Recovery cycle
  R_BUS->CSRECEN_b.RECVEN6 = 1; // Write Recovery for same area write after write access
  R_BUS->CSRECEN_b.RECVEN7 = 1; // Write Recovery for different area write after write access
}

#endif

/*
  *
  * Warm Start Initialization of External Bus
  *
  */

void R_BSP_WarmStart (bsp_warm_start_event_t event)
  {

if (event == BSP_WARM_START_PRE_C)
  {
  bsp_exbus_init();
}
if (event == BSP_WARM_START_POST_C)
{
}

適用製品

Renesas Synergy™ プラットフォーム
Renesas Synergy™ ソフトウェア
Renesas Synergy™ マイクロコントローラ