SPRAA85E November 2005 – December 2017 SM320F2812 , SM320F2812-EP , TMS320F280021 , TMS320F280021-Q1 , TMS320F280023 , TMS320F280023-Q1 , TMS320F280023C , TMS320F280025 , TMS320F280025-Q1 , TMS320F280025C , TMS320F280025C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F2801 , TMS320F2801-Q1 , TMS320F2802 , TMS320F2802-Q1 , TMS320F28044 , TMS320F2806 , TMS320F2806-Q1 , TMS320F28062 , TMS320F28062-Q1 , TMS320F28062F , TMS320F28062F-Q1 , TMS320F28063 , TMS320F28064 , TMS320F28065 , TMS320F28066 , TMS320F28066-Q1 , TMS320F28067 , TMS320F28067-Q1 , TMS320F28068F , TMS320F28068M , TMS320F28069 , TMS320F28069-Q1 , TMS320F28069F , TMS320F28069F-Q1 , TMS320F28069M , TMS320F28069M-Q1 , TMS320F28075 , TMS320F28075-Q1 , TMS320F2808 , TMS320F2808-Q1 , TMS320F2809 , TMS320F2810 , TMS320F2810-Q1 , TMS320F2811 , TMS320F2811-Q1 , TMS320F2812 , TMS320F2812-Q1 , TMS320F28232 , TMS320F28232-Q1 , TMS320F28234 , TMS320F28234-Q1 , TMS320F28235 , TMS320F28235-Q1 , TMS320F28332 , TMS320F28333 , TMS320F28334 , TMS320F28335 , TMS320F28335-Q1 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S , TMS320R2811
Developers have traditionally used #define macros to access registers in C or C++. To illustrate this approach, consider the SCI-A and SCI-B register files shown in Table 1.
SCI-A Register Name (1) | Address (2) | Description |
---|---|---|
SCICCRA | 0x7050 | SCI-A Communications Control Register |
SCICTL1A | 0x7051 | SCI-A Control Register 1 |
SCIHBAUDA | 0x7052 | SCI-A Baud Register, High Bits |
SCILBAUDA | 0x7053 | SCI-A Baud Register, Low Bits |
SCICTL2A | 0x7054 | SCI-A Control Register 2 |
SCIRXSTA | 0x7055 | SCI-A Receive Status Register |
SCIRXEMUA | 0x7056 | SCI-A Receive Emulation Data Buffer Register |
SCIRXBUFA | 0x7057 | SCI-A Receive Data Buffer Register |
SCITXBUFA | 0x7059 | SCI-A Transmit Data Buffer Register |
SCIFFTXA | 0x705A | SCI-A FIFO Transmit Register |
SCIFFRXA | 0x705B | SCI-A FIFO Receive Register |
SCIFFCTA | 0x705C | SCI-A FIFO Control Register |
SCIPRIA | 0x705F | SCI-A Priority Control Register |
SCI-B Register Name (3) | Address | Description |
SCICCRB | 0x7750 | SCI-B Communications Control Register |
SCICTL1B | 0x7751 | SCI-B Control Register 1 |
SCIHBAUDB | 0x7752 | SCI-B Baud Register, High Bits |
SCILBAUDB | 0x7753 | SCI-B Baud Register, Low Bits |
SCICTL2B | 0x7754 | SCI-B Control Register 2 |
SCIRXSTB | 0x7755 | SCI-B Receive Status Register |
SCIRXEMUB | 0x7756 | SCI-B Receive Emulation Data Buffer Register |
SCIRXBUFB | 0x7757 | SCI-B Receive Data Buffer Register |
SCITXBUFB | 0x7759 | SCI-B Transmit Data Buffer Register |
SCIFFTXB | 0x775A | SCI-B FIFO Transmit Register |
SCIFFRXB | 0x775B | SCI-B FIFO Receive Register |
SCIFFCTB | 0x775C | SCI-B FIFO Control Register |
SCIPRIB | 0x775F | SCI-B Priority Control Register |
A developer can implement #define macros for the SCI peripherals by adding definitions like those in Example 1 to an application header file. These macros provide an address label, or a pointer, to each register location. Even if a peripheral is an identical copy a macro is defined for every register. For example, every register in SCI-A and SCI-B is specified separately.