123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 |
- /*
- SPC5 HAL - Copyright (C) 2013 STMicroelectronics
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- /**
- * @file SPC560Pxx/spc5_registry.h
- * @brief SPC560Pxx capabilities registry.
- *
- * @addtogroup HAL
- * @{
- */
- #ifndef SPC5_REGISTRY_H
- #define SPC5_REGISTRY_H
- /*===========================================================================*/
- /* Derived constants and error checks. */
- /*===========================================================================*/
- #if defined(_SPC560P34L1_) || defined(_SPC560P34L3_)
- #define _SPC560P34_
- #define _SPC560PXX_SMALL_
- #elif defined(_SPC560P40L1_) || defined(_SPC560P40L3_)
- #define _SPC560P40_
- #define _SPC560PXX_SMALL_
- #elif defined(_SPC560P44L3_) || defined(_SPC560P44L5_)
- #define _SPC560P44_
- #define _SPC560PXX_MEDIUM_
- #elif defined(_SPC560P50L3_) || defined(_SPC560P50L5_)
- #define _SPC560P50_
- #define _SPC560PXX_MEDIUM_
- #elif defined(_SPC560P54L3_) || defined(_SPC560P54L5_) || \
- defined(_SPC56AP54L3_) || defined(_SPC56AP54L5_)
- #define _SPC560P54_
- #define _SPC560PXX_LARGE_
- #elif defined(_SPC560P60L3_) || defined(_SPC560P60L5_) || \
- defined(_SPC56AP60L3_) || defined(_SPC56AP60L5_)
- #define _SPC560P60_
- #define _SPC560PXX_LARGE_
- #else
- #error "SPC56xPxx platform not defined"
- #endif
- /*===========================================================================*/
- /* Platform capabilities. */
- /*===========================================================================*/
- /**
- * @name SPC560Pxx capabilities
- * @{
- */
- /* Clock attributes.*/
- #if defined(_SPC560PXX_SMALL_)
- #define SPC5_HAS_FMPLL1 FALSE
- #define SPC5_HAS_CLOCKOUT TRUE
- #define SPC5_HAS_AC0 FALSE
- #define SPC5_HAS_AC1 FALSE
- #define SPC5_HAS_AC2 FALSE
- #define SPC5_HAS_AC3 FALSE
- #define SPC5_HAS_CMU0 TRUE
- #define SPC5_HAS_CMU1 FALSE
- #elif defined(_SPC560PXX_MEDIUM_)
- #define SPC5_HAS_FMPLL1 TRUE
- #define SPC5_HAS_CLOCKOUT TRUE
- #define SPC5_HAS_AC0 TRUE
- #define SPC5_HAS_AC1 TRUE
- #define SPC5_HAS_AC2 TRUE
- #define SPC5_HAS_AC3 TRUE
- #define SPC5_HAS_CMU0 TRUE
- #define SPC5_HAS_CMU1 TRUE
- #else /* defined(_SPC560PXX_LARGE_) */
- #define SPC5_HAS_FMPLL1 FALSE
- #define SPC5_HAS_CLOCKOUT TRUE
- #define SPC5_HAS_AC0 FALSE
- #define SPC5_HAS_AC1 FALSE
- #define SPC5_HAS_AC2 FALSE
- #define SPC5_HAS_AC3 TRUE
- #define SPC5_HAS_CMU0 TRUE
- #define SPC5_HAS_CMU1 TRUE
- #endif
- /* DSPI attribures.*/
- #define SPC5_HAS_DSPI0 TRUE
- #define SPC5_HAS_DSPI1 TRUE
- #define SPC5_HAS_DSPI2 TRUE
- #define SPC5_DSPI_FIFO_DEPTH 5
- #define SPC5_DSPI0_PCTL 4
- #define SPC5_DSPI1_PCTL 5
- #define SPC5_DSPI2_PCTL 6
- #define SPC5_DSPI0_TX1_DMA_DEV_ID 1
- #define SPC5_DSPI0_TX2_DMA_DEV_ID 0
- #define SPC5_DSPI0_RX_DMA_DEV_ID 2
- #define SPC5_DSPI1_TX1_DMA_DEV_ID 3
- #define SPC5_DSPI1_TX2_DMA_DEV_ID 0
- #define SPC5_DSPI1_RX_DMA_DEV_ID 4
- #define SPC5_DSPI2_TX1_DMA_DEV_ID 5
- #define SPC5_DSPI2_TX2_DMA_DEV_ID 0
- #define SPC5_DSPI2_RX_DMA_DEV_ID 6
- #define SPC5_DSPI0_TFFF_HANDLER vector76
- #define SPC5_DSPI0_TFFF_NUMBER 76
- #define SPC5_DSPI0_RFDF_HANDLER vector78
- #define SPC5_DSPI0_RFDF_NUMBER 78
- #define SPC5_DSPI1_TFFF_HANDLER vector96
- #define SPC5_DSPI1_TFFF_NUMBER 96
- #define SPC5_DSPI1_RFDF_HANDLER vector98
- #define SPC5_DSPI1_RFDF_NUMBER 98
- #define SPC5_DSPI2_TFFF_HANDLER vector116
- #define SPC5_DSPI2_TFFF_NUMBER 116
- #define SPC5_DSPI2_RFDF_HANDLER vector118
- #define SPC5_DSPI2_RFDF_NUMBER 118
- #define SPC5_DSPI0_ENABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI0_PCTL, SPC5_SPI_DSPI0_START_PCTL)
- #define SPC5_DSPI0_DISABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI0_PCTL, SPC5_SPI_DSPI0_STOP_PCTL)
- #define SPC5_DSPI1_ENABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI1_PCTL, SPC5_SPI_DSPI1_START_PCTL)
- #define SPC5_DSPI1_DISABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI1_PCTL, SPC5_SPI_DSPI1_STOP_PCTL)
- #define SPC5_DSPI2_ENABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI2_PCTL, SPC5_SPI_DSPI2_START_PCTL)
- #define SPC5_DSPI2_DISABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI2_PCTL, SPC5_SPI_DSPI2_STOP_PCTL)
- #if defined(_SPC560PXX_MEDIUM_) || defined(_SPC560PXX_LARGE_)
- #define SPC5_HAS_DSPI3 TRUE
- #define SPC5_DSPI3_PCTL 7
- #define SPC5_DSPI3_TX1_DMA_DEV_ID 7
- #define SPC5_DSPI3_TX2_DMA_DEV_ID 0
- #define SPC5_DSPI3_RX_DMA_DEV_ID 8
- #define SPC5_DSPI3_TFFF_HANDLER vector219
- #define SPC5_DSPI3_TFFF_NUMBER 219
- #define SPC5_DSPI3_RFDF_HANDLER vector221
- #define SPC5_DSPI3_RFDF_NUMBER 221
- #define SPC5_DSPI3_ENABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI3_PCTL, SPC5_SPI_DSPI3_START_PCTL)
- #define SPC5_DSPI3_DISABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI3_PCTL, SPC5_SPI_DSPI3_STOP_PCTL)
- #else
- #define SPC5_HAS_DSPI3 FALSE
- #endif
- #if defined(_SPC560PXX_LARGE_)
- #define SPC5_HAS_DSPI4 TRUE
- #define SPC5_DSPI4_PCTL 8
- #define SPC5_DSPI4_TX1_DMA_DEV_ID 15
- #define SPC5_DSPI4_TX2_DMA_DEV_ID 0
- #define SPC5_DSPI4_RX_DMA_DEV_ID 21
- #define SPC5_DSPI4_TFFF_HANDLER vector258
- #define SPC5_DSPI4_TFFF_NUMBER 258
- #define SPC5_DSPI4_RFDF_HANDLER vector260
- #define SPC5_DSPI4_RFDF_NUMBER 260
- #define SPC5_DSPI4_ENABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI4_PCTL, SPC5_SPI_DSPI4_START_PCTL)
- #define SPC5_DSPI4_DISABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_DSPI0_PCTL, SPC5_SPI_DSPI4_STOP_PCTL)
- #else
- #define SPC5_HAS_DSPI4 FALSE
- #endif
- #define SPC5_HAS_DSPI5 FALSE
- #define SPC5_HAS_DSPI6 FALSE
- #define SPC5_HAS_DSPI7 FALSE
- /* eDMA attributes.*/
- #define SPC5_HAS_EDMA TRUE
- #define SPC5_EDMA_NCHANNELS 16
- #define SPC5_EDMA_HAS_MUX TRUE
- /* LINFlex attributes.*/
- #define SPC5_HAS_LINFLEX0 TRUE
- #define SPC5_LINFLEX0_PCTL 48
- #define SPC5_LINFLEX0_RXI_HANDLER vector79
- #define SPC5_LINFLEX0_TXI_HANDLER vector80
- #define SPC5_LINFLEX0_ERR_HANDLER vector81
- #define SPC5_LINFLEX0_RXI_NUMBER 79
- #define SPC5_LINFLEX0_TXI_NUMBER 80
- #define SPC5_LINFLEX0_ERR_NUMBER 81
- #define SPC5_LINFLEX0_CLK (halSPCGetSystemClock() / 1)
- #define SPC5_HAS_LINFLEX1 TRUE
- #define SPC5_LINFLEX1_PCTL 49
- #define SPC5_LINFLEX1_RXI_HANDLER vector99
- #define SPC5_LINFLEX1_TXI_HANDLER vector100
- #define SPC5_LINFLEX1_ERR_HANDLER vector101
- #define SPC5_LINFLEX1_RXI_NUMBER 99
- #define SPC5_LINFLEX1_TXI_NUMBER 100
- #define SPC5_LINFLEX1_ERR_NUMBER 101
- #define SPC5_LINFLEX1_CLK (halSPCGetSystemClock() / 1)
- #define SPC5_HAS_LINFLEX2 FALSE
- #define SPC5_HAS_LINFLEX3 FALSE
- #define SPC5_HAS_LINFLEX4 FALSE
- #define SPC5_HAS_LINFLEX5 FALSE
- #define SPC5_HAS_LINFLEX6 FALSE
- #define SPC5_HAS_LINFLEX7 FALSE
- #define SPC5_HAS_LINFLEX8 FALSE
- #define SPC5_HAS_LINFLEX9 FALSE
- /* SIUL attributes.*/
- #define SPC5_HAS_SIUL TRUE
- #define SPC5_SIUL_NUM_PORTS 8
- #if defined(_SPC560PXX_SMALL_)
- #define SPC5_SIUL_NUM_PCRS 72
- #else
- #define SPC5_SIUL_NUM_PCRS 108
- #endif
- #define SPC5_SIUL_NUM_PADSELS 36
- /* FlexPWM attributes.*/
- #if defined(_SPC560PXX_SMALL_) || defined(_SPC560PXX_MEDIUM_)
- #define SPC5_HAS_FLEXPWM0 TRUE
- #define SPC5_FLEXPWM0_PCTL 41
- #define SPC5_FLEXPWM0_RF0_HANDLER vector179
- #define SPC5_FLEXPWM0_COF0_HANDLER vector180
- #define SPC5_FLEXPWM0_CAF0_HANDLER vector181
- #define SPC5_FLEXPWM0_RF1_HANDLER vector182
- #define SPC5_FLEXPWM0_COF1_HANDLER vector183
- #define SPC5_FLEXPWM0_CAF1_HANDLER vector184
- #define SPC5_FLEXPWM0_RF2_HANDLER vector185
- #define SPC5_FLEXPWM0_COF2_HANDLER vector186
- #define SPC5_FLEXPWM0_CAF2_HANDLER vector187
- #define SPC5_FLEXPWM0_RF3_HANDLER vector188
- #define SPC5_FLEXPWM0_COF3_HANDLER vector189
- #define SPC5_FLEXPWM0_CAF3_HANDLER vector190
- #define SPC5_FLEXPWM0_FFLAG_HANDLER vector191
- #define SPC5_FLEXPWM0_REF_HANDLER vector192
- #define SPC5_FLEXPWM0_RF0_NUMBER 179
- #define SPC5_FLEXPWM0_COF0_NUMBER 180
- #define SPC5_FLEXPWM0_CAF0_NUMBER 181
- #define SPC5_FLEXPWM0_RF1_NUMBER 182
- #define SPC5_FLEXPWM0_COF1_NUMBER 183
- #define SPC5_FLEXPWM0_CAF1_NUMBER 184
- #define SPC5_FLEXPWM0_RF2_NUMBER 185
- #define SPC5_FLEXPWM0_COF2_NUMBER 186
- #define SPC5_FLEXPWM0_CAF2_NUMBER 187
- #define SPC5_FLEXPWM0_RF3_NUMBER 188
- #define SPC5_FLEXPWM0_COF3_NUMBER 189
- #define SPC5_FLEXPWM0_CAF3_NUMBER 190
- #define SPC5_FLEXPWM0_FFLAG_NUMBER 191
- #define SPC5_FLEXPWM0_REF_NUMBER 192
- #define SPC5_FLEXPWM0_CLK SPC5_MCONTROL_CLK
- #else /* defined(_SPC560PXX_LARGE_) */
- #define SPC5_HAS_FLEXPWM0 FALSE
- #endif /* defined(_SPC560PXX_LARGE_) */
- #define SPC5_HAS_FLEXPWM1 FALSE
- /* eTimer attributes.*/
- #define SPC5_HAS_ETIMER0 TRUE
- #define SPC5_ETIMER0_PCTL 38
- #define SPC5_ETIMER0_TC0IR_HANDLER vector157
- #define SPC5_ETIMER0_TC1IR_HANDLER vector158
- #define SPC5_ETIMER0_TC2IR_HANDLER vector159
- #define SPC5_ETIMER0_TC3IR_HANDLER vector160
- #define SPC5_ETIMER0_TC4IR_HANDLER vector161
- #define SPC5_ETIMER0_TC5IR_HANDLER vector162
- #define SPC5_ETIMER0_WTIF_HANDLER vector165
- #define SPC5_ETIMER0_RCF_HANDLER vector167
- #define SPC5_ETIMER0_TC0IR_NUMBER 157
- #define SPC5_ETIMER0_TC1IR_NUMBER 158
- #define SPC5_ETIMER0_TC2IR_NUMBER 159
- #define SPC5_ETIMER0_TC3IR_NUMBER 160
- #define SPC5_ETIMER0_TC4IR_NUMBER 161
- #define SPC5_ETIMER0_TC5IR_NUMBER 162
- #define SPC5_ETIMER0_WTIF_NUMBER 165
- #define SPC5_ETIMER0_RCF_NUMBER 167
- #define SPC5_ETIMER0_CLK SPC5_MCONTROL_CLK
- #if defined(_SPC560PXX_MEDIUM_) || defined(_SPC560PXX_LARGE_)
- #define SPC5_HAS_ETIMER1 TRUE
- #define SPC5_ETIMER1_PCTL 39
- #define SPC5_ETIMER1_TC0IR_HANDLER vector168
- #define SPC5_ETIMER1_TC1IR_HANDLER vector169
- #define SPC5_ETIMER1_TC2IR_HANDLER vector170
- #define SPC5_ETIMER1_TC3IR_HANDLER vector171
- #define SPC5_ETIMER1_TC4IR_HANDLER vector172
- #define SPC5_ETIMER1_TC5IR_HANDLER vector173
- #define SPC5_ETIMER1_RCF_HANDLER vector178
- #define SPC5_ETIMER1_TC0IR_NUMBER 168
- #define SPC5_ETIMER1_TC1IR_NUMBER 169
- #define SPC5_ETIMER1_TC2IR_NUMBER 170
- #define SPC5_ETIMER1_TC3IR_NUMBER 171
- #define SPC5_ETIMER1_TC4IR_NUMBER 172
- #define SPC5_ETIMER1_TC5IR_NUMBER 173
- #define SPC5_ETIMER1_RCF_NUMBER 178
- #define SPC5_ETIMER1_CLK SPC5_MCONTROL_CLK
- #else /* !(defined(_SPC560PXX_MEDIUM_) || defined(_SPC560PXX_LARGE_)) */
- #define SPC5_HAS_ETIMER1 FALSE
- #endif /* !(defined(_SPC560PXX_MEDIUM_) || defined(_SPC560PXX_LARGE_)) */
- #define SPC5_HAS_ETIMER2 FALSE
- #define SPC5_HAS_ETIMER3 FALSE
- /* FlexCAN attributes.*/
- #define SPC5_HAS_FLEXCAN0 TRUE
- #define SPC5_FLEXCAN0_PCTL 16
- #define SPC5_FLEXCAN0_MB 32
- #define SPC5_FLEXCAN0_SHARED_IRQ TRUE
- #define SPC5_FLEXCAN0_FLEXCAN_ESR_ERR_INT_HANDLER vector65
- #define SPC5_FLEXCAN0_FLEXCAN_ESR_BOFF_HANDLER vector66
- #define SPC5_FLEXCAN0_FLEXCAN_ESR_WAK_HANDLER vector67
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_00_03_HANDLER vector68
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_04_07_HANDLER vector69
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_08_11_HANDLER vector70
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_12_15_HANDLER vector71
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_16_31_HANDLER vector72
- #define SPC5_FLEXCAN0_FLEXCAN_ESR_ERR_INT_NUMBER 65
- #define SPC5_FLEXCAN0_FLEXCAN_ESR_BOFF_NUMBER 66
- #define SPC5_FLEXCAN0_FLEXCAN_ESR_WAK_NUMBER 67
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_00_03_NUMBER 68
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_04_07_NUMBER 69
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_08_11_NUMBER 70
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_12_15_NUMBER 71
- #define SPC5_FLEXCAN0_FLEXCAN_BUF_16_31_NUMBER 72
- #define SPC5_FLEXCAN0_ENABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_FLEXCAN0_PCTL, SPC5_CAN_FLEXCAN0_START_PCTL)
- #define SPC5_FLEXCAN0_DISABLE_CLOCK() \
- halSPCSetPeripheralClockMode(SPC5_FLEXCAN0_PCTL, SPC5_CAN_FLEXCAN0_STOP_PCTL)
- /* ADC attributes.*/
- #define SPC5_ADC_HAS_TRC TRUE
- #define SPC5_HAS_ADC0 TRUE
- #define SPC5_ADC_ADC0_HAS_CTR0 TRUE
- #define SPC5_ADC_ADC0_HAS_CTR1 FALSE
- #define SPC5_ADC_ADC0_HAS_CTR2 FALSE
- #define SPC5_ADC_ADC0_HAS_NCMR0 TRUE
- #define SPC5_ADC_ADC0_HAS_NCMR1 FALSE
- #define SPC5_ADC_ADC0_HAS_NCMR2 FALSE
- #define SPC5_ADC_ADC0_HAS_THRHLR0 TRUE
- #define SPC5_ADC_ADC0_HAS_THRHLR1 TRUE
- #define SPC5_ADC_ADC0_HAS_THRHLR2 TRUE
- #define SPC5_ADC_ADC0_HAS_THRHLR3 TRUE
- #define SPC5_ADC_ADC0_HAS_CIMR0 FALSE
- #define SPC5_ADC_ADC0_HAS_CIMR1 FALSE
- #define SPC5_ADC_ADC0_HAS_CIMR2 FALSE
- #define SPC5_ADC_ADC0_HAS_CEOCFR0 FALSE
- #define SPC5_ADC_ADC0_HAS_CEOCFR1 FALSE
- #define SPC5_ADC_ADC0_HAS_CEOCFR2 FALSE
- #define SPC5_ADC0_PCTL 32
- #define SPC5_ADC0_DMA_DEV_ID 20
- #define SPC5_ADC0_EOC_HANDLER vector62
- #define SPC5_ADC0_EOC_NUMBER 62
- #define SPC5_ADC0_WD_HANDLER vector64
- #define SPC5_ADC0_WD_NUMBER 64
- #define SPC5_HAS_ADC1 TRUE
- #define SPC5_ADC_ADC1_HAS_CTR0 TRUE
- #define SPC5_ADC_ADC1_HAS_CTR1 FALSE
- #define SPC5_ADC_ADC1_HAS_CTR2 FALSE
- #define SPC5_ADC_ADC1_HAS_NCMR0 TRUE
- #define SPC5_ADC_ADC1_HAS_NCMR1 FALSE
- #define SPC5_ADC_ADC1_HAS_NCMR2 FALSE
- #define SPC5_ADC_ADC1_HAS_THRHLR0 TRUE
- #define SPC5_ADC_ADC1_HAS_THRHLR1 TRUE
- #define SPC5_ADC_ADC1_HAS_THRHLR2 TRUE
- #define SPC5_ADC_ADC1_HAS_THRHLR3 TRUE
- #define SPC5_ADC_ADC0_HAS_CIMR0 FALSE
- #define SPC5_ADC_ADC0_HAS_CIMR1 FALSE
- #define SPC5_ADC_ADC0_HAS_CIMR2 FALSE
- #define SPC5_ADC_ADC0_HAS_CEOCFR0 FALSE
- #define SPC5_ADC_ADC0_HAS_CEOCFR1 FALSE
- #define SPC5_ADC_ADC0_HAS_CEOCFR2 FALSE
- #define SPC5_ADC1_PCTL 33
- #define SPC5_ADC1_DMA_DEV_ID 21
- #define SPC5_ADC1_EOC_HANDLER vector82
- #define SPC5_ADC1_EOC_NUMBER 82
- #define SPC5_ADC1_WD_HANDLER vector84
- #define SPC5_ADC1_WD_NUMBER 84
- /** @} */
- #endif /* SPC5_REGISTRY_H */
- /** @} */
|