f2838x_cm_cia402_solution/device/driverlib_cm/inc/hw_ssi.h

306 lines
15 KiB
C

//###########################################################################
//
// FILE: hw_ssi.h
//
// TITLE: Definitions for the SSI registers.
//
//###########################################################################
// $Copyright:
// Copyright (C) 2022 Texas Instruments Incorporated - http://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 HW_SSI_H
#define HW_SSI_H
//*************************************************************************************************
//
// The following are defines for the SSI register offsets
//
//*************************************************************************************************
#define SSI_O_CR0 0x0U // SSI Control 0
#define SSI_O_CR1 0x4U // SSI Control 1
#define SSI_O_DR 0x8U // SSI Data
#define SSI_O_SR 0xCU // SSI Status
#define SSI_O_CPSR 0x10U // SSI Clock Prescale
#define SSI_O_IM 0x14U // SSI Interrupt Mask
#define SSI_O_RIS 0x18U // SSI Raw Interrupt Status
#define SSI_O_MIS 0x1CU // SSI Masked Interrupt Status
#define SSI_O_ICR 0x20U // SSI Interrupt Clear
#define SSI_O_DMACTL 0x24U // SSI DMA Control
#define SSI_O_PV 0xFB0U // SSI Peripheral Version
#define SSI_O_PP 0xFC0U // SSI Peripheral Properties
#define SSI_O_PERIPHID4 0xFD0U // SSI Peripheral Identification 4
#define SSI_O_PERIPHID5 0xFD4U // SSI Peripheral Identification 5
#define SSI_O_PERIPHID6 0xFD8U // SSI Peripheral Identification 6
#define SSI_O_PERIPHID7 0xFDCU // SSI Peripheral Identification 7
#define SSI_O_PERIPHID0 0xFE0U // SSI Peripheral Identification 0
#define SSI_O_PERIPHID1 0xFE4U // SSI Peripheral Identification 1
#define SSI_O_PERIPHID2 0xFE8U // SSI Peripheral Identification 2
#define SSI_O_PERIPHID3 0xFECU // SSI Peripheral Identification 3
#define SSI_O_PCELLID0 0xFF0U // SSI PrimeCell Identification 0
#define SSI_O_PCELLID1 0xFF4U // SSI PrimeCell Identification 1
#define SSI_O_PCELLID2 0xFF8U // SSI PrimeCell Identification 2
#define SSI_O_PCELLID3 0xFFCU // SSI PrimeCell Identification 3
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSICR0 register
//
//*************************************************************************************************
#define SSI_CR0_DSS_S 0U
#define SSI_CR0_DSS_M 0xFU // SSI Data Size Select
#define SSI_CR0_FRF_S 4U
#define SSI_CR0_FRF_M 0x30U // SSI FRame Format Select
#define SSI_CR0_SPO 0x40U // SSI Serial clock POlarity
#define SSI_CR0_SPH 0x80U // SSI Serial clock PHase
#define SSI_CR0_SCR_S 8U
#define SSI_CR0_SCR_M 0xFF00U // SSI Serial Clock Rate
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSICR1 register
//
//*************************************************************************************************
#define SSI_CR1_LBM 0x1U // SSI Loopback Mode
#define SSI_CR1_SSE 0x2U // SSI Synchronous Serial Port Enable
#define SSI_CR1_MS 0x4U // SSI Master/Slave Select
#define SSI_CR1_EOT 0x10U // End of Transmission
#define SSI_CR1_DIR 0x100U // SSI Direction of Operation
#define SSI_CR1_HSCLKEN 0x200U // High Speed Clock Enable
#define SSI_CR1_FSSHLDFRM 0x400U // FSS Hold Frame
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIDR register
//
//*************************************************************************************************
#define SSI_DR_DATA_S 0U
#define SSI_DR_DATA_M 0xFFFFU // SSI Receive/Transmit Data
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSISR register
//
//*************************************************************************************************
#define SSI_SR_TFE 0x1U // SSI Transmit FIFO Empty
#define SSI_SR_TNF 0x2U // SSI Transmit FIFO Not Full
#define SSI_SR_RNE 0x4U // SSI Receive FIFO Not Empty
#define SSI_SR_RFF 0x8U // SSI Receive FIFO Full
#define SSI_SR_BSY 0x10U // SSI Busy Bit
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSICPSR register
//
//*************************************************************************************************
#define SSI_CPSR_CPSDVSR_S 0U
#define SSI_CPSR_CPSDVSR_M 0xFFU // SSI Clock Prescale Divisor
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIIM register
//
//*************************************************************************************************
#define SSI_IM_RORIM 0x1U // SSI Receive Overrun Interrupt Mask
#define SSI_IM_RTIM 0x2U // SSI Receive Time-Out Interrupt Mask
#define SSI_IM_RXIM 0x4U // SSI Receive FIFO Interrupt Mask
#define SSI_IM_TXIM 0x8U // SSI Transmit FIFO Interrupt Mask
#define SSI_IM_DMARXIM 0x10U // SSI Receive DMA Interrupt Mask
#define SSI_IM_DMATXIM 0x20U // SSI Transmit DMA Interrupt Mask
#define SSI_IM_EOTIM 0x40U // End of Transmit Interrupt Mask
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIRIS register
//
//*************************************************************************************************
#define SSI_RIS_RORRIS 0x1U // SSI Receive Overrun Raw Interrupt Status
#define SSI_RIS_RTRIS 0x2U // SSI Receive Time-Out Raw Interrupt Status
#define SSI_RIS_RXRIS 0x4U // SSI Receive FIFO Raw Interrupt Status
#define SSI_RIS_TXRIS 0x8U // SSI Transmit FIFO Raw Interrupt Status
#define SSI_RIS_DMARXRIS 0x10U // SSI Receive DMA Raw Interrupt Status
#define SSI_RIS_DMATXRIS 0x20U // SSI Transmit DMA Raw Interrupt Status
#define SSI_RIS_EOTRIS 0x40U // End of Transmit Raw Interrupt Status
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIMIS register
//
//*************************************************************************************************
#define SSI_MIS_RORMIS 0x1U // SSI Receive Overrun Masked Interrupt Status
#define SSI_MIS_RTMIS 0x2U // SSI Receive Time-Out Masked Interrupt Status
#define SSI_MIS_RXMIS 0x4U // SSI Receive FIFO Masked Interrupt Status
#define SSI_MIS_TXMIS 0x8U // SSI Transmit FIFO Masked Interrupt Status
#define SSI_MIS_DMARXMIS 0x10U // SSI Receive DMA Masked Interrupt Status
#define SSI_MIS_DMATXMIS 0x20U // SSI Transmit DMA Masked Interrupt Status
#define SSI_MIS_EOTMIS 0x40U // End of Transmit Masked Interrupt Status
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIICR register
//
//*************************************************************************************************
#define SSI_ICR_RORIC 0x1U // SSI Receive Overrun Interrupt Clear
#define SSI_ICR_RTIC 0x2U // SSI Receive Time-Out Interrupt Clear
#define SSI_ICR_DMARXIC 0x10U // SSI Receive DMA Interrupt Clear
#define SSI_ICR_DMATXIC 0x20U // SSI Transmit DMA Interrupt Clear
#define SSI_ICR_EOTIC 0x40U // End of Transmit Interrupt Clear
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIDMACTL register
//
//*************************************************************************************************
#define SSI_DMACTL_RXDMAE 0x1U // Receive DMA Enable
#define SSI_DMACTL_TXDMAE 0x2U // Transmit DMA Enable
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPV register
//
//*************************************************************************************************
#define SSI_PV_MINOR_S 0U
#define SSI_PV_MINOR_M 0xFFU // Minor Revision
#define SSI_PV_MAJOR_S 8U
#define SSI_PV_MAJOR_M 0xFF00U // Major Revision
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPP register
//
//*************************************************************************************************
#define SSI_PP_HSCLK 0x1U // High Speed Capability
#define SSI_PP_MODE_S 1U
#define SSI_PP_MODE_M 0x6U // Mode of Operation
#define SSI_PP_FSSHLDFRM 0x8U // SSInFss Hold Frame Capability
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPeriphID4 register
//
//*************************************************************************************************
#define SSI_PERIPHID4_PID4_S 0U
#define SSI_PERIPHID4_PID4_M 0xFFU // SSI Peripheral ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPeriphID5 register
//
//*************************************************************************************************
#define SSI_PERIPHID5_PID5_S 0U
#define SSI_PERIPHID5_PID5_M 0xFFU // SSI Peripheral ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPeriphID6 register
//
//*************************************************************************************************
#define SSI_PERIPHID6_PID6_S 0U
#define SSI_PERIPHID6_PID6_M 0xFFU // SSI Peripheral ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPeriphID7 register
//
//*************************************************************************************************
#define SSI_PERIPHID7_PID7_S 0U
#define SSI_PERIPHID7_PID7_M 0xFFU // SSI Peripheral ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPeriphID0 register
//
//*************************************************************************************************
#define SSI_PERIPHID0_PID0_S 0U
#define SSI_PERIPHID0_PID0_M 0xFFU // SSI Peripheral ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPeriphID1 register
//
//*************************************************************************************************
#define SSI_PERIPHID1_PID1_S 0U
#define SSI_PERIPHID1_PID1_M 0xFFU // SSI Peripheral ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPeriphID2 register
//
//*************************************************************************************************
#define SSI_PERIPHID2_PID2_S 0U
#define SSI_PERIPHID2_PID2_M 0xFFU // SSI Peripheral ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPeriphID3 register
//
//*************************************************************************************************
#define SSI_PERIPHID3_PID3_S 0U
#define SSI_PERIPHID3_PID3_M 0xFFU // SSI Peripheral ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPCellID0 register
//
//*************************************************************************************************
#define SSI_PCELLID0_CID0_S 0U
#define SSI_PCELLID0_CID0_M 0xFFU // SSI PrimeCell ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPCellID1 register
//
//*************************************************************************************************
#define SSI_PCELLID1_CID1_S 0U
#define SSI_PCELLID1_CID1_M 0xFFU // SSI PrimeCell ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPCellID2 register
//
//*************************************************************************************************
#define SSI_PCELLID2_CID2_S 0U
#define SSI_PCELLID2_CID2_M 0xFFU // SSI PrimeCell ID Register
//*************************************************************************************************
//
// The following are defines for the bit fields in the SSIPCellID3 register
//
//*************************************************************************************************
#define SSI_PCELLID3_CID3_S 0U
#define SSI_PCELLID3_CID3_M 0xFFU // SSI PrimeCell ID Register
#endif