File indexing completed on 2025-05-11 08:23:03
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 #ifndef LIBBSP_ARM_LM3S69XX_LM3S69XX_H
0020 #define LIBBSP_ARM_LM3S69XX_LM3S69XX_H
0021 #include <bspopts.h>
0022 #include <bsp/utility.h>
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 #define LM3S69XX_SYSCON_BASE 0x400fe000
0033
0034 #define LM3S69XX_UART_0_BASE 0x4000c000
0035 #define LM3S69XX_UART_1_BASE 0x4000d000
0036 #define LM3S69XX_UART_2_BASE 0x4000e000
0037
0038 #ifdef LM3S69XX_USE_AHB_FOR_GPIO
0039 #define LM3S69XX_GPIO_A_BASE 0x40058000
0040 #define LM3S69XX_GPIO_B_BASE 0x40059000
0041 #define LM3S69XX_GPIO_C_BASE 0x4005a000
0042 #define LM3S69XX_GPIO_D_BASE 0x4005b000
0043 #define LM3S69XX_GPIO_E_BASE 0x4005c000
0044 #define LM3S69XX_GPIO_F_BASE 0x4005d000
0045 #if LM3S69XX_NUM_GPIO_BLOCKS > 6
0046 #define LM3S69XX_GPIO_G_BASE 0x4005e000
0047 #if LM3S69XX_NUM_GPIO_BLOCKS > 7
0048 #define LM3S69XX_GPIO_H_BASE 0x4005f000
0049 #endif
0050 #endif
0051
0052 #define LM3S69XX_GPIO(port) ((volatile lm3s69xx_gpio *)(LM3S69XX_GPIO_A_BASE + (port) * 0x1000))
0053 #else
0054 #define LM3S69XX_GPIO_A_BASE 0x40004000
0055 #define LM3S69XX_GPIO_B_BASE 0x40005000
0056 #define LM3S69XX_GPIO_C_BASE 0x40006000
0057 #define LM3S69XX_GPIO_D_BASE 0x40007000
0058 #define LM3S69XX_GPIO_E_BASE 0x40024000
0059 #define LM3S69XX_GPIO_F_BASE 0x40025000
0060 #if LM3S69XX_NUM_GPIO_BLOCKS > 6
0061 #define LM3S69XX_GPIO_G_BASE 0x40026000
0062 #if LM3S69XX_NUM_GPIO_BLOCKS > 7
0063 #define LM3S69XX_GPIO_H_BASE 0x40027000
0064 #endif
0065 #endif
0066
0067 #define LM3S69XX_GPIO(port) ((volatile lm3s69xx_gpio *)(((port) < 4) ? \
0068 (LM3S69XX_GPIO_A_BASE + (port) * 0x1000) : \
0069 (LM3S69XX_GPIO_E_BASE + ((port) - 4) * 0x1000)))
0070 #endif
0071
0072 #define LM3S69XX_SSI_0_BASE 0x40008000
0073 #if LM3S69XX_NUM_SSI_BLOCKS > 1
0074 #define LM3S69XX_SSI_1_BASE 0x40009000
0075 #if LM3S69XX_NUM_SSI_BLOCKS > 2
0076 #define LM3S69XX_SSI_2_BASE 0x4000A000
0077 #if LM3S69XX_NUM_SSI_BLOCKS > 3
0078 #define LM3S69XX_SSI_3_BASE 0x4000B000
0079 #endif
0080 #endif
0081 #endif
0082
0083 #define LM3S69XX_SYSCON ((volatile lm3s69xx_syscon *)LM3S69XX_SYSCON_BASE)
0084
0085 #define LM3S69XX_PLL_FREQUENCY 400000000U
0086
0087 typedef struct {
0088 uint32_t data[256];
0089 uint32_t dir;
0090 uint32_t is;
0091 uint32_t ibe;
0092 uint32_t iev;
0093 uint32_t im;
0094 uint32_t ris;
0095 uint32_t mis;
0096 uint32_t icr;
0097 uint32_t afsel;
0098
0099 uint32_t reserved_0[55];
0100
0101 uint32_t dr2r;
0102 uint32_t dr4r;
0103 uint32_t dr8r;
0104 uint32_t odr;
0105 uint32_t pur;
0106 uint32_t pdr;
0107 uint32_t slr;
0108 uint32_t den;
0109 uint32_t lock;
0110 uint32_t cr;
0111 uint32_t amsel;
0112 } lm3s69xx_gpio;
0113
0114 typedef struct {
0115 uint32_t did0;
0116 uint32_t did1;
0117
0118 uint32_t dc0;
0119 uint32_t reserved_0;
0120 uint32_t dc1;
0121 uint32_t dc2;
0122 uint32_t dc3;
0123 uint32_t dc4;
0124 uint32_t dc5;
0125 uint32_t dc6;
0126 uint32_t dc7;
0127
0128 uint32_t reserved_1;
0129
0130 #define SYSCONPBORCTL_BORIOR BSP_BIT32(1)
0131 uint32_t pborctl;
0132
0133 #define SYSCONLDOPCTL_VADJ(val) BSP_FLD32(val, 0, 5)
0134 #define SYSCONLDOPCTL_VADJ_MASK BSP_MSK32(0, 5)
0135 uint32_t ldopctl;
0136
0137 uint32_t reserved_2[2];
0138
0139 uint32_t srcr0;
0140 uint32_t srcr1;
0141 uint32_t srcr2;
0142
0143 uint32_t reserved_3;
0144
0145 #define SYSCONRIS_MOSCPUPRIS BSP_BIT32(8)
0146 #define SYSCONRIS_USBPLLRIS BSP_BIT32(7)
0147 #define SYSCONRIS_PLLLRIS BSP_BIT32(6)
0148 #define SYSCONRIS_BORRIS BSP_BIT32(1)
0149 uint32_t ris;
0150
0151 #define SYSCONIMC_MOSCPUPIM BSP_BIT32(8)
0152 #define SYSCONIMC_USBPLLLIM BSP_BIT32(7)
0153 #define SYSCONIMC_PLLLIM BSP_BIT32(6)
0154 #define SYSCONIMC_BORIM BSP_BIT32(1)
0155 uint32_t imc;
0156
0157 #define SYSCONMISC_MOSCPUPMIS BSP_BIT32(8)
0158 #define SYSCONMISC_USBPLLLMIS BSP_BIT32(7)
0159 #define SYSCONMISC_PLLLMIS BSP_BIT32(6)
0160 #define SYSCONMISC_BORMIS BSP_BIT32(1)
0161 uint32_t misc;
0162
0163 #define SYSCONRESC_MOSCFAIL BSP_BIT32(16)
0164 #define SYSCONRESC_SW BSP_BIT32(4)
0165 #define SYSCONRESC_WDT BSP_BIT32(3)
0166 #define SYSCONRESC_BOR BSP_BIT32(2)
0167 #define SYSCONRESC_POR BSP_BIT32(1)
0168 #define SYSCONRESC_EXT BSP_BIT32(0)
0169 uint32_t resc;
0170
0171 #define SYSCONRCC_AGC BSP_BIT32(27)
0172 #define SYSCONRCC_SYSDIV(val) BSP_FLD32(val, 23, 26)
0173 #define SYSCONRCC_SYSDIV_MSK BSP_MSK32(23, 26)
0174 #define SYSCONRCC_USESYSDIV BSP_BIT32(22)
0175 #define SYSCONRCC_USEPWMDIV BSP_BIT32(20)
0176 #define SYSCONRCC_PWMDIV(val) BSP_FLD32(val, 17, 19)
0177 #define SYSCONRCC_PWMDIV_DIV2_VAL 0
0178 #define SYSCONRCC_PWMDIV_DIV4_VAL 1
0179 #define SYSCONRCC_PWMDIV_DIV8_VAL 2
0180 #define SYSCONRCC_PWMDIV_DIV16_VAL 3
0181 #define SYSCONRCC_PWMDIV_DIV32_VAL 4
0182 #define SYSCONRCC_PWMDIV_DIV64_VAL 5
0183 #define SYSCONRCC_PWMDIV_MSK BSP_MSK32(17, 19)
0184 #define SYSCONRCC_PWRDN BSP_BIT32(13)
0185 #define SYSCONRCC_BYPASS BSP_BIT32(11)
0186 #define SYSCONRCC_XTAL(val) BSP_FLD32(val, 6, 10)
0187 #define SYSCONRCC_XTAL_MSK BSP_MSK32(6, 10)
0188 #define SYSCONRCC_OSCSRC(val) BSP_FLD32(val, 4, 5)
0189 #define SYSCONRCC_OSCSRC_MOSC SYSCONRCC_OSCSRC(0x0)
0190 #define SYSCONRCC_OSCSRC_IOSC SYSCONRCC_OSCSRC(0x1)
0191 #define SYSCONRCC_OSCSRC_IOSC_DIV_4 SYSCONRCC_OSCSRC(0x2)
0192 #define SYSCONRCC_OSCSRC_30KHZ SYSCONRCC_OSCSRC(0x3)
0193 #define SYSCONRCC_OSCSRC_MSK BSP_MSK32(4, 5)
0194 #define SYSCONRCC_IOSCDIS BSP_BIT32(1)
0195 #define SYSCONRCC_MOSCDIS BSP_BIT32(0)
0196 uint32_t rcc;
0197
0198 #define SYSCONPLLCFG_F(val) BSP_FLD32(val, 5, 13)
0199 #define SYSCONPLLCFG_F_MSK BSP_MSK32(5, 13)
0200 #define SYSCONPLLCFG_R(val) BSP_FLD32(val, 0, 4)
0201 #define SYSCONPLLCFG_R_MSK BSP_MSK32(0, 4)
0202 uint32_t pllcfg;
0203
0204 uint32_t reserved_4;
0205
0206 #define SYSCONGPIOHBCTL_PORTH BSP_BIT32(7)
0207 #define SYSCONGPIOHBCTL_PORTG BSP_BIT32(6)
0208 #define SYSCONGPIOHBCTL_PORTF BSP_BIT32(5)
0209 #define SYSCONGPIOHBCTL_PORTE BSP_BIT32(4)
0210 #define SYSCONGPIOHBCTL_PORTD BSP_BIT32(3)
0211 #define SYSCONGPIOHBCTL_PORTC BSP_BIT32(2)
0212 #define SYSCONGPIOHBCTL_PORTB BSP_BIT32(1)
0213 #define SYSCONGPIOHBCTL_PORTA BSP_BIT32(0)
0214 uint32_t gpiohbctl;
0215
0216 #define SYSCONRCC2_USERCC2 BSP_BIT32(31)
0217 #define SYSCONRCC2_DIV400 BSP_BIT32(30)
0218 #define SYSCONRCC2_SYSDIV2(val) BSP_FLD32(val, 23, 28)
0219 #define SYSCONRCC2_SYSDIV2_MSK BSP_MSK32(23, 28)
0220 #define SYSCONRCC2_SYSDIV2EXT(val) BSP_FLD32(val, 22, 28)
0221 #define SYSCONRCC2_SYSDIV2EXT_MSK BSP_MSK32(22, 28)
0222 #define SYSCONRCC2_USBPWRDN BSP_BIT32(14)
0223 #define SYSCONRCC2_PWRDN2 BSP_BIT32(13)
0224 #define SYSCONRCC2_BYPASS2 BSP_BIT32(11)
0225 #define SYSCONRCC2_OSCSRC2(val) BSP_FLD32(val, 4, 6)
0226 #define SYSCONRCC2_OSCSRC2_MSK BSP_MSK32(4, 6)
0227 uint32_t rcc2;
0228
0229 uint32_t reserved_5[2];
0230
0231 #define SYSCONMOSCCTL_CVAL BSP_BIT32(0)
0232 uint32_t moscctl;
0233
0234 uint32_t reserved_6[32];
0235
0236 #define SYSCONRCGC0_PWM BSP_BIT32(20)
0237 #define SYSCONRCGC0_ADC BSP_BIT32(16)
0238 #define SYSCONRCGC0_MAXADCSPD(val) BSP_FLD32(val, 8, 9)
0239 #define SYSCONRCGC0_MAXADCSPD_MSK BSP_MSK32(8, 9)
0240 #define SYSCONRCGC0_HIB BSP_BIT32(6)
0241 #define SYSCONRCGC0_WDT BSP_BIT32(3)
0242 uint32_t rcgc0;
0243
0244 #define SYSCONRCGC1_COMP1 BSP_BIT32(25)
0245 #define SYSCONRCGC1_COMP0 BSP_BIT32(24)
0246 #define SYSCONRCGC1_TIMER3 BSP_BIT32(19)
0247 #define SYSCONRCGC1_TIMER2 BSP_BIT32(18)
0248 #define SYSCONRCGC1_TIMER1 BSP_BIT32(17)
0249 #define SYSCONRCGC1_TIMER0 BSP_BIT32(16)
0250 #define SYSCONRCGC1_I2C1 BSP_BIT32(14)
0251 #define SYSCONRCGC1_I2C0 BSP_BIT32(12)
0252 #define SYSCONRCGC1_QEI0 BSP_BIT32(8)
0253 #if LM3S69XX_NUM_SSI_BLOCKS > 1
0254 #define SYSCONRCGC1_SSI1 BSP_BIT32(5)
0255 #endif
0256 #define SYSCONRCGC1_SSI0 BSP_BIT32(4)
0257 #define SYSCONRCGC1_UART2 BSP_BIT32(2)
0258 #define SYSCONRCGC1_UART1 BSP_BIT32(1)
0259 #define SYSCONRCGC1_UART0 BSP_BIT32(0)
0260 uint32_t rcgc1;
0261
0262 #define SYSCONRCGC2_USB0 BSP_BIT32(16)
0263 #define SYSCONRCGC2_UDMA BSP_BIT32(13)
0264 #if LM3S69XX_NUM_GPIO_BLOCKS > 7
0265 #define SYSCONRCGC2_GPIOH BSP_BIT32(7)
0266 #endif
0267 #define SYSCONRCGC2_GPIOG BSP_BIT32(6)
0268 #define SYSCONRCGC2_GPIOF BSP_BIT32(5)
0269 #define SYSCONRCGC2_GPIOE BSP_BIT32(4)
0270 #define SYSCONRCGC2_GPIOD BSP_BIT32(3)
0271 #define SYSCONRCGC2_GPIOC BSP_BIT32(2)
0272 #define SYSCONRCGC2_GPIOB BSP_BIT32(1)
0273 #define SYSCONRCGC2_GPIOA BSP_BIT32(0)
0274 uint32_t rcgc2;
0275
0276 uint32_t reserved_7;
0277
0278 uint32_t scgc0;
0279 uint32_t scgc1;
0280 uint32_t scgc2;
0281
0282 uint32_t reserved_8;
0283
0284 uint32_t dcgc0;
0285 uint32_t dcgc1;
0286 uint32_t dcgc2;
0287
0288 uint32_t reserved_9[6];
0289
0290 #define SYSCONDSLPCLKCFG_DSDIVORIDE(val) BSP_FLD32(val, 23, 28)
0291 #define SYSCONDSLPCLKCFG_DSDIVORIDE_MSK BSP_MSK32(23, 28)
0292 #define SYSCONDSLPCLKCFG_DSOSCSRC(val) BSP_FLD32(val, 4, 6)
0293 #define SYSCONDSLPCLKCFG_DSOSCSRC_MSK BSP_MSK32(4, 6)
0294 uint32_t dslpclkcfg;
0295 } lm3s69xx_syscon;
0296
0297 typedef struct {
0298 #define UARTDR_OE BSP_BIT32(11)
0299 #define UARTDR_BE BSP_BIT32(10)
0300 #define UARTDR_PE BSP_BIT32(9)
0301 #define UARTDR_FE BSP_BIT32(8)
0302 #define UARTDR_ERROR_MSK BSP_MSK32(8, 11)
0303 #define UARTDR_DATA(val) BSP_FLD32(val, 0, 7)
0304 #define UARTDR_DATA_GET(reg) BSP_FLD32GET(reg, 0, 7)
0305 uint32_t dr;
0306
0307 uint32_t rsr_ecr;
0308 uint32_t reserved_0[4];
0309
0310 #define UARTFR_TXFE BSP_BIT32(7)
0311 #define UARTFR_RXFF BSP_BIT32(6)
0312 #define UARTFR_TXFF BSP_BIT32(5)
0313 #define UARTFR_RXFE BSP_BIT32(4)
0314 #define UARTFR_BUSY BSP_BIT32(3)
0315 uint32_t fr;
0316
0317 uint32_t reserved_1;
0318
0319 uint32_t ilpr;
0320 uint32_t ibrd;
0321 uint32_t fbrd;
0322
0323 #define UARTLCRH_SPS BSP_BIT32(7)
0324 #define UARTLCRH_WLEN(val) BSP_FLD32(val, 5, 6)
0325 #define UARTLCRH_FEN BSP_BIT32(4)
0326 #define UARTLCRH_STP2 BSP_BIT32(3)
0327 #define UARTLCRH_EPS BSP_BIT32(2)
0328 #define UARTLCRH_PEN BSP_BIT32(1)
0329 #define UARTLCRH_BRK BSP_BIT32(0)
0330 uint32_t lcrh;
0331
0332 #define UARTCTL_RXE BSP_BIT32(9)
0333 #define UARTCTL_TXE BSP_BIT32(8)
0334 #define UARTCTL_LBE BSP_BIT32(7)
0335 #define UARTCTL_SIRLP BSP_BIT32(2)
0336 #define UARTCTL_SIREN BSP_BIT32(1)
0337 #define UARTCTL_UARTEN BSP_BIT32(0)
0338 uint32_t ctl;
0339
0340 #define UARTIFLS_RXIFLSEL(val) BSP_FLD32(val, 3, 5)
0341 #define UARTIFLS_TXIFLSEL(val) BSP_FLD32(val, 0, 2)
0342 uint32_t ifls;
0343
0344 #define UARTI_OE BSP_BIT32(10)
0345 #define UARTI_BE BSP_BIT32(9)
0346 #define UARTI_PE BSP_BIT32(8)
0347 #define UARTI_FE BSP_BIT32(7)
0348 #define UARTI_RT BSP_BIT32(6)
0349 #define UARTI_TX BSP_BIT32(5)
0350 #define UARTI_RX BSP_BIT32(4)
0351 uint32_t im;
0352 uint32_t ris;
0353 uint32_t mis;
0354 uint32_t icr;
0355 #if LM3S69XX_HAS_UDMA
0356 uint32_t dmactl;
0357 #endif
0358 } lm3s69xx_uart;
0359
0360 typedef struct {
0361 #define SSICR0_SCR(val) BSP_FLD32(val, 8, 15)
0362 #define SSICR0_SPH BSP_BIT32(7)
0363 #define SSICR0_SPO BSP_BIT32(6)
0364 #define SSICR0_FRF(val) BSP_FLD32(val, 4, 5)
0365 #define SSICR0_DSS(val) BSP_FLD32(val, 0, 3)
0366 uint32_t cr0;
0367
0368 #define SSICR1_SOD BSP_BIT32(3)
0369 #define SSICR1_MS BSP_BIT32(2)
0370 #define SSICR1_SSE BSP_BIT32(1)
0371 #define SSICR1_LBM BSP_BIT32(0)
0372 uint32_t cr1;
0373 uint32_t dr;
0374
0375 #define SSISR_BSY BSP_BIT32(4)
0376 #define SSISR_RFF BSP_BIT32(3)
0377 #define SSISR_RNE BSP_BIT32(2)
0378 #define SSISR_TNF BSP_BIT32(1)
0379 #define SSISR_TFE BSP_BIT32(0)
0380 uint32_t sr;
0381
0382 #define SSI_CPSRDIV(val) BSP_FLD32(val, 0, 7)
0383 uint32_t cpsr;
0384
0385 #define SSII_TX BSP_BIT32(3)
0386 #define SSII_RX BSP_BIT32(2)
0387 #define SSII_RT BSP_BIT32(1)
0388 #define SSII_ROR BSP_BIT32(0)
0389 uint32_t im;
0390 uint32_t ris;
0391 uint32_t mis;
0392 uint32_t icr;
0393
0394 #if LM3S69XX_HAS_UDMA
0395 #define SSIDMACTL_TXDMAE BSP_BIT32(1)
0396 #define SSIDMACTL_RXDMAE BSP_BIT32(0)
0397 uint32_t dmactl;
0398 #endif
0399 } lm3s69xx_ssi;
0400
0401 #endif