DSP281x_SysCtrl.h
上传用户:qingfan3
上传日期:2014-10-27
资源大小:31439k
文件大小:12k
源码类别:

DSP编程

开发平台:

C/C++

  1. //###########################################################################
  2. //
  3. // FILE:   DSP281x_SysCtrl.h
  4. //
  5. // TITLE:  DSP281x Device System Control Register Definitions.
  6. //
  7. //###########################################################################
  8. //
  9. //  Ver | dd mmm yyyy | Who  | Description of changes
  10. // =====|=============|======|===============================================
  11. //  1.00| 11 Sep 2003 | L.H. | Changes since previous version (v.58 Alpha)
  12. //      |             |      | Added bit definitions for the PLLCR register,
  13. //      |             |      | Low power mode LPMCR0 and LPMCR1 registers
  14. //      |             |      | Corrected OTPWAIT bit field name in FOTPWAIT
  15. //      |             |      | Changed SCIENCLKA to SCIAENCLK and SCIENCLKB to
  16. //      |             |      |    SCIBENCLK to match documentation
  17. //      |             |      | Removed bit definition for SCSR register.  This
  18. //      |             |      |    register should only be written to using a
  19. //      |             |      |    mask value else a read-modify-write will clear
  20. //      |             |      |    the WDOVERRIDE bit. 
  21. //###########################################################################
  22. #ifndef DSP281x_SYS_CTRL_H
  23. #define DSP281x_SYS_CTRL_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. //---------------------------------------------------------------------------
  28. // System Control Individual Register Bit Definitions:
  29. //
  30. // High speed peripheral clock register bit definitions:
  31. struct HISPCP_BITS  {   // bits  description
  32.    Uint16 HSPCLK:3;     // 2:0   Rate relative to SYSCLKOUT
  33.    Uint16 rsvd1:13;     // 15:3  reserved
  34. };
  35. union HISPCP_REG {
  36.    Uint16              all;
  37.    struct HISPCP_BITS  bit;
  38. };
  39. // Low speed peripheral clock register bit definitions:
  40. struct LOSPCP_BITS  {   // bits  description
  41.    Uint16 LSPCLK:3;     // 2:0   Rate relative to SYSCLKOUT
  42.    Uint16 rsvd1:13;     // 15:3  reserved
  43. };
  44. union LOSPCP_REG {
  45.    Uint16              all;
  46.    struct LOSPCP_BITS  bit;
  47. };
  48. // Peripheral clock control register bit definitions:
  49. struct PCLKCR_BITS  {   // bits  description
  50.    Uint16 EVAENCLK:1;   // 0     Enable high speed clk to EV-A
  51.    Uint16 EVBENCLK:1;   // 1     Enable high speed clk to EV-B
  52.    Uint16 rsvd1:1;      // 2 
  53.    Uint16 ADCENCLK:1;   // 3     Enable high speed clk to ADC
  54.    Uint16 rsvd2:4;      // 7:4   reserved
  55.    Uint16 SPIENCLK:1;   // 8     Enable low speed clk to SPI
  56.    Uint16 rsvd3:1;      // 9     reserved
  57.    Uint16 SCIAENCLK:1;  // 10    Enable low speed clk to SCI-A
  58.    Uint16 SCIBENCLK:1;  // 11    Enable low speed clk to SCI-B
  59.    Uint16 MCBSPENCLK:1; // 12    Enable low speed clk to McBSP
  60.    Uint16 rsvd4:1;      // 13    reserved
  61.    Uint16 ECANENCLK:1;  // 14    Enable system clk to eCAN
  62. };
  63. union PCLKCR_REG {
  64.    Uint16              all;
  65.    struct PCLKCR_BITS  bit;
  66. };   
  67. // PLL control register bit definitions:
  68. struct PLLCR_BITS {      // bits  description
  69.    Uint16 DIV:4;         // 3:0   Set clock ratio for the PLL
  70.    Uint16 rsvd1:12;      // 15:4  reserved
  71. };
  72. union PLLCR_REG {
  73.    Uint16             all;
  74.    struct PLLCR_BITS  bit;
  75. };
  76. // Low Power Mode 0 control register bit definitions:
  77. struct LPMCR0_BITS {     // bits  description
  78.    Uint16 LPM:2;         // 1:0   Set the low power mode
  79.    Uint16 QUALSTDBY:6;   // 7:2   Qualification   
  80.    Uint16 rsvd1:8;       // 15:8  reserved
  81. };
  82. union LPMCR0_REG {
  83.    Uint16              all;
  84.    struct LPMCR0_BITS  bit;
  85. };
  86. // Low Power Mode 1 control register bit definitions:
  87. struct LPMCR1_BITS {     // bits  description
  88.    Uint16 XINT1:1;       // 0     Enable XINT1 to wake the device from standby
  89.    Uint16 XNMI:1;        // 1     Enable XMNI to wake the device from standby
  90.    Uint16 WDINT:1;       // 2     Enable watchdog interrupt to wake the device from standby
  91.    Uint16 T1CTRIP:1;     // 3     Enable T1CTRIP to wake the device from standby
  92.    Uint16 T2CTRIP:1;     // 4     Enable T2CTRIP to wake the device from standby
  93.    Uint16 T3CTRIP:1;     // 5     Enable T3CTRIP to wake the device from standby
  94.    Uint16 T4CTRIP:1;     // 6     Enable T4CTRIP to wake the device from standby
  95.    Uint16 C1TRIP:1;      // 7     Enable C1TRIP to wake the device from standby
  96.    Uint16 C2TRIP:1;      // 8     Enable C2TRIP to wake the device from standby
  97.    Uint16 C3TRIP:1;      // 9     Enable C3TRIP to wake the device from standby
  98.    Uint16 C4TRIP:1;      // 10    Enable C4TRIP to wake the device from standby
  99.    Uint16 C5TRIP:1;      // 11    Enable C5TRIP to wake the device from standby
  100.    Uint16 C6TRIP:1;      // 12    Enable C6TRIP to wake the device from standby
  101.    Uint16 SCIRXA:1;      // 13    Enable SCIRXA to wake the device from standby
  102.    Uint16 SCIRXB:1;      // 14    Enable SCIRXB to wake the device from standby
  103.    Uint16 CANRX:1;       // 15    Enable CANRX to wake the device from standby
  104. };
  105. union LPMCR1_REG {
  106.    Uint16              all;
  107.    struct LPMCR1_BITS  bit;
  108. };
  109. //---------------------------------------------------------------------------
  110. // System Control Register File:
  111. //
  112. struct SYS_CTRL_REGS {
  113.    Uint16  rsvd1[10];            // 0-9
  114.    union   HISPCP_REG HISPCP;    // 10: High-speed peripheral clock pre-scaler
  115.    union   LOSPCP_REG LOSPCP;    // 11: Low-speed peripheral clock pre-scaler
  116.    union   PCLKCR_REG PCLKCR;    // 12: Peripheral clock control register
  117.    Uint16             rsvd2;     // 13: reserved
  118.    union   LPMCR0_REG LPMCR0;    // 14: Low-power mode control register 0
  119.    union   LPMCR1_REG LPMCR1;    // 15: Low-power mode control register 1
  120.    Uint16             rsvd3;     // 16: reserved
  121.    union   PLLCR_REG  PLLCR;     // 17: PLL control register
  122.    // No bit definitions are defined for SCSR because
  123.    // a read-modify-write instruction can clear the WDOVERRIDE bit
  124.    Uint16             SCSR;      // 18: System control and status register
  125.    Uint16             WDCNTR;    // 19: WD counter register
  126.    Uint16             rsvd4;     // 20
  127.    Uint16             WDKEY;     // 21: WD reset key register
  128.    Uint16             rsvd5[3];  // 22-24
  129.    // No bit definitions are defined for WDCR because
  130.    // the proper value must be written to the WDCHK field
  131.    // whenever writing to this register. 
  132.    Uint16             WDCR;      // 25: WD timer control register
  133.    Uint16             rsvd6[6];  // 26-31
  134. };
  135. /* --------------------------------------------------- */
  136. /* CSM Registers                                       */
  137. /*                                                     */
  138. /* ----------------------------------------------------*/
  139. /* CSM Status & Control register bit definitions */
  140. struct  CSMSCR_BITS {      // bit   description
  141.    Uint16     SECURE:1;    // 0     Secure flag
  142.    Uint16     rsvd1:14;    // 14-1  reserved
  143.    Uint16     FORCESEC:1;  // 15    Force Secure control bit
  144. }; 
  145. /* Allow access to the bit fields or entire register */
  146. union CSMSCR_REG {
  147.    Uint16             all;
  148.    struct CSMSCR_BITS bit;
  149. };
  150. /* CSM Register File */ 
  151. struct  CSM_REGS {      
  152.    Uint16           KEY0;    // KEY reg bits 15-0 
  153.    Uint16           KEY1;    // KEY reg bits 31-16 
  154.    Uint16           KEY2;    // KEY reg bits 47-32
  155.    Uint16           KEY3;    // KEY reg bits 63-48
  156.    Uint16           KEY4;    // KEY reg bits 79-64
  157.    Uint16           KEY5;    // KEY reg bits 95-80
  158.    Uint16           KEY6;    // KEY reg bits 111-96
  159.    Uint16           KEY7;    // KEY reg bits 127-112
  160.    Uint16           rsvd1;   // reserved
  161.    Uint16           rsvd2;   // reserved
  162.    Uint16           rsvd3;   // reserved
  163.    Uint16           rsvd4;   // reserved
  164.    Uint16           rsvd5;   // reserved
  165.    Uint16           rsvd6;   // reserved
  166.    Uint16           rsvd7;   // reserved 
  167.    union CSMSCR_REG CSMSCR;  // CSM Status & Control register
  168. };
  169. /* Password locations */
  170. struct  CSM_PWL {
  171.    Uint16   PSWD0;  // PSWD bits 15-0
  172.    Uint16   PSWD1;  // PSWD bits 31-16
  173.    Uint16   PSWD2;  // PSWD bits 47-32
  174.    Uint16   PSWD3;  // PSWD bits 63-48
  175.    Uint16   PSWD4;  // PSWD bits 79-64
  176.    Uint16   PSWD5;  // PSWD bits 95-80
  177.    Uint16   PSWD6;  // PSWD bits 111-96
  178.    Uint16   PSWD7;  // PSWD bits 127-112
  179. };
  180. /* Flash Registers */
  181. #define FLASH_SLEEP   0x0000;
  182. #define FLASH_STANDBY 0x0001;
  183. #define FLASH_ACTIVE  0x0003;
  184. /* Flash Option Register bit definitions */
  185. struct  FOPT_BITS {       // bit   description
  186.    Uint16     ENPIPE:1;   // 0     Enable Pipeline Mode
  187.    Uint16     rsvd:15;    // 1-15  reserved
  188. };
  189. /* Allow access to the bit fields or entire register */
  190. union FOPT_REG {
  191.    Uint16           all;
  192.    struct FOPT_BITS bit;
  193. };
  194. /* Flash Power Modes Register bit definitions */
  195. struct  FPWR_BITS {       // bit   description
  196.    Uint16     PWR:2;      // 0-1   Power Mode bits
  197.    Uint16     rsvd:14;    // 2-15  reserved
  198. };
  199. /* Allow access to the bit fields or entire register */
  200. union FPWR_REG {
  201.    Uint16           all;
  202.    struct FPWR_BITS bit;
  203. };
  204. /* Flash Status Register bit definitions */
  205. struct  FSTATUS_BITS {       // bit   description
  206.    Uint16     PWRS:2;        // 0-1   Power Mode Status bits
  207.    Uint16     STDBYWAITS:1;  // 2     Bank/Pump Sleep to Standby Wait Counter Status bits
  208.    Uint16     ACTIVEWAITS:1; // 3     Bank/Pump Standby to Active Wait Counter Status bits
  209.    Uint16     rsvd1:4;       // 4-7   reserved
  210.    Uint16     V3STAT:1;      // 8     VDD3V Status Latch bit
  211.    Uint16     rsvd2:7;       // 9-15  reserved
  212. };
  213. /* Allow access to the bit fields or entire register */
  214. union FSTATUS_REG {
  215.    Uint16              all;
  216.    struct FSTATUS_BITS bit;
  217. };
  218. /* Flash Sleep to Standby Wait Counter Register bit definitions */
  219. struct  FSTDBYWAIT_BITS {    // bit   description
  220.    Uint16     STDBYWAIT:8;   // 0-7   Bank/Pump Sleep to Standby Wait Count bits
  221.    Uint16     rsvd:8;        // 8-15  reserved
  222. };
  223. /* Allow access to the bit fields or entire register */
  224. union FSTDBYWAIT_REG {
  225.    Uint16                 all;
  226.    struct FSTDBYWAIT_BITS bit;
  227. };
  228. /* Flash Standby to Active Wait Counter Register bit definitions */
  229. struct  FACTIVEWAIT_BITS {   // bit   description
  230.    Uint16     ACTIVEWAIT:8;  // 0-7   Bank/Pump Standby to Active Wait Count bits
  231.    Uint16     rsvd:8;        // 8-15  reserved
  232. };
  233. /* Allow access to the bit fields or entire register */
  234. union FACTIVEWAIT_REG {
  235.    Uint16                  all;
  236.    struct FACTIVEWAIT_BITS bit;
  237. };
  238. /* Bank Read Access Wait State Register bit definitions */
  239. struct  FBANKWAIT_BITS {     // bit   description
  240.    Uint16     RANDWAIT:4;    // 0-3   Flash Random Read Wait State bits
  241.    Uint16     rsvd1:4;       // 4-7   reserved
  242.    Uint16     PAGEWAIT:4;    // 8-11  Flash Paged Read Wait State bits
  243.    Uint16     rsvd2:4;       // 12-15 reserved
  244. };
  245. /* Allow access to the bit fields or entire register */
  246. union FBANKWAIT_REG {
  247.    Uint16                all;
  248.    struct FBANKWAIT_BITS bit;
  249. };
  250. /* OTP Read Access Wait State Register bit definitions */
  251. struct  FOTPWAIT_BITS {      // bit   description
  252.    Uint16     OTPWAIT:5;     // 0-4   OTP Read Wait State bits
  253.    Uint16     rsvd:11;       // 5-15  reserved
  254. };
  255. /* Allow access to the bit fields or entire register */
  256. union FOTPWAIT_REG {
  257.    Uint16               all;
  258.    struct FOTPWAIT_BITS bit;
  259. };
  260. struct FLASH_REGS {
  261.    union FOPT_REG        FOPT;        // Option Register
  262.    Uint16                rsvd1;       // reserved
  263.    union FPWR_REG        FPWR;        // Power Modes Register
  264.    union FSTATUS_REG     FSTATUS;     // Status Register
  265.    union FSTDBYWAIT_REG  FSTDBYWAIT;  // Pump/Bank Sleep to Standby Wait State Register
  266.    union FACTIVEWAIT_REG FACTIVEWAIT; // Pump/Bank Standby to Active Wait State Register
  267.    union FBANKWAIT_REG   FBANKWAIT;   // Bank Read Access Wait State Register
  268.    union FOTPWAIT_REG    FOTPWAIT;    // OTP Read Access Wait State Register
  269. };
  270. //---------------------------------------------------------------------------
  271. // System Control External References & Function Declarations:
  272. //
  273. extern volatile struct SYS_CTRL_REGS SysCtrlRegs;
  274. extern volatile struct CSM_REGS CsmRegs;
  275. extern volatile struct CSM_PWL CsmPwl;
  276. extern volatile struct FLASH_REGS FlashRegs;
  277. #ifdef __cplusplus
  278. }
  279. #endif /* extern "C" */
  280. #endif  // end of DSP281x_SYS_CTRL_H definition
  281. //===========================================================================
  282. // No more.
  283. //===========================================================================