summaryrefslogtreecommitdiff
path: root/include/arch/rm46l8lp/halcogen/sci.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/arch/rm46l8lp/halcogen/sci.h')
-rw-r--r--include/arch/rm46l8lp/halcogen/sci.h203
1 files changed, 203 insertions, 0 deletions
diff --git a/include/arch/rm46l8lp/halcogen/sci.h b/include/arch/rm46l8lp/halcogen/sci.h
new file mode 100644
index 0000000..6853ec1
--- /dev/null
+++ b/include/arch/rm46l8lp/halcogen/sci.h
@@ -0,0 +1,203 @@
+/** @file sci.h
+* @brief SCI Driver Definition File
+* @date 11-Dec-2018
+* @version 04.07.01
+*
+*/
+
+/*
+* Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com
+*
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+* Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+*
+* Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the
+* distribution.
+*
+* Neither the name of Texas Instruments Incorporated nor the names of
+* its contributors may be used to endorse or promote products derived
+* from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+
+
+
+#ifndef __SCI_H__
+#define __SCI_H__
+
+#include "reg_sci.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* USER CODE BEGIN (0) */
+/* USER CODE END */
+
+/** @enum sciIntFlags
+* @brief Interrupt Flag Definitions
+*
+* Used with sciEnableNotification, sciDisableNotification
+*/
+enum sciIntFlags
+{
+ SCI_FE_INT = 0x04000000U, /* framing error */
+ SCI_OE_INT = 0x02000000U, /* overrun error */
+ SCI_PE_INT = 0x01000000U, /* parity error */
+ SCI_RX_INT = 0x00000200U, /* receive buffer ready */
+ SCI_TX_INT = 0x00000100U, /* transmit buffer ready */
+ SCI_WAKE_INT = 0x00000002U, /* wakeup */
+ SCI_BREAK_INT = 0x00000001U /* break detect */
+};
+
+/** @def SCI_IDLE
+* @brief Alias name for the SCI IDLE Flag
+*
+* This is an alias name for the SCI IDLE Flag.
+*
+*/
+#define SCI_IDLE 0x00000004U
+
+/** @struct sciBase
+* @brief SCI Register Definition
+*
+* This structure is used to access the SCI module registers.
+*/
+/** @typedef sciBASE_t
+* @brief SCI Register Frame Type Definition
+*
+* This type is used to access the SCI Registers.
+*/
+
+enum sciPinSelect
+{
+ PIN_SCI_TX = 4U,
+ PIN_SCI_RX = 2U
+};
+
+
+/* Configuration registers */
+typedef struct sci_config_reg
+{
+ uint32 CONFIG_GCR0;
+ uint32 CONFIG_GCR1;
+ uint32 CONFIG_SETINT;
+ uint32 CONFIG_SETINTLVL;
+ uint32 CONFIG_FORMAT;
+ uint32 CONFIG_BRS;
+ uint32 CONFIG_PIO0;
+ uint32 CONFIG_PIO1;
+ uint32 CONFIG_PIO6;
+ uint32 CONFIG_PIO7;
+ uint32 CONFIG_PIO8;
+} sci_config_reg_t;
+
+
+
+/* Configuration registers initial value for SCI*/
+#define SCILIN_GCR0_CONFIGVALUE 0x00000001U
+#define SCILIN_GCR1_CONFIGVALUE ((uint32)((uint32)1U << 5U) \
+ |(uint32)((uint32)(2U-1U) << 4U) \
+ |(uint32)((uint32)0U << 3U) \
+ |(uint32)((uint32)0U << 2U) \
+ |(uint32)((uint32)1U << 1U) \
+ |(uint32)((uint32)0U << 2U) \
+ |(uint32)(0x03000080U))
+
+#define SCILIN_SETINTLVL_CONFIGVALUE ((uint32)((uint32)0U << 26U) \
+ |(uint32)((uint32)0U << 25U) \
+ |(uint32)((uint32)0U << 24U) \
+ |(uint32)((uint32)0U << 9U) \
+ |(uint32)((uint32)0U << 8U) \
+ |(uint32)((uint32)0U << 1U) \
+ |(uint32)((uint32)0U))
+
+#define SCILIN_SETINT_CONFIGVALUE ((uint32)((uint32)0U << 26U) \
+ |(uint32)((uint32)0U << 25U) \
+ |(uint32)((uint32)0U << 24U) \
+ |(uint32)((uint32)0U << 9U) \
+ |(uint32)((uint32)0U << 1U) \
+ |(uint32)((uint32)0U << 0U))
+
+#define SCILIN_FORMAT_CONFIGVALUE (8U - 1U)
+#define SCILIN_BRS_CONFIGVALUE (259U)
+#define SCILIN_PIO0_CONFIGVALUE ((uint32)((uint32)1U << 2U) | (uint32)((uint32)1U << 1U))
+#define SCILIN_PIO1_CONFIGVALUE ((uint32)((uint32)0U << 2U) | (uint32)((uint32)0U << 1U))
+#define SCILIN_PIO6_CONFIGVALUE ((uint32)((uint32)0U << 2U) | (uint32)((uint32)0U << 1U))
+#define SCILIN_PIO7_CONFIGVALUE ((uint32)((uint32)0U << 2U) | (uint32)((uint32)0U << 1U))
+#define SCILIN_PIO8_CONFIGVALUE ((uint32)((uint32)1U << 2U) | (uint32)((uint32)1U << 1U))
+
+
+
+/**
+ * @defgroup SCI SCI
+ * @brief Serial Communication Interface Module.
+ *
+ * The SCI module is a universal asynchronous receiver-transmitter that implements the standard nonreturn
+ * to zero format. The SCI can be used to communicate, for example, through an RS-232 port or over a K-line.
+ *
+ * Related Files
+ * - reg_sci.h
+ * - sci.h
+ * - sci.c
+ * @addtogroup SCI
+ * @{
+ */
+
+/* SCI Interface Functions */
+void sciInit(void);
+void sciSetFunctional(sciBASE_t *sci, uint32 port);
+void sciSetBaudrate(sciBASE_t *sci, uint32 baud);
+uint32 sciIsTxReady(sciBASE_t *sci);
+void sciSendByte(sciBASE_t *sci, uint8 byte);
+void sciSend(sciBASE_t *sci, uint32 length, uint8 * data);
+uint32 sciIsRxReady(sciBASE_t *sci);
+uint32 sciIsIdleDetected(sciBASE_t *sci);
+uint32 sciRxError(sciBASE_t *sci);
+uint32 sciReceiveByte(sciBASE_t *sci);
+void sciReceive(sciBASE_t *sci, uint32 length, uint8 * data);
+void sciEnableNotification(sciBASE_t *sci, uint32 flags);
+void sciDisableNotification(sciBASE_t *sci, uint32 flags);
+void sciEnableLoopback(sciBASE_t *sci, loopBackType_t Loopbacktype);
+void sciDisableLoopback(sciBASE_t *sci);
+void sciEnterResetState(sciBASE_t *sci);
+void sciExitResetState(sciBASE_t *sci);
+void scilinGetConfigValue(sci_config_reg_t *config_reg, config_value_type_t type);
+/** @fn void sciNotification(sciBASE_t *sci, uint32 flags)
+* @brief Interrupt callback
+* @param[in] sci - sci module base address
+* @param[in] flags - copy of error interrupt flags
+*
+* This is a callback that is provided by the application and is called upon
+* an interrupt. The parameter passed to the callback is a copy of the
+* interrupt flag register.
+*/
+void sciNotification(sciBASE_t *sci, uint32 flags);
+
+/* USER CODE BEGIN (1) */
+/* USER CODE END */
+/**@}*/
+#ifdef __cplusplus
+}
+#endif
+
+#endif