/**
 * @brief SCIhCo readme.txt
 *
 * @version: 1.9 2024/10/17, $Id $
 *
 * {\tgEFA̒쌠͍쐬ł()kldqL̂ƂA
 * ()kldq́Aȉ (1)-(3) ̏𖞂ꍇɌA
 * {\tgEFAi{\tgEFAς̂܂ށBȉj
 * gpEEρEĔzziȉApƌĂԁj邱Ƃ𖳏ŋB
 *
 * (1) {\tgEFA\[XR[ȟ`ŗpꍇɂ́AL̒
 *	   \A̗pÂ܂܂̌`Ń\[XR[hɊ܂܂
 *	   邱ƁB
 * (2) {\tgEFÄꕔ܂͑SĂ𖳒fœ]ڂ邱Ƃ֎~
 *	   ƂBGȂǂ֏ЉE^̏ꍇ()kldqɘA肢܂B
 * (3) {\tgEFA̗pɂ蒼ړI܂͊ԐړIɐ邢Ȃ鑹Q
 *	   A()kldq͈؂̐ӔC𕉂Ȃ̂ƂB
 *
 * Copyright (C) Hokuto denshi Co,Ltd. 2022-2024
 */

/*

@{\[XR[h́AX}[gRtBO[^iRX, RL78, RH850, RISC-VjA
R[h(RL78), FSP(RA)ŎASCI(UART)̃R[h
ƋɎgp\tgEFAłB


CS+̊ł́Asjis/sci.c, sjis/sci.h gpĂ
it@C̃RgShift-JISłj

e2studio̊ł́Autf8/sci.c, utf8/sci.hgpĂ
it@C̃RgUTF8łj

iRg̕R[h̑Ⴞł̂ŁACɂȂ΂ǂgpĂ肠܂Bj

TvvOɑgݍ܂Ăꍇ́ACS+̏ꍇsjisAe2studiȍꍇutf8̕R[h̃t@CKpĂ܂
isjis/utf8̃tH_敪CɂKv͂܂j

[UőI鍀(sci.h)

(*1)}CR

//#include "../mcu_type/mcu_type.h"

@̃\[XňꊇŃ}CRʂݒ肷ۂȂǂ́A̕Œ`t@CCN[hĂB

mcu_type.hł

#define MCU_TYPE_RX
#define MCU_TYPE_DEFINED

@̗lȒ`ȂĂ鎖҂Ă܂B

(*1')

@ʃt@CŃ}CRʂ`Ȃisci.c, sci.hPƂŎgpjꍇ

#define MCU_TYPE_RX
//#define MCU_TYPE_RL78
//#define MCU_TYPE_RA
//#define MCU_TYPE_RH850
//#define MCU_TYPE_RISC_V

@gp}CRʂɉāBꂩ1LɂĂB


(*2)X}[gRtBO[^^R[hʁiRL78̂݁j

#define RL78_SMART_CONFIGURATOR			//X}[gRtBO[^iRL78/G23ȍ~j
//#define RL78_CODE_GENERATION			//R[h

@RL78̏ꍇAǂ炩LɂĂ

(*2')RASCIASCI, SCI_B̂ǂł邩IĂiRÂ݁j

#define RA_SCI                          //ʏSCI
//#define RA_SCI_B                      //SCI_B

(*3)CN[h

ERL78iR[hgp̏ꍇj

#include	"r_cg_serial.h
//#include	"r_cg_sau.h"

@R[ho͂At@CɉċLڂĂB

ERH850

#include	"Config_UART1.h"

@gpSCI-chɍ킹āALwb_t@C"UART1"̕ĂB

(*4)SCI`l`

ERX

(void)R_Config_SCI1_?????

@gpSCI-chɍ킹āALLq"SCI1"̕ĂB

ERL78

(void)R_Config_UART0_?????

@gpUART-chɍ킹āALLq"UART0"̕ĂB

ERA

(void)R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg)
(void)R_SCI_UART_????(&g_uart9_ctrl...

@"g_uart9_ctrl", "g_uart9_cfg""g_uart9"̕FSPŒ`Nameɍ킹ďĂB

ERH850

R_Config_UART1_?????

@gpSCI-chɍ킹āALLq"UART1"̕ĂB

ERISC_V

#define INTERRUPT_DISABLE	R_CLIC->clicintie27_b.IE=0
#define INTERRUPT_ENABLE	R_CLIC->clicintie27_b.IE=1

@gp鑗M荞݂ IESLRn nɉāAL"27"̕n+19̒lɏĂB
@iM荞 SAU0_ENDI0 gp̂ IESLR8 ̏ꍇ́A27ƂȂ܂j

(void)R_Config_UART0_????()

@gpUART-chɍ킹āALLq"UART0"̕ĂB

(*5)萔`

#define SCI_SEND_BUF_SIZE		1024

@Mobt@1y[W̃oCgłBMobt@2y[WmۂĂ܂̂ŁA̐l̔{̃܂B(ő65536j

#define SCI_RECV_BUF_SIZE 		16

@Mobt@̃oCgłBMobt@̓Oobt@\ŁAŒ`l̃܂B
@Mobt@́AL[{[h̃R}h͂z肵ĂAftHgl16oCgƂĂ܂B(ő65536j
@M}CRŘAăf[^𑗐MĂꍇ́Aobt@eʂ𑝂₵ĂB

RL78/G10̃}CRł́AftHglłRAMeʂ𒴉߂܂̂ŁAl炵Ă

#define SCI_USE_FLOAT						//_̊֐gp

@_֘Å֐gpȂꍇ̓RgAEgĂB
@iRL78/G10ROMeʂȂ}CRł́ARgAEgĂBRgAEg鎖ŁA4kBxROMgpʂ܂j

#define SCI_USE_TX							//M@\gp
#define SCI_USE_RX							//M@\gp

@M@\M@\̂ǂ炩gpȂꍇ́AgpȂRgAEgĂB


[UŃX}[gRtBO[^R[hɒǉL

ERX

Config_SCI1_user.c iSCI-chɉăt@C͕ς܂j

/* Start user code for include. Do not edit comment generated here */
#include "sci.h" //Includes ǉ
/* End user code. Do not edit comment generated here */

