2 ; MSP430fr2433 minimal declarations for Fast FORTH usage
3 DEVICE = "MSP430FR2433"
5 ; ----------------------------------------------
6 ; MSP430FR2433 MEMORY MAP
7 ; ----------------------------------------------
8 ; 0000-0FFF = peripherals (4 KB)
9 ; 1000-17FF = ROM bootstrap loader BSL1 (2k)
10 ; 1800-19FF = info B (FRAM 512 B)
11 ; 1A00-1A7F = TLV device descriptor info (FRAM 128 B)
13 ; 2000-2FFF = RAM (4 KB)
15 ; C400-FF7F = code memory (FRAM 15232 B)
16 ; FF80-FFFF = interrupt vectors (FRAM 128 B)
17 ; FFC00-FFFFF = BSL2 (2k)
18 ; ----------------------------------------------
19 PAGESIZE .equ 512 ; MPU unit
20 ; ----------------------------------------------
22 ; ----------------------------------------------
25 ; ----------------------------------------------
27 ; ----------------------------------------------
30 TLV_ORG .equ 01A00h ; Device Descriptor Info (Tag-Lenght-Value)
32 ; ----------------------------------------------
34 ; ----------------------------------------------
37 ; ----------------------------------------------
39 ; ----------------------------------------------
40 MAIN_ORG .equ 0C400h ; Code space start
41 SIGNATURES .equ 0FF80h ; JTAG/BSL signatures
42 JTAG_SIG1 .equ 0FF80h ; if 0 (electronic fuse=0) enable JTAG/SBW ; reset by wipe and by S1+<reset>
43 JTAG_SIG2 .equ 0FF82h ; if JTAG_SIG <> |0xFFFFFFFF, 0x00000000|, SBW and JTAG are locked
44 BSL_SIG1 .equ 0FF84h ;
45 BSL_SIG2 .equ 0FF86h ;
46 JTAG_PASSWORD .equ 0FF88h ; 256 bits
47 BSL_PASSWORD .equ 0FFE0h ; 256 bits
48 VECT_ORG .equ 0FFDAh ; FFDA-FFFF
50 ; ----------------------------------------------
52 ; ----------------------------------------------
53 ; Interrupt Vectors and signatures - MSP430FR243x
54 ; ----------------------------------------------
57 ;;Start of JTAG and BSL signatures
58 ; .word 0FFFFh ; JTAG signature 1
59 ; .word 0FFFFh ; JTAG signature 2
60 ; .word 0FFFFh ; BSL signature 1, 5555h to disable BSL
61 ; .word 0FFFFh ; BSL signature 2
63 ; .org INTVECT ; FFDA-FFFF 18 vectors + reset
65 ; .word reset ; FFDAh - P2
66 ; .word reset ; FFDCh - P1
67 ; .word reset ; FFDEh - ADC10
68 ; .word reset ; FFE0h - eUSCI_B0
69 ; .word reset ; FFE2h - eUSCI_A1
70 ; .word reset ; FFE4h - eUSCI_A0
71 ; .word reset ; FFE6h - WDT
72 ; .word reset ; FFE8h - RTC
73 ; .word reset ; FFEAh - TA3_x
74 ; .word reset ; FFECh - TA3_0
75 ; .word reset ; FFEEh - TA2_x
76 ; .word reset ; FFF0h - TA2_0
77 ; .word reset ; FFF2h - TA1_x
78 ; .word reset ; FFF4h - TA1_0
79 ; .word reset ; FFF6h - TA0_x
80 ; .word reset ; FFF8h - TA0_0
81 ; .word reset ; FFFAh - UserNMI
82 ; .word reset ; FFFCh - SysNMI
83 ; .word reset ; FFFEh - Reset
85 ; ----------------------------------------------------------------------
86 ; MSP430FR2433 Peripheral File Map
87 ; ----------------------------------------------------------------------
88 SFR_SFR .equ 0100h ; Special function
89 PMM_SFR .equ 0120h ; PMM
90 SYS_SFR .equ 0140h ; SYS
91 CS_SFR .equ 0180h ; Clock System
92 FRAM_SFR .equ 01A0h ; FRAM control
94 WDT_A_SFR .equ 01CCh ; Watchdog
95 PA_SFR .equ 0200h ; PORT1/2
96 PB_SFR .equ 0220h ; PORT3
103 eUSCI_A0_SFR .equ 0500h ; eUSCI_A0
104 eUSCI_A1_SFR .equ 0520h ; eUSCI_A1
105 eUSCI_B0_SFR .equ 0540h ; eUSCI_B0
106 BACK_MEM_SFR .equ 0660h
107 ADC10_B_SFR .equ 0700h
110 ; ----------------------------------------------------------------------
111 ; POWER ON RESET AND INITIALIZATION : LOCK PMM_LOCKLPM5
112 ; ----------------------------------------------------------------------
116 PM5CTL0 .equ PMM_SFR + 10h ; Power mode 5 control register 0
117 LOCKLPM5 .equ 1 ; bit position
119 ; ----------------------------------------------------------------------
120 ; POWER ON RESET SYS config
121 ; ----------------------------------------------------------------------
122 SYSCTL .equ SYS_SFR + 00h ; System control
123 SYSBSLC .equ SYS_SFR + 02h ; Bootstrap loader configuration area
124 SYSJMBC .equ SYS_SFR + 06h ; JTAG mailbox control
125 SYSJMBI0 .equ SYS_SFR + 08h ; JTAG mailbox input 0
126 SYSJMBI1 .equ SYS_SFR + 0Ah ; JTAG mailbox input 1
127 SYSJMBO0 .equ SYS_SFR + 0Ch ; JTAG mailbox output 0
128 SYSJMBO1 .equ SYS_SFR + 0Eh ; JTAG mailbox output 1
129 SYSBERRIV .equ SYS_SFR + 18h ; Bus Error vector generator
130 SYSUNIV .equ SYS_SFR + 1Ah ; User NMI vector generator
131 SYSSNIV .equ SYS_SFR + 1Ch ; System NMI vector generator
132 SYSRSTIV .equ SYS_SFR + 1Eh ; Reset vector generator
133 SYSCFG0 .equ SYS_SFR + 20h ; System configuration 0
134 SYSCFG1 .equ SYS_SFR + 22h ; System configuration 1
135 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 ; ----------------------------------------------------------------------
155 ; ----------------------------------------------------------------------
157 FRCTL0 .equ FRAM_SFR + 00h ; FRAM Controller Control 0
158 FRCTL0_H .equ FRAM_SFR + 01h ; FRAM Controller Control 0 high byte
160 ; ----------------------------------------------------------------------
161 ; POWER ON RESET AND INITIALIZATION : CLOCK SYSTEM
162 ; ----------------------------------------------------------------------
164 CSCTL0 .equ CS_SFR + 00h ; Clock System Control Register 0
165 CSCTL1 .equ CS_SFR + 02h ; Clock System Control Register 1
166 CSCTL2 .equ CS_SFR + 04h ; Clock System Control Register 2
167 CSCTL3 .equ CS_SFR + 06h ; Clock System Control Register 3
168 CSCTL4 .equ CS_SFR + 08h ; Clock System Control Register 4
169 CSCTL5 .equ CS_SFR + 0Ah ; Clock System Control Register 5
170 CSCTL6 .equ CS_SFR + 0Ch ; Clock System Control Register 6
171 CSCTL7 .equ CS_SFR + 0Eh ; Clock System Control Register 7
172 CSCTL8 .equ CS_SFR + 10h ; Clock System Control Register 8
174 ; ----------------------------------------------------------------------
175 ; POWER ON RESET AND INITIALIZATION : PORT1/2
176 ; ----------------------------------------------------------------------
178 PAIN .equ PA_SFR + 00h ; Port A Input
179 PAOUT .equ PA_SFR + 02h ; Port A Output
180 PADIR .equ PA_SFR + 04h ; Port A Direction
181 PAREN .equ PA_SFR + 06h ; Port A Resistor Enable
182 PASEL0 .equ PA_SFR + 0Ah ; Port A Selection 0
183 PASEL1 .equ PA_SFR + 0Ch ; Port A Selection 1
184 PASELC .equ PA_SFR + 16h ; Port A Complement Selection
185 PAIES .equ PA_SFR + 18h ; Port A Interrupt Edge Select
186 PAIE .equ PA_SFR + 1Ah ; Port A Interrupt Enable
187 PAIFG .equ PA_SFR + 1Ch ; Port A Interrupt Flag
189 P1IN .equ PA_SFR + 00h ; Port 1 Input
190 P1OUT .equ PA_SFR + 02h ; Port 1 Output
191 P1DIR .equ PA_SFR + 04h ; Port 1 Direction
192 P1REN .equ PA_SFR + 06h ; Port 1 Resistor Enable
193 P1SEL0 .equ PA_SFR + 0Ah ; Port 1 Selection 0
194 P1SEL1 .equ PA_SFR + 0Ch ; Port 1 Selection 1
195 P1IV .equ PA_SFR + 0Eh ; Port 1 Interrupt Vector word
196 P1IES .equ PA_SFR + 18h ; Port 1 Interrupt Edge Select
197 P1IE .equ PA_SFR + 1Ah ; Port 1 Interrupt Enable
198 P1IFG .equ PA_SFR + 1Ch ; Port 1 Interrupt Flag
200 P2IN .equ PA_SFR + 01h ; Port 2 Input
201 P2OUT .equ PA_SFR + 03h ; Port 2 Output
202 P2DIR .equ PA_SFR + 05h ; Port 2 Direction
203 P2REN .equ PA_SFR + 07h ; Port 2 Resistor Enable
204 P2SEL0 .equ PA_SFR + 0Bh ; Port 2 Selection 0
205 P2SEL1 .equ PA_SFR + 0Dh ; Port 2 Selection 1
206 P2IES .equ PA_SFR + 19h ; Port 2 Interrupt Edge Select
207 P2IE .equ PA_SFR + 1Bh ; Port 2 Interrupt Enable
208 P2IFG .equ PA_SFR + 1Dh ; Port 2 Interrupt Flag
209 P2IV .equ PA_SFR + 1Eh ; Port 2 Interrupt Vector word
211 ; ----------------------------------------------------------------------
212 ; POWER ON RESET AND INITIALIZATION : PORT3
213 ; ----------------------------------------------------------------------
215 P3IN .set PB_SFR + 00h ; Port 3 Input */
216 P3OUT .set PB_SFR + 02h ; Port 3 Output
217 P3DIR .set PB_SFR + 04h ; Port 3 Direction
218 P3REN .set PB_SFR + 06h ; Port 3 Resistor Enable
219 P3SEL0 .set PB_SFR + 0Ah ; Port 3 Selection 0
220 P3SEL1 .set PB_SFR + 0Ch ; Port 3 Selection 1
223 ; ----------------------------------------------------------------------
225 ; ----------------------------------------------------------------------
226 RTCCTL .equ RTC_SFR + 00h ; Real-Time Clock Control
227 RTCIV .equ RTC_SFR + 04h ; Real-Time Clock Interrupt Vector
228 RTCMOD .equ RTC_SFR + 08h ; Real-Timer Clock Modulo
229 RTCCNT .equ RTC_SFR + 0Ch ; Real-Time Clock Counter
231 ; ----------------------------------------------------------------------
233 ; ----------------------------------------------------------------------
235 MPY .equ MPY_SFR + 00h ; Multiply16 Unsigned/Operand 1 */
236 MPYS .equ MPY_SFR + 02h ; Multiply16 signed/Operand 1
237 MAC .equ MPY_SFR + 04h ; MultiplyAccumulate16 Unsigned/Operand 1 */
238 MACS .equ MPY_SFR + 06h ; MultiplyAccumulate16 signed/Operand 1
239 OP2 .equ MPY_SFR + 08h ; Operand2_16 */
240 RESLO .equ MPY_SFR + 0Ah ; 16x16-bit result low - least significant word */
241 RESHI .equ MPY_SFR + 0Ch ; 16x16-bit result high */
242 SUMEXT .equ MPY_SFR + 0Eh ; 16x16-bit sum extension register
243 MPY32L .equ MPY_SFR + 10h ; Multiply32 Unsigned/Operand 1
244 MPY32H .equ MPY_SFR + 12h ; Multiply32 Unsigned/Operand 1
245 MPYS32L .equ MPY_SFR + 14h ; Multiply32 signed/Operand 1
246 MPYS32H .equ MPY_SFR + 16h ; Multiply32 signed/Operand 1
247 MAC32L .equ MPY_SFR + 18h ; MultiplyAccumulate32 Unsigned/Operand 1
248 MAC32H .equ MPY_SFR + 1Ah ; MultiplyAccumulate32 Unsigned/Operand 1
249 MACS32L .equ MPY_SFR + 1Ch ; MultiplyAccumulate32 signed/Operand 1
250 MACS32H .equ MPY_SFR + 1Eh ; MultiplyAccumulate32 signed/Operand 1
251 OP2L .equ MPY_SFR + 20h ; Multiply32 Operand 2
252 OP2H .equ MPY_SFR + 22h ; Multiply32 Operand 2
253 RES0 .equ MPY_SFR + 24h ; 32x32-bit result 0 - least significant word */
254 RES1 .equ MPY_SFR + 26h ; 32x32-bit result 1 */
255 RES2 .equ MPY_SFR + 28h ; 32x32-bit result 2 */
256 RES3 .equ MPY_SFR + 2Ah ; 32x32-bit result 3 */
257 MPY32CTL0 .equ MPY_SFR + 2Ch ; MPY32 control register 0
262 UCSWRST .equ 1 ; eUSCI Software Reset
263 UCTXIE .equ 2 ; eUSCI Transmit Interrupt Enable
264 UCRXIE .equ 1 ; eUSCI Receive Interrupt Enable
265 UCTXIFG .equ 2 ; eUSCI Transmit Interrupt Flag
266 UCRXIFG .equ 1 ; eUSCI Receive Interrupt Flag
270 ; ----------------------------------------------------------------------
272 ; ----------------------------------------------------------------------
275 TERM_CTLW0 .equ eUSCI_A0_SFR + 00h ; eUSCI_A0 Control Word Register 0
276 TERM_BRW .equ eUSCI_A0_SFR + 06h ; eUSCI_A0 Baud Word Rate 0
277 TERM_MCTLW .equ eUSCI_A0_SFR + 08h ; eUSCI_A0 Modulation Control
278 TERM_STATW .equ eUSCI_A0_SFR + 0Ah ; eUSCI_A0 status Word Register
279 TERM_RXBUF .equ eUSCI_A0_SFR + 0Ch ; eUSCI_A0 Receive Buffer
280 TERM_TXBUF .equ eUSCI_A0_SFR + 0Eh ; eUSCI_A0 Transmit Buffer
281 TERM_IE .equ eUSCI_A0_SFR + 1Ah ; eUSCI_A0 Interrupt Enable Register
282 TERM_IFG .equ eUSCI_A0_SFR + 1Ch ; eUSCI_A0 Interrupt Flags Register
283 TERM_VEC .equ 0FFE4h ; interrupt vector for eUSCI_A0
287 ; ----------------------------------------------------------------------
289 ; ----------------------------------------------------------------------
291 TERM_CTLW0 .equ eUSCI_A1_SFR + 00h ; eUSCI_A1 Control Word Register 0
292 TERM_BRW .equ eUSCI_A1_SFR + 06h ; eUSCI_A1 Baud Word Rate 0
293 TERM_MCTLW .equ eUSCI_A1_SFR + 08h ; eUSCI_A1 Modulation Control
294 TERM_STATW .equ eUSCI_A1_SFR + 0Ah ; eUSCI_A1 status Word Register
295 TERM_RXBUF .equ eUSCI_A1_SFR + 0Ch ; eUSCI_A1 Receive Buffer
296 TERM_TXBUF .equ eUSCI_A1_SFR + 0Eh ; eUSCI_A1 Transmit Buffer
297 TERM_IE .equ eUSCI_A1_SFR + 1Ah ; eUSCI_A1 Interrupt Enable Register
298 TERM_IFG .equ eUSCI_A1_SFR + 1Ch ; eUSCI_A1 Interrupt Flags Register
299 TERM_VEC .equ 0FFE2h ; interrupt vector for eUSCI_A1
303 SD_CTLW0 .equ eUSCI_A1_SFR + 00h ; USCI_B0 Control Word Register 0
304 SD_BRW .equ eUSCI_A1_SFR + 06h ; USCI_B0 Baud Word Rate 0
305 SD_RXBUF .equ eUSCI_A1_SFR + 0Ch ; USCI_B0 Receive Buffer 8
306 SD_TXBUF .equ eUSCI_A1_SFR + 0Eh ; USCI_B0 Transmit Buffer 8
307 SD_IFG .equ eUSCI_A1_SFR + 1Ch ; USCI_B0 Interrupt Flags Register
310 ; ----------------------------------------------------------------------
312 ; ----------------------------------------------------------------------
314 I2CTERM_CTLW0 .equ eUSCI_B0_SFR + 00h ; USCI_B0 Control Word Register 0
315 I2CTERM_CTLW1 .equ eUSCI_B0_SFR + 02h ; USCI_B0 Control Word Register 1
316 I2CTERM_BRW .equ eUSCI_B0_SFR + 06h ; USCI_B0 Baud Word Rate 0
317 I2CTERM_RXBUF .equ eUSCI_B0_SFR + 0Ch ; USCI_B0 Receive Buffer 8
318 I2CTERM_TXBUF .equ eUSCI_B0_SFR + 0Eh ; USCI_B0 Transmit Buffer 8
319 I2CTERM_I2COA0 .equ eUSCI_B0_SFR + 14h ; USCI_B0 I2C Own Address 0
320 I2CTERM_ADDRX .equ eUSCI_B0_SFR + 1Ch ; USCI_B0 Received Address Register
321 I2CTERM_I2CSA .equ eUSCI_B0_SFR + 20h ; USCI_B0 I2C Slave Address
322 I2CTERM_IE .equ eUSCI_B0_SFR + 2Ah ; USCI_B0 Interrupt Enable
323 I2CTERM_IFG .equ eUSCI_B0_SFR + 2Ch ; USCI_B0 Interrupt Flags Register
324 I2CTERMVEC .equ 0FFE0h ; interrupt vector for eUSCI_B0
327 .IFDEF UCB0_I2CM ; used by UART2MICC.asm
328 TERM2IIC_CTLW0 .equ eUSCI_B0_SFR + 00h ; USCI_B0 Control Word Register 0
329 TERM2IIC_CTLW1 .equ eUSCI_B0_SFR + 02h ; USCI_B0 Control Word Register 1
330 TERM2IIC_BRW .equ eUSCI_B0_SFR + 06h ; USCI_B0 Baud Word Rate 0
331 TERM2IIC_STATW .equ eUSCI_B0_SFR + 08h ; USCI_B0 Status Word
332 TERM2IIC_STAT .equ eUSCI_B0_SFR + 08h ; USCI_B0 Status Byte
333 TERM2IIC_BCNT .equ eUSCI_B0_SFR + 09h ; USCI_B0 Byte Counter Register Byte
334 TERM2IIC_TBCNT .equ eUSCI_B0_SFR + 0Ah ; USCI_B0 Byte Counter Threshold Register
335 TERM2IIC_RXBUF .equ eUSCI_B0_SFR + 0Ch ; USCI_B0 Receive Buffer 8
336 TERM2IIC_TXBUF .equ eUSCI_B0_SFR + 0Eh ; USCI_B0 Transmit Buffer 8
337 TERM2IIC_I2COA0 .equ eUSCI_B0_SFR + 14h ; USCI_B0 I2C Own Address 0
338 TERM2IIC_I2CSA .equ eUSCI_B0_SFR + 20h ; USCI_B0 I2C Slave Address
339 TERM2IIC_IE .equ eUSCI_B0_SFR + 2Ah ; USCI_B0 Interrupt Enable
340 TERM2IIC_IFG .equ eUSCI_B0_SFR + 2Ch ; USCI_B0 Interrupt Flags Register
344 SD_CTLW0 .equ eUSCI_B0_SFR + 00h ; USCI_B0 Control Word Register 0
345 SD_BRW .equ eUSCI_B0_SFR + 06h ; USCI_B0 Baud Word Rate 0
346 SD_RXBUF .equ eUSCI_B0_SFR + 0Ch ; USCI_B0 Receive Buffer 8
347 SD_TXBUF .equ eUSCI_B0_SFR + 0Eh ; USCI_B0 Transmit Buffer 8
348 SD_IFG .equ eUSCI_B0_SFR + 2Ch ; USCI_B0 Interrupt Flags Register