TB-RX65N/RX130/RX231+CSplus sample program

こんにちは。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 (;;)
    {
    }
}

実行例:

 

Anonymous