こんにちは。NoMaYです。
TB-RX65N/RX130/RX231(とRX72N Envision Kit)でのCS+のサンプルプログラムです。現在、以下のものがあります。(GitHubにも置いています。)
デバッグコンソール出力
デバッグコンソール入力
デバッグコンソール入力確認
UART出力
UART入力
UART入力確認
I2C送受信
GitHubのリポジトリ
github.com/NoMaY-jp/RX_SmartConfigurator_examples_RXTB_CSplus/tree/cafe_rene
かふぇルネのスレッド
japan.renesasrulz.com/cafe_rene/f/002-2095199602/6870/tb-rx65n-rx130-rx231-csplus-sample-program
なお、デバッグコンソール出力とデバッグコンソール入力のサンプルプログラム以外はConfig_ext.hというヘッダをプロジェクトに追加して、r_cg_macrodriver.hの中からインクルードして下さい。(このヘッダにはパズルのようなマクロを記述してありますが、ちょっと初学者向きでは無いですので、説明は省略します。すみません。) また、Config_ext.hは、どのSCIチャンネルでも使用出来るようになっていますが、サンプルプログラムで使用しているSCIチャンネル以外を使用する場合には、予め、使用するSCIコンポーネントをRXスマートコンフィグレータで生成しておいて下さい。
プロジェクトツリー: File/Smart Configurator/general/r_cg_macrodriver.h
変更内容: 赤文字箇所を追加
/******************************************************************************
Global functions
******************************************************************************/
void R_Systeminit(void);
/* Start user code for function. Do not edit comment generated here */
#include "Config_ext.h"
/* End user code. Do not edit comment generated here */
デバッグコンソール出力
10_DebugConsole_printf/
int main(void)
{
LED0 = LED_ON;
for (;;)
{
printf( "Hello World\r\n" );
R_BSP_SoftwareDelay( 1000, BSP_DELAY_MILLISECS );
LED0 = ~LED0;
R_BSP_SoftwareDelay( 1000, BSP_DELAY_MILLISECS );
LED0 = ~LED0;
}
}
実行例: (なお、写真は別プロジェクトのもので、本プロジェクトでは光るLEDは左側のみです。)


デバッグコンソール入力
20_DebugConsole_getchar/
int main(void)
{
char c;
for (;;)
{
printf( "Please enter a character:\r\n" );
c = getchar();
printf( "\r\nNow %c is entered.\r\n\r\n", c );
}
}
実行例:

デバッグコンソール入力確認
21_DebugConsole_getchar_ready/
int main(void)
{
char c;
int i;
for (;;)
{
printf( "Please enter a character:\r\n" );
for (i = 0; i < 3; i++)
{
R_BSP_SoftwareDelay( 1000, BSP_DELAY_MILLISECS );
if (is_getchar_ready())
{
c = getchar();
printf( "\r\nYeah, %c is entered.\r\n\r\n", c );
R_BSP_SoftwareDelay( 1000, BSP_DELAY_MILLISECS );
break;
}
}
}
}
実行例:

UART出力
30_UART_Printf/
U_CONFIG_UART_PRINTF_IMPL( SCI1, 128 /* transmit buffer size */ );
int main(void)
{
LED0 = LED_ON;
for (;;)
{
Printf( SCI1, "Hello World\r\n" );
R_BSP_SoftwareDelay( 1000, BSP_DELAY_MILLISECS );
LED0 = ~LED0;
R_BSP_SoftwareDelay( 1000, BSP_DELAY_MILLISECS );
LED0 = ~LED0;
}
}
実行例: (9600bpsです。なお、写真は別プロジェクトのもので、本プロジェクトでは光るLEDは左側のみです。)


UART入力
40_UART_Getchar/
U_CONFIG_UART_PRINTF_IMPL( SCI1, 128 /* transmit buffer size */ );
U_CONFIG_UART_GETCHAR_IMPL( SCI1, 128 /* receive ring buffer size */ );
int main(void)
{
char c;
for (;;)
{
Printf( SCI1, "Please enter a character:\r\n" );
c = Getchar( SCI1 );
Printf( SCI1, "\r\nNow %c is entered.\r\n\r\n", c );
}
}
実行例: (9600bpsです。)

UART入力確認
41_UART_Getchar_Ready/
U_CONFIG_UART_PRINTF_IMPL( SCI1, 128 /* transmit buffer size */ );
U_CONFIG_UART_GETCHAR_IMPL( SCI1, 128 /* receive ring buffer size */ );
int main(void)
{
char c;
int i;
for (;;)
{
Printf( SCI1, "Please enter a character:\r\n" );
for (i = 0; i < 3; i++)
{
R_BSP_SoftwareDelay( 1000, BSP_DELAY_MILLISECS );
if (Is_Getchar_Ready( SCI1 ))
{
c = Getchar( SCI1 );
Printf( SCI1, "\r\nYeah, %c is entered.\r\n\r\n", c );
R_BSP_SoftwareDelay( 1000, BSP_DELAY_MILLISECS );
break;
}
}
}
}
実行例: (9600bpsです。)

I2C送受信
60_I2C_Master/
U_CONFIG_I2C_MASTER_IMPL( SCI11 );
int main(void)
{
/* ISL29034 data sheet: https://www.renesas.com/jp/ja/doc/datasheet/isl29034.pdf */
uint8_t adr7_ISL29034 = 0x44; /* The 7-bits address of the device */
uint8_t cmd_read_ID[1] = {
0x0F /* Address of the ID register */
};
uint8_t cmd_clr_BOUT[2] = {
0x0F, /* Address of the ID register */
0x00 /* Write data (the BOUT bit is the bit7 of the ID register) */
};
uint8_t ret_data1[1] = { 0x00 }; /* Just clear before reception */
uint8_t ret_data2[1] = { 0x00 }; /* Just clear before reception */
printf( "Hit 'Enter' key to proceed the operation.\r\n" );
getchar();
U_Config_I2C_Master_Start( SCI11 );
U_Config_I2C_Master_Send_UWT( SCI11, adr7_ISL29034, cmd_read_ID, sizeof(cmd_read_ID) );
U_Config_I2C_Master_Receive_UWT( SCI11, adr7_ISL29034, ret_data1, sizeof(ret_data1) );
printf( "Read the initial value of the ID register: " );
printf( "(val & 0xA8) = 0x%02X (expected: 0xA8)\r\n\r\n", ret_data1[0] & 0xA8 );
U_Config_I2C_Master_Send_UWT( SCI11, adr7_ISL29034, cmd_clr_BOUT, sizeof(cmd_clr_BOUT) );
printf( "Clear the BOUT bit (the bit7 of the ID register).\r\n\r\n" );
U_Config_I2C_Master_Send_UWT( SCI11, adr7_ISL29034, cmd_read_ID, sizeof(cmd_read_ID) );
U_Config_I2C_Master_Receive_UWT( SCI11, adr7_ISL29034, ret_data2, sizeof(ret_data2) );
printf( "Read again the value of the ID register: " );
printf( "(val & 0xA8) = 0x%02X (expected: 0x28)\r\n\r\n", ret_data2[0] & 0xA8 );
printf( "Done.\r\n" );
for (;;)
{
}
}
実行例:
