[分享] DSP28335 硬件概述与寄存器

Jacktang   2019-2-20 20:05 楼主
1、DSP28335芯片是TI公司,偏向于控制方向、浮点型处理器,通过了解可以看出该芯片具有众多的外设,这这里只是将它看成一个超级单片机。其中这些外设的功能也很强大(复杂),所以在这里并不去深究他们的功能,而是只看他们的寄存器。


思路:


DSP数据手册-》外设功能---》寄存器名称+地址+时序图。


多功能的管脚通过寄存器去配置。


在这里不对DSP的具体外设列表与功能展开,有兴趣的可以去查阅芯片手册。


20180502124216835.png




2、外设寄存器在头文件定义


外设寄存器名字+地址+功能描述


20180502125106172 (1).png


使用#define 将寄存器名称与地址联系起来




20180502125405245.png
有了以上的联系,在程序中可以使用指针(寄存器名字)给寄存器赋值。
20180502130009147.png




在寄存器中有很多单独定义的位域寄存器,对位单独定义可以在程序中使用更加灵活。


/********************************************************************


* SCI header file


********************************************************************/


//----------------------------------------------------------


// SCICCR communication control register bit definitions:


//


struct      SCICCR_BITS {                 // bit deion


Uint16    SCICHAR:3;                       // 2:0 Character length control


Uint16    ADDRIDLE_MODE:1;        // 3 ADDR/IDLE Mode control


Uint16    LOOPBKENA:1;                 // 4 Loop Back enable


Uint16    PARITYENA:1;                  // 5 Parity enable


Uint16    PARITY:1;                         // 6 Even or Odd Parity


Uint16    STOPBITS:1;                      // 7 Number of Stop Bits


Uint16    rsvd1:8;                              // 15:8 reserved


};


//-------------------------------------------


// SCICTL1 control register 1 bit definitions:


//


struct SCICTL1_BITS {                            // bit deion


Uint16    RXENA:1;                          // 0 SCI receiver enable


Uint16    TXENA:1;                          // 1 SCI transmitter enable


Uint16    SLEEP:1;                           // 2 SCI sleep


Uint16    TXWAKE:1;                       // 3 Transmitter wakeup method


Uint16    rsvd:1;                                // 4 reserved


Uint16    SWRESET:1;                      // 5 Software reset


Uint16    RXERRINTENA:1;             // 6 Receive interrupt enable


Uint16    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 long


struct SCI_REGS {


Uint16    SCICCR_REG      SCICCR;             // Communications control register


Uint16    SCICTL1_REG     SCICTL1;             // Control register 1


Uint16                                SCIHBAUD;         // Baud rate (high) register


Uint16                                SCILBAUD;         // Baud rate (low) register


Uint16    SCICTL2_REG     SCICTL2;             // Control register 2


Uint16  SCIRXST_REG    SCIRXST;            // Receive status register


Uint16                               SCIRXEMU;               // Receive emulation buffer register


Uint16  SCIRXBUF_REG SCIRXBUF;         // Receive data buffer


Uint16                               rsvd1;                   // reserved


Uint16                               SCITXBUF;          // Transmit data buffer


Uint16  SCIFFTX_REG     SCIFFTX;            // FIFO transmit register


Uint16  SCIFFRX_REG    SCIFFRX;            // FIFO receive register


Uint16  SCIFFCT_REG     SCIFFCT;             // FIFO control register


Uint16                               rsvd2;                   // reserved


Uint16                               rsvd3;                   // reserved


Uint16  SCIPRI_REG        SCIPRI;                      // FIFO Priority control


};


通过以上学习,可以对芯片有一个大致的了解,对28335的工程头文件中寄存器的定义有一个初步的了解,在以后的使用中,即可直接调用寄存器名字对其进行操作,这就将数据手册与头文件相对应了。

回复评论 (2)

不错的资料,挺好的。
点赞  2019-2-21 10:53
好基础的资料分享啊。
点赞  2019-2-21 10:55
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复