2 ; MSP430FR4133 minimal declarations for FAST FORTH usage
6 DEVICE = "MSP430FR4133"
8 FLL ; Frequency Locked Loop CLOCK
9 ; ----------------------------------------------
10 ; MSP430FR4133 MEMORY MAP
11 ; ----------------------------------------------
12 ; 0000-0FFF = peripherals (4 KB)
13 ; 1000-17FF = ROM bootstrap loader BSL0..3 (4x512 B)
14 ; 1800-19FF = info B (FRAM 512 B)
15 ; 1A00-1A7F = TLV device descriptor info (FRAM 128 B)
17 ; 2000-27FF = RAM (2 KB)
19 ; C400-FF7F = code memory (FRAM 15232 B)
20 ; FF80-FFFF = interrupt vectors (FRAM 128 B)
21 ; ----------------------------------------------
22 PAGESIZE .equ 512 ; MPU unit
23 ; ----------------------------------------------
25 ; ----------------------------------------------
28 TLV_ORG .equ 01A00h ; Device Descriptor Info (Tag-Lenght-Value)
30 ; ----------------------------------------------
32 ; ----------------------------------------------
35 ; ----------------------------------------------
37 ; ----------------------------------------------
38 MAIN_ORG .equ 0C400h ; Code space start
39 SIGNATURES .equ 0FF80h ; JTAG/BSL signatures
40 JTAG_SIG1 .equ 0FF80h ; if 0 (electronic fuse=0) enable JTAG/SBW ; reset by wipe and by S1+<reset>
41 JTAG_SIG2 .equ 0FF82h ; if JTAG_SIG <> |0xFFFFFFFF, 0x00000000|, SBW and JTAG are locked
42 BSL_SIG1 .equ 0FF84h ;
43 BSL_SIG2 .equ 0FF86h ;
44 I2CSLA0 .equ 0FFA2h ; UCBxI2COA0 default value address
45 I2CSLA1 .equ 0FFA4h ; UCBxI2COA1 default value address
46 I2CSLA2 .equ 0FFA6h ; UCBxI2COA2 default value address
47 I2CSLA3 .equ 0FFA8h ; UCBxI2COA3 default value address
48 JTAG_PASSWORD .equ 0FF88h ; 256 bits
49 VECT_ORG .equ 0FFE2h ; FFE2-FFFF
51 BSL_PASSWORD .equ 0FFE0h ; 256 bits
53 ; ----------------------------------------------
54 ; Interrupt Vectors and signatures - MSP430FR4133
55 ; ----------------------------------------------
58 ;;Start of JTAG and BSL signatures
59 ; .word 0FFFFh ; JTAG signature 1
60 ; .word 0FFFFh ; JTAG signature 2
61 ; .word 0FFFFh ; BSL signature 1, 5555h to disable BSL
62 ; .word 0FFFFh ; BSL signature 2
64 ; .org INTVECT ; FFE2-FFFF 14 vectors + reset
66 ; .word reset ; 0FFE2h - LCD
67 ; .word reset ; 0FFE4h - P2
68 ; .word reset ; 0FFE6h - P1
69 ; .word reset ; 0FFE8h - ADC10
70 ; .word reset ; 0FFEAh - eUSCI_B0
71 ; .word reset ; 0FFECh - eUSCI_A0
72 ; .word reset ; 0FFEEh - WDT
73 ; .word reset ; 0FFF0h - RTC
74 ; .word reset ; 0FFF2h - TA1_x
75 ; .word reset ; 0FFF4h - TA1_0
76 ; .word reset ; 0FFF6h - TA0_x
77 ; .word reset ; 0FFF8h - TA0_0
78 ; .word reset ; 0FFFAh - UserNMI
79 ; .word reset ; 0FFFCh - SysNMI
80 ; .word reset ; 0FFFEh - Reset
83 ; ----------------------------------------------------------------------
84 ; EXP430FR4133 Peripheral File Map
85 ; ----------------------------------------------------------------------
86 SFR_SFR .equ 0100h ; Special function
87 PMM_SFR .equ 0120h ; PMM
88 SYS_SFR .equ 0140h ; SYS
89 CS_SFR .equ 0180h ; Clock System
90 FRAM_SFR .equ 01A0h ; FRAM control
92 WDT_A_SFR .equ 01CCh ; Watchdog
93 PA_SFR .equ 0200h ; PORT1/2
94 PB_SFR .equ 0220h ; PORT3/4
95 PC_SFR .equ 0240h ; PORT5/6
96 PD_SFR .equ 0260h ; PORT7/8
97 CTIO0_SFR .equ 02E0h ; Capacitive Touch IO
101 eUSCI_A0_SFR .equ 0500h ; eUSCI_A0
102 eUSCI_B0_SFR .equ 0540h ; eUSCI_B0
104 BACK_MEM_SFR .equ 0660h
105 ADC10_B_SFR .equ 0700h
108 ; ----------------------------------------------------------------------
109 ; POWER ON RESET AND INITIALIZATION : LOCK PMM_LOCKLPM5
110 ; ----------------------------------------------------------------------
112 SFRIFG1 .equ SFR_SFR + 2
113 SFRRPCR .equ SFR_SFR + 4
118 PM5CTL0 .equ PMM_SFR + 10h ; Power mode 5 control register 0
119 LOCKLPM5 .equ 1 ; bit position
121 ; ----------------------------------------------------------------------
122 ; POWER ON RESET SYS config
123 ; ----------------------------------------------------------------------
124 SYSCTL .equ SYS_SFR + 00h ; System control
125 SYSBSLC .equ SYS_SFR + 02h ; Bootstrap loader configuration area
126 SYSJMBC .equ SYS_SFR + 06h ; JTAG mailbox control
127 SYSJMBI0 .equ SYS_SFR + 08h ; JTAG mailbox input 0
128 SYSJMBI1 .equ SYS_SFR + 0Ah ; JTAG mailbox input 1
129 SYSJMBO0 .equ SYS_SFR + 0Ch ; JTAG mailbox output 0
130 SYSJMBO1 .equ SYS_SFR + 0Eh ; JTAG mailbox output 1
131 SYSBERRIV .equ SYS_SFR + 18h ; Bus Error vector generator
132 SYSUNIV .equ SYS_SFR + 1Ah ; User NMI vector generator
133 SYSSNIV .equ SYS_SFR + 1Ch ; System NMI vector generator
134 SYSRSTIV .equ SYS_SFR + 1Eh ; Reset vector generator
135 SYSCFG0 .equ SYS_SFR + 20h ; System configuration 0
136 SYSCFG1 .equ SYS_SFR + 22h ; System configuration 1
137 SYSCFG2 .equ SYS_SFR + 24h ; System configuration 2
141 ; ----------------------------------------------------------------------
142 ; POWER ON RESET AND INITIALIZATION : WATCHDOG TIMER A
143 ; ----------------------------------------------------------------------
145 WDTCTL .equ WDT_A_SFR + 00h ; Watchdog Timer Control */
147 ; WDTCTL Control Bits
149 WDTHOLD .equ 0080h ; WDT - Timer hold
150 WDTCNTCL .equ 0008h ; WDT timer counter clear
153 ; ----------------------------------------------------------------------
154 ; POWER ON RESET AND INITIALIZATION : PORT1/2
155 ; ----------------------------------------------------------------------
157 PAIN .equ PA_SFR + 00h ; Port A Input
158 PAOUT .equ PA_SFR + 02h ; Port A Output
159 PADIR .equ PA_SFR + 04h ; Port A Direction
160 PAREN .equ PA_SFR + 06h ; Port A Resistor Enable
161 PASEL0 .equ PA_SFR + 0Ah ; Port A Selection 0
162 PASEL1 .equ PA_SFR + 0Ch ; Port A Selection 1
163 PAIES .equ PA_SFR + 18h ; Port A Interrupt Edge Select
164 PAIE .equ PA_SFR + 1Ah ; Port A Interrupt Enable
165 PAIFG .equ PA_SFR + 1Ch ; Port A Interrupt Flag
167 P1IN .equ PA_SFR + 00h ; Port 1 Input
168 P1OUT .equ PA_SFR + 02h ; Port 1 Output
169 P1DIR .equ PA_SFR + 04h ; Port 1 Direction
170 P1REN .equ PA_SFR + 06h ; Port 1 Resistor Enable
171 P1SEL0 .equ PA_SFR + 0Ah ; Port 1 Selection 0
172 P1SEL1 .equ PA_SFR + 0Ch ; Port 1 Selection 1
173 P1IV .equ PA_SFR + 0Eh ; Port 1 Interrupt Vector word
174 P1IES .equ PA_SFR + 18h ; Port 1 Interrupt Edge Select
175 P1IE .equ PA_SFR + 1Ah ; Port 1 Interrupt Enable
176 P1IFG .equ PA_SFR + 1Ch ; Port 1 Interrupt Flag
178 P2IN .equ PA_SFR + 01h ; Port 2 Input
179 P2OUT .equ PA_SFR + 03h ; Port 2 Output
180 P2DIR .equ PA_SFR + 05h ; Port 2 Direction
181 P2REN .equ PA_SFR + 07h ; Port 2 Resistor Enable
182 P2SEL0 .equ PA_SFR + 0Bh ; Port 2 Selection 0
183 P2SEL1 .equ PA_SFR + 0Dh ; Port 2 Selection 1
184 P2IES .equ PA_SFR + 19h ; Port 2 Interrupt Edge Select
185 P2IE .equ PA_SFR + 1Bh ; Port 2 Interrupt Enable
186 P2IFG .equ PA_SFR + 1Dh ; Port 2 Interrupt Flag
187 P2IV .equ PA_SFR + 1Eh ; Port 2 Interrupt Vector word
189 ; ----------------------------------------------------------------------
190 ; POWER ON RESET AND INITIALIZATION : PORT3/4
191 ; ----------------------------------------------------------------------
194 PBIN .set PB_SFR + 00h ; Port B Input
195 PBOUT .set PB_SFR + 02h ; Port B Output 1/0 or pullup/pulldown resistor
196 PBDIR .set PB_SFR + 04h ; Port B Direction
197 PBREN .set PB_SFR + 06h ; Port B Resistor Enable
198 PBSEL0 .set PB_SFR + 0Ah ; Port B Selection 0
199 PBSEL1 .set PB_SFR + 0Ch ; Port B Selection 1
201 P3IN .set PB_SFR + 00h ; Port 3 Input */
202 P3OUT .set PB_SFR + 02h ; Port 3 Output
203 P3DIR .set PB_SFR + 04h ; Port 3 Direction
204 P3REN .set PB_SFR + 06h ; Port 3 Resistor Enable
205 P3SEL0 .set PB_SFR + 0Ah ; Port 3 Selection 0
206 P3SEL1 .set PB_SFR + 0Ch ; Port 3 Selection 1
208 P4IN .set PB_SFR + 01h ; Port 4 Input */
209 P4OUT .set PB_SFR + 03h ; Port 4 Output
210 P4DIR .set PB_SFR + 05h ; Port 4 Direction
211 P4REN .set PB_SFR + 07h ; Port 4 Resistor Enable
212 P4SEL0 .set PB_SFR + 0Bh ; Port 4 Selection 0
213 P4SEL1 .set PB_SFR + 0Dh ; Port 4 Selection 1
216 ; ----------------------------------------------------------------------
217 ; POWER ON RESET AND INITIALIZATION : PORT5/6
218 ; ----------------------------------------------------------------------
221 PCIN .set PC_SFR + 00h ; Port C Input
222 PCOUT .set PC_SFR + 02h ; Port C Output 1/0 or pullup/pulldown resistor
223 PCDIR .set PC_SFR + 04h ; Port C Direction
224 PCREN .set PC_SFR + 06h ; Port C Resistor Enable
225 PCSEL0 .set PC_SFR + 0Ah ; Port C Selection 0
226 PCSEL1 .set PC_SFR + 0Ch ; Port C Selection 1
228 P5IN .set PC_SFR + 00h ; Port 5 Input */
229 P5OUT .set PC_SFR + 02h ; Port 5 Output
230 P5DIR .set PC_SFR + 04h ; Port 5 Direction
231 P5REN .set PC_SFR + 06h ; Port 5 Resistor Enable
232 P5SEL0 .set PC_SFR + 0Ah ; Port 5 Selection 0
233 P5SEL1 .set PC_SFR + 0Ch ; Port 5 Selection 1
235 P6IN .set PC_SFR + 01h ; Port 6 Input */
236 P6OUT .set PC_SFR + 03h ; Port 6 Output
237 P6DIR .set PC_SFR + 05h ; Port 6 Direction
238 P6REN .set PC_SFR + 07h ; Port 6 Resistor Enable
239 P6SEL0 .set PC_SFR + 0Bh ; Port 6 Selection 0
240 P6SEL1 .set PC_SFR + 0Dh ; Port 6 Selection 1
242 ; ----------------------------------------------------------------------
243 ; POWER ON RESET AND INITIALIZATION : PORT7/8
244 ; ----------------------------------------------------------------------
247 PDIN .set PD_SFR + 00h ; Port D Input
248 PDOUT .set PD_SFR + 02h ; Port D Output 1/0 or pullup/pulldown resistor
249 PDDIR .set PD_SFR + 04h ; Port D Direction
250 PDREN .set PD_SFR + 06h ; Port D Resistor Enable
251 PDSEL0 .set PD_SFR + 0Ah ; Port D Selection 0
252 PDSEL1 .set PD_SFR + 0Ch ; Port D Selection 1
254 P7IN .set PD_SFR + 00h ; Port 7 Input */
255 P7OUT .set PD_SFR + 02h ; Port 7 Output
256 P7DIR .set PD_SFR + 04h ; Port 7 Direction
257 P7REN .set PD_SFR + 06h ; Port 7 Resistor Enable
258 P7SEL0 .set PD_SFR + 0Ah ; Port 7 Selection 0
259 P7SEL1 .set PD_SFR + 0Ch ; Port 7 Selection 1
261 P8IN .set PD_SFR + 01h ; Port 8 Input */
262 P8OUT .set PD_SFR + 03h ; Port 8 Output
263 P8DIR .set PD_SFR + 05h ; Port 8 Direction
264 P8REN .set PD_SFR + 07h ; Port 8 Resistor Enable
265 P8SEL0 .set PD_SFR + 0Bh ; Port 8 Selection 0
266 P8SEL1 .set PD_SFR + 0Dh ; Port 8 Selection 1
268 ; ----------------------------------------------------------------------
270 ; ----------------------------------------------------------------------
272 FRCTL0 .equ FRAM_SFR + 00h ; FRAM Controller Control 0
273 FRCTL0_H .equ FRAM_SFR + 01h ; FRAM Controller Control 0 high byte
275 ; ----------------------------------------------------------------------
276 ; POWER ON RESET AND INITIALIZATION : CLOCK SYSTEM
277 ; ----------------------------------------------------------------------
279 CSCTL0 .equ CS_SFR + 00h ; Clock System Control Register 0
280 CSCTL1 .equ CS_SFR + 02h ; Clock System Control Register 1
281 CSCTL2 .equ CS_SFR + 04h ; Clock System Control Register 2
282 CSCTL3 .equ CS_SFR + 06h ; Clock System Control Register 3
283 CSCTL4 .equ CS_SFR + 08h ; Clock System Control Register 4
284 CSCTL5 .equ CS_SFR + 0Ah ; Clock System Control Register 5
285 CSCTL6 .equ CS_SFR + 0Ch ; Clock System Control Register 6
286 CSCTL7 .equ CS_SFR + 0Eh ; Clock System Control Register 7
287 CSCTL8 .equ CS_SFR + 10h ; Clock System Control Register 8
291 ; ----------------------------------------------------------------------
293 ; ----------------------------------------------------------------------
294 RTCCTL .equ RTC_SFR + 00h ; Real-Time Clock Control
295 RTCIV .equ RTC_SFR + 04h ; Real-Time Clock Interrupt Vector
296 RTCMOD .equ RTC_SFR + 08h ; Real-Timer Clock Modulo
297 RTCCNT .equ RTC_SFR + 0Ch ; Real-Time Clock Counter
301 ; ----------------------------------------------------------------------
303 ; ----------------------------------------------------------------------
304 TERM_CTLW0 .equ eUSCI_A0_SFR + 00h ; eUSCI_A0 Control Word Register 0
305 TERM_BRW .equ eUSCI_A0_SFR + 06h ; eUSCI_A0 Baud Word Rate 0
306 TERM_MCTLW .equ eUSCI_A0_SFR + 08h ; eUSCI_A0 Modulation Control
307 TERM_STATW .equ eUSCI_A0_SFR + 0Ah ; eUSCI_A0 status Word Register
308 TERM_RXBUF .equ eUSCI_A0_SFR + 0Ch ; eUSCI_A0 Receive Buffer
309 TERM_TXBUF .equ eUSCI_A0_SFR + 0Eh ; eUSCI_A0 Transmit Buffer
310 TERM_IE .equ eUSCI_A0_SFR + 1Ah ; eUSCI_A0 Interrupt Enable Register
311 TERM_IFG .equ eUSCI_A0_SFR + 1Ch ; eUSCI_A0 Interrupt Flags Register
313 TERM_VEC .equ 0FFECh ; interrupt vector for eUSCI_A0
314 WAKE_UP .equ 1 ; UART RX interrupt
321 ; ----------------------------------------------------------------------
322 ; eUSCI_A0 as UCA0_SD
323 ; ----------------------------------------------------------------------
324 SD_CTLW0 .equ eUSCI_A0_SFR + 00h ; USCI_A0 Control Word Register 0
325 SD_BRW .equ eUSCI_A0_SFR + 06h ; USCI_A0 Baud Word Rate 0
326 SD_RXBUF .equ eUSCI_A0_SFR + 0Ch ; USCI_A0 Receive Buffer 8
327 SD_TXBUF .equ eUSCI_A0_SFR + 0Eh ; USCI_A0 Transmit Buffer 8
328 SD_IFG .equ eUSCI_A0_SFR + 1Ch ; USCI_A0 Interrupt Flags Register
335 ; ----------------------------------------------------------------------
336 ; eUSCI_B0 as TERMINAL I2C input
337 ; ----------------------------------------------------------------------
338 TERM_CTLW0 .equ eUSCI_B0_SFR + 00h ; USCI_B0 Control Word Register 0
339 TERM_CTLW1 .equ eUSCI_B0_SFR + 02h ; USCI_B0 Control Word Register 1
340 TERM_BRW .equ eUSCI_B0_SFR + 06h ; USCI_B0 Baud Word Rate 0
341 TERM_STATW .equ eUSCI_B0_SFR + 08h ; USCI_B0 Status Word
342 TERM_RXBUF .equ eUSCI_B0_SFR + 0Ch ; USCI_B0 Receive Buffer 8
343 TERM_TXBUF .equ eUSCI_B0_SFR + 0Eh ; USCI_B0 Transmit Buffer 8
344 TERM_I2COA0 .equ eUSCI_B0_SFR + 14h ; USCI_B0 I2C Own Address 0
345 TERM_ADDRX .equ eUSCI_B0_SFR + 1Ch ; USCI_B0 Received Address Register
346 TERM_I2CSA .equ eUSCI_B0_SFR + 20h ; USCI_B0 I2C Slave Address
347 TERM_IE .equ eUSCI_B0_SFR + 2Ah ; USCI_B0 Interrupt Enable
348 TERM_IFG .equ eUSCI_B0_SFR + 2Ch ; USCI_B0 Interrupt Flags Register
350 TERM_VEC .equ 0FFEAh ; interrupt vector for eUSCI_B0
351 WAKE_UP .equ 4 ; START interrupt
358 ; ----------------------------------------------------------------------
360 ; ----------------------------------------------------------------------
361 SD_CTLW0 .equ eUSCI_B0_SFR + 00h ; USCI_B0 Control Word Register 0
362 SD_BRW .equ eUSCI_B0_SFR + 06h ; USCI_B0 Baud Word Rate 0
363 SD_RXBUF .equ eUSCI_B0_SFR + 0Ch ; USCI_B0 Receive Buffer 8
364 SD_TXBUF .equ eUSCI_B0_SFR + 0Eh ; USCI_B0 Transmit Buffer 8
365 SD_IFG .equ eUSCI_B0_SFR + 2Ch ; USCI_B0 Interrupt Flags Register