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.