Cortex CMSIS style definition of MSP430 registers. More...
Cortex CMSIS style definition of MSP430 registers.
Definition in file msp430_regs.h.
Include dependency graph for msp430_regs.h:Go to the source code of this file.
Data Structures | |
| struct | msp430_port_p1_p2_t |
| GPIO Port 1/2 (with interrupt functionality) More... | |
| struct | msp430_port_p7_p8_t |
| GPIO Port 7/8 (different register layout than Ports 1-6) More... | |
| struct | msp430_usci_a_t |
| Universal Serial Control Interface Type A (USCI_A) Registers. More... | |
| struct | msp430_usci_b_t |
| Universal Serial Control Interface Type B (USCI_B) Registers. More... | |
Functions | |
| static msp430_usci_b_t * | msp430_usci_b_from_usci_a (msp430_usci_a_t *usci_a) |
| "Convert" a USCI A into an USCI B interface More... | |
| #define | MSP430_USCI_A_B_OFFSET 3U |
| Offset of the USCI B registers in an USCI A peripheral. More... | |
| #define | MSP430_USCI_B_FROM_USCI_A(usci_a) ((msp430_usci_b_t *)((uintptr_t)(usci_a) + MSP430_USCI_A_B_OFFSET)) |
| "Convert" an USCI A to an USCI B More... | |
USCI clock selection | |
The vendor header files expose clock configurations with hard to read names. So we provide alias with better names | |
| #define | UCSSEL_UCLKI UCSSEL_0 |
| Clock USCI using CLKI (n/a in SPI mode) | |
| #define | UCSSEL_ACLK UCSSEL_1 |
| Clock USCI using auxiliary clock. | |
| #define | UCSSEL_SMCLK UCSSEL_2 |
| Clock USCI using sub-system master clock. | |
| #define | UCSSEL_Pos 6 |
| Position of the UCSSEL field in the USCI CTL1 register. | |
USCI Modulation Control fields | |
The vendor header files provides bitmasks for each of the possible values from 0..7. But rather than creating a look up table, we can just shift the number in place, if there only would be a UCRBS_SHIFT macro. | |
| #define | UCBRS_MASK UCBRS_7 |
| Bitmask to retrieve the UCRBS field of the USCI modulation control register. | |
| #define | UCBRS_Pos 1 |
| Position of the UCRBS field in the UCAxMCTL register. | |
Typing of base register objects | |
| msp430_usci_a_t | USCI_A0 |
| USCI_A0 register map. More... | |
| msp430_usci_a_t | USCI_A1 |
| USCI_A1 register map. More... | |
| msp430_usci_b_t | USCI_B0 |
| USCI_B0 register map. More... | |
| msp430_usci_b_t | USCI_B1 |
| USCI_B1 register map. More... | |
| #define MSP430_USCI_A_B_OFFSET 3U |
Offset of the USCI B registers in an USCI A peripheral.
USCI A peripheral contains the USCI B peripheral registers, but has a few USCI A specific register in front. Adding this offset to the USCI A base address results in the base address of the shared registers.
Definition at line 40 of file msp430_regs.h.
| #define MSP430_USCI_B_FROM_USCI_A | ( | usci_a | ) | ((msp430_usci_b_t *)((uintptr_t)(usci_a) + MSP430_USCI_A_B_OFFSET)) |
"Convert" an USCI A to an USCI B
This returns the pointer to the part of the USCI A registers that matches the USCI B register layout, so that an USCI A can be treated as if it is an USCI B.
This can be used instead of msp430_usci_b_from_usci_a when needing a constant initializer. Otherwise msp430_usci_b_from_usci_a is preferred as it includes type checks this macro doesn't.
Definition at line 53 of file msp430_regs.h.
|
inlinestatic |
"Convert" a USCI A into an USCI B interface
The USCI peripheral come in two flavors: USCI A and USCI B with the following feature set. When comparing the memory map USCI B is a subset of USCI A registers, which conveniently have the same offsets. It is therefore possible to address USCI A registers as if it was a USCI B interface when operated in SPI mode. This makes implementation of SPI easier.
| Name | UART | SPI | I2C | IrDA |
|---|---|---|---|---|
| USCI A | ✔ | ✔ | ✗ | ✔ |
| USCI B | ✗ | ✔ | ✔ | ✗ |
Definition at line 166 of file msp430_regs.h.
|
extern |
USCI_A0 register map.
Provided by linker
|
extern |
USCI_A1 register map.
Provided by linker
|
extern |
USCI_B0 register map.
Provided by linker
|
extern |
USCI_B1 register map.
Provided by linker