DSP

1、DSP28335 硬件概述与寄存器描述

2019-07-13 10:29发布

本文参考文献 DSP28335数据手册,与《Programming TMS320x28xx and 28xxx Peripherals in C/C++》《F28335的位域和寄存器结构的学习1、DSP28335芯片是TI公司,偏向于控制方向、浮点型处理器,通过了解可以看出该芯片具有众多的外设,这这里只是将它看成一个超级单片机。其中这些外设的功能也很强大(复杂),所以在这里并不去深究他们的功能,而是只看他们的寄存器。思路:DSP数据手册-》外设功能---》寄存器名称+地址+时序图。多功能的管脚通过寄存器去配置。在这里不对DSP的具体外设列表与功能展开,有兴趣的可以去查阅芯片手册。


2、外设寄存器在头文件定义外设寄存器名字+地址+功能描述
使用#define 将寄存器名称与地址联系起来
有了以上的联系,在程序中可以使用指针(寄存器名字)给寄存器赋值。
在寄存器中有很多单独定义的位域寄存器,对位单独定义可以在程序中使用更加灵活。/********************************************************************* SCI header file********************************************************************///----------------------------------------------------------// SCICCR communication control register bit definitions://struct      SCICCR_BITS {                 // bit deionUint16    SCICHAR:3;                       // 2:0 Character length controlUint16    ADDRIDLE_MODE:1;        // 3 ADDR/IDLE Mode controlUint16    LOOPBKENA:1;                 // 4 Loop Back enableUint16    PARITYENA:1;                  // 5 Parity enableUint16    PARITY:1;                         // 6 Even or Odd ParityUint16    STOPBITS:1;                      // 7 Number of Stop BitsUint16    rsvd1:8;                              // 15:8 reserved};//-------------------------------------------// SCICTL1 control register 1 bit definitions://struct SCICTL1_BITS {                            // bit deionUint16    RXENA:1;                          // 0 SCI receiver enableUint16    TXENA:1;                          // 1 SCI transmitter enableUint16    SLEEP:1;                           // 2 SCI sleepUint16    TXWAKE:1;                       // 3 Transmitter wakeup methodUint16    rsvd:1;                                // 4 reservedUint16    SWRESET:1;                      // 5 Software resetUint16    RXERRINTENA:1;             // 6 Receive interrupt enableUint16    rsvd1:9;                              // 15:7 reserved};在上面的定义中,使用了操作符“:”,用来说明位域的长度,即当前位域占几位。
使用联合体。除了能够方便的访问位域外,有时候也希望能够对寄存器整体访问,使用联合体能够实现这种操作。/********************************************************************* SCI header file********************************************************************/union SCICCR_REG {Uint16                                all;struct      SCICCR_BITS      bit;};union SCICTL1_REG {Uint16                                all;struct      SCICTL1_BITS     bit;};7)、将添加位域后的寄存器结构体重新实现。/********************************************************************* SCI header file* Defines a register file structure for the SCI peripheral********************************************************************/#define    Uint16    unsigned int#define    Uint32    unsigned longstruct SCI_REGS {Uint16    SCICCR_REG      SCICCR;             // Communications control registerUint16    SCICTL1_REG     SCICTL1;             // Control register 1Uint16                                SCIHBAUD;         // Baud rate (high) registerUint16                                SCILBAUD;         // Baud rate (low) registerUint16    SCICTL2_REG     SCICTL2;             // Control register 2Uint16  SCIRXST_REG    SCIRXST;            // Receive status registerUint16                               SCIRXEMU;               // Receive emulation buffer registerUint16  SCIRXBUF_REG SCIRXBUF;         // Receive data bufferUint16                               rsvd1;                   // reservedUint16                               SCITXBUF;          // Transmit data bufferUint16  SCIFFTX_REG     SCIFFTX;            // FIFO transmit registerUint16  SCIFFRX_REG    SCIFFRX;            // FIFO receive registerUint16  SCIFFCT_REG     SCIFFCT;             // FIFO control registerUint16                               rsvd2;                   // reservedUint16                               rsvd3;                   // reservedUint16  SCIPRI_REG        SCIPRI;                      // FIFO Priority control};
通过以上学习,可以对芯片有一个大致的了解,对28335的工程头文件中寄存器的定义有一个初步的了解,在以后的使用中,即可直接调用寄存器名字对其进行操作,这就将数据手册与头文件相对应了。