static void r_Config_SCI1_callback_transmitend(void)
{
    /* Start user code for r_Config_SCI1_callback_transmitend. Do not edit comment generated here */
    intr_sci_send_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

static void r_Config_SCI1_callback_receiveend(void)
{
    /* Start user code for r_Config_SCI1_callback_receiveend. Do not edit comment generated here */
    intr_sci_receive_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

static void r_Config_SCI1_callback_receiveerror(void)
{
    /* Start user code for r_Config_SCI1_callback_receiveerror. Do not edit comment generated here */
    intr_sci_receive_error(); //ǉ
    /* End user code. Do not edit comment generated here */
}

ERL78iX}[gRtBO[^j

Config_UART0_user.ciUART-chɉăt@C͕ς܂j

/* Start user code for include. Do not edit comment generated here */
#include "sci.h" //Includes ǉ
/* End user code. Do not edit comment generated here */

static void r_Config_UART0_callback_sendend(void)
{
    /* Start user code for r_Config_UART0_callback_sendend. Do not edit comment generated here */
    intr_sci_send_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

static void r_Config_UART0_callback_receiveend(void)
{
    /* Start user code for r_Config_UART0_callback_receiveend. Do not edit comment generated here */
    intr_sci_receive_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

static void r_Config_UART0_callback_error(uint8_t err_type)
{
    /* Start user code for r_Config_UART0_callback_error. Do not edit comment generated here */
    intr_sci_receive_error(); //ǉ
    /* End user code. Do not edit comment generated here */
}

ERL78iR[hj

r_cg_serial_user.c
(r_cg_sau_user.c) ܂́ALt@CBigp}CRɉăt@Cς܂j

/* Start user code for include. Do not edit comment generated here */
#include "sci.h" //Includes ǉ
/* End user code. Do not edit comment generated here */

static void r_uart0_callback_receiveend(void)
{
    /* Start user code. Do not edit comment generated here */
    intr_sci_receive_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

static void r_uart0_callback_sendend(void)
{
    /* Start user code. Do not edit comment generated here */
    intr_sci_send_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

static void r_uart0_callback_error(uint8_t err_type)
{
    /* Start user code. Do not edit comment generated here */
    intr_sci_receive_error(); //ǉ
    /* End user code. Do not edit comment generated here */
}

ERH850

Config_UART1_user.c iSCI-chɉăt@C͕ς܂j

/* Start user code for include. Do not edit comment generated here */
#include "sci.h" //Includes ǉ
/* End user code. Do not edit comment generated here */

void r_Config_UART1_callback_sendend(void)
{
    /* Start user code for r_Config_UART1_callback_sendend. Do not edit comment generated here */
    intr_sci_send_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

void r_Config_UART1_callback_receiveend(void)
{
    /* Start user code for r_Config_UART1_callback_receiveend. Do not edit comment generated here */
    intr_sci_receive_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

static void r_Config_SCI1_callback_receiveerror(void)
{
    /* Start user code for r_Config_UART1_callback_error. Do not edit comment generated here */
    intr_sci_receive_error(); //ǉ
    /* End user code. Do not edit comment generated here */
}

ERISC_V

Config_UART0_user.c iUART-chɉăt@C͕ς܂j

/* Start user code for include. Do not edit comment generated here */
#include "../../sci/sci.h" //ǉ
/* End user code. Do not edit comment generated here */

static void r_Config_UART0_callback_sendend(void)
{
    /* Start user code for r_Config_UART0_callback_sendend. Do not edit comment generated here */
	intr_sci_send_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

static void r_Config_UART0_callback_receiveend(void)
{
    /* Start user code for r_Config_UART0_callback_receiveend. Do not edit comment generated here */
	intr_sci_receive_end(); //ǉ
    /* End user code. Do not edit comment generated here */
}

static void r_Config_UART0_callback_error(uint8_t err_type)
{
    /* Start user code for r_Config_UART0_callback_error. Do not edit comment generated here */
	intr_sci_receive_error(); //ǉ
    /* End user code. Do not edit comment generated here */
}

FSPŐݒ肷Kv鍀(RA)

 General - Name
 
 ASCI9gpꍇŁAsci.h̃ftHgɍ킹ꍇA"g_uart9"ɕύXĂ
 iLNamesci.hR_SCI_UART_????()֐̈킹Ăj

 Interrupts - Callback

 "user_uart_callback"L


ꍇɂĂ̓[UŕύXKv̂Lڍ(sci.c)

#if defined(MCU_TYPE_RA)
//FSPŐݒ肵荞݃R[obN֐
void user_uart_callback (uart_callback_args_t * p_args); //
#endif

//RAUART荞ݏ

void user_uart_callback (uart_callback_args_t * p_args) //

@FSPUART̃R[obN֐(user_uart_callback)ȊOɐݒ肵ꍇ́A
֐ύXLڂɍ킹ĕύXĂB


{IȎg

ESCI(UART)ւ̕o

sci_start(); //ŏ1s
sci_write_str("\nSCI print.\n");

Ehex_v

sci_write_uint8_hex(u8); //u8̃f[^A16iŕ\iu8=0x12̂ƂA12\j
sci_write_uint16_hex(u16); //u16̃f[^A16iŕ\iu16=0x1234̂ƂA1234\j
sci_write_uint32_hex(u32); //u32̃f[^A16iŕ\iu32=0x12345678̂ƂA12345678\j
8bit, 16bit, 32bitϐɕĂ܂
擪0x͕t^܂
A-F͑啶łiɕύXꍇ́Asci.c hex_table_char[] ύXĂj

El\

sci_write_uint8(u8); //u8̃f[^AȂ10iŕ\iu8=0x12̂ƂA18\j
i16bit, 32bitłj

sci_write_int16(i16); //i16̃f[^A10iŕ\ii16=0x8123̂ƂA-32477\j
i8bit, 32bitłj

E_\

unsigned char buf[80];
float f = 1.234f;

float2str(f, 2, buf);
sci_write_str(buf); //f̃f[^_ȉ2܂ŕ\i1.23\j

float2str_eformat(f, 2, buf);
sci_write_str(buf); //f̃f[^e`ŏ_ȉ2܂ŕ\i1.23e0\j

EL[{[h̓̕ǂݎ

unsigned short ret;
unsigned char c;

ret = sci_read_char(&c);

if(ret != SCI_RECEIVE_DATA_EMPTY)
{
  switch(c)
  {
    case 'A':
      sci_write_str("input is A\n");
      break;
  }
}
