#ifndef _aplmt_hardware_hitachi_h8s_2328_uart_initapi_h_ #define _aplmt_hardware_hitachi_h8s_2328_uart_initapi_h_ /*---------------------------------------------------------------------------- ** SUMMARY: Hitachi-H8/2328 Hardware UARTs Initialization Interface (HWIUART) ** ** DESCRIPTION: ** This file provides the initizaltion inteface(s) for the onboard UART(s) ** SPECIFIC to Hitachi's H8s/2328 micro family. ** ** CONFIGURATION ** ------------- ** COMPILE: none. ** ** APPLICATION: The application is REQUIRED to define the following symbol(s) ** OPTION_APLMT_DEVICE_UART_BAUDRATE_CLOCK ** OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR ** OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR ** ** PLATFORM: none. ----------------------------------------------------------------------------*/ #include "aplcfg.h" /* For: Application configuration */ #include "apl/types/types.h" /* For: basic types */ /** The application is required to define the chip's operating speed */ #if !defined(OPTION_APLMT_DEVICE_UART_BAUDRATE_CLOCK) || !defined(OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR) || !defined(OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR) #error The application must define, OPTION_APLMT_DEVICE_UART_BAUDRATE_CLOCK and OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR and OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR, it is the Targets operating frequency for calculating BAUD Rate #endif #ifdef __cplusplus extern "C" { #endif /*-------------- MACROS/CONSTANTS ------------------------------------------*/ /** Use the following macros to determine the 'baud' parameter values for UART initialization routines below. NOTES: o Both 'baud' and OPTION_APLMT_DEVICE_UART_BAUDRATE_CLOCK SHOULD ALWAYS BE CONSTANTs or lots of code will be generated. o OPTION_APLMT_DEVICE_UARTx_BAUDRATE_CLOCK should be a float point value that is the value of OSC in Hz, i.e: 9.8306e6 Hz -->9.8306Mhz 0 OPTION_APLMT_DEVICE_UARTx_BAUDRATE_DIVISOR is the OSC divisor (in the SMR register). Its range is 0 to 3. */ #define APLMT_HALUART_CALC_DIVISOR(n) ((n)==0 ? 0.5: ((n)==1 ? 2.0: ((n)==2 ? 8.0: 32.0))) #define APLMT_HALUART_CALC_BAUD(baud,n) (Apl8u)((Apl8u)((OPTION_APLMT_DEVICE_UART_BAUDRATE_CLOCK / (64.0 * APLMT_HALUART_CALC_DIVISOR(n) * (baud))) + 0.5) - 1) /** Baud Rates */ #define APLMT_HALUARTA_BAUD_115200 (APLMT_HALUART_CALC_BAUD(115200UL,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_76800 (APLMT_HALUART_CALC_BAUD(76800UL,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_57600 (APLMT_HALUART_CALC_BAUD(57600UL,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_38400 (APLMT_HALUART_CALC_BAUD(38400UL,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_28800 (APLMT_HALUART_CALC_BAUD(28800U,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_19200 (APLMT_HALUART_CALC_BAUD(19200U,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_14400 (APLMT_HALUART_CALC_BAUD(14400,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_9600 (APLMT_HALUART_CALC_BAUD(9600,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_4800 (APLMT_HALUART_CALC_BAUD(4800,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_2400 (APLMT_HALUART_CALC_BAUD(2400,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) #define APLMT_HALUARTA_BAUD_1200 (APLMT_HALUART_CALC_BAUD(1200,OPTION_APLMT_DEVICE_UARTA_BAUDRATE_DIVISOR)) /** Baud Rates */ #define APLMT_HALUARTB_BAUD_115200 (APLMT_HALUART_CALC_BAUD(115200UL,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_76800 (APLMT_HALUART_CALC_BAUD(76800UL,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_57600 (APLMT_HALUART_CALC_BAUD(57600UL,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_38400 (APLMT_HALUART_CALC_BAUD(38400UL,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_28800 (APLMT_HALUART_CALC_BAUD(28800U,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_19200 (APLMT_HALUART_CALC_BAUD(19200U,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_14400 (APLMT_HALUART_CALC_BAUD(14400,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_9600 (APLMT_HALUART_CALC_BAUD(9600,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_4800 (APLMT_HALUART_CALC_BAUD(4800,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_2400 (APLMT_HALUART_CALC_BAUD(2400,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) #define APLMT_HALUARTB_BAUD_1200 (APLMT_HALUART_CALC_BAUD(1200,OPTION_APLMT_DEVICE_UARTB_BAUDRATE_DIVISOR)) /** Frame format. The following constants can be bit-wised ORed to generate desired frame structure. */ #define APLMT_HALUART_PARITY_NONE 0x00 #define APLMT_HALUART_PARITY_EVEN 0x20 #define APLMT_HALUART_PARITY_ODD 0x30 #define APLMT_HALUART_DATABITS_8 0x00 #define APLMT_HALUART_DATABITS_7 0x40 #define APLMT_HALUART_STOPBITS_1 0x00 #define APLMT_HALUART_STOPBITS_2 0x08 /*-------------- PUBLIC/PUBLISHED API --------------------------------------*/ /** This method initializes the primary onboard uart with the specified framing and baud rate. This method disables, and leaves disabled, the transmitter, receiver, as well as all UART interrupts. NOTES: o This method MAY be called before and/or after the platform's kernel has been started. o This method can be called multiple times to reset/re-initialize the UART. */ void AplmtH8s2328_uartAInitBaudAndFrame( AplByte baudrate, AplByte frameConfig ); /** This method initializes the secondary onboard uart with the specified framing and baud rate. This method disables, and leaves disabled, the transmitter, receiver, as well as all UART interrupts. NOTES: o This method MAY be called before and/or after the platform's kernel has been started. o This method can be called multiple times to reset/re-initialize the UART. */ void AplmtH8s2328_uartBInitBaudAndFrame( AplByte baudrate, AplByte frameConfig ); #ifdef __cplusplus } #endif /*--------------------------------------------------------------------------*/ #endif /* end _aplmt_hardware_hitachi_h8s_2328_uart_initapi_h_ */