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

本文参考文献 DSP28335数据手册,与《Programming TMS320x28xx and 28xxx Peripherals in C/C++》《F28335的位域和寄存器结构的学习

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

思路:

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

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

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


1、DSP28335 硬件概述与寄存器描述_第1张图片


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

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

1、DSP28335 硬件概述与寄存器描述_第2张图片

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

1、DSP28335 硬件概述与寄存器描述_第3张图片

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

1、DSP28335 硬件概述与寄存器描述_第4张图片

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

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

* 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的工程头文件中寄存器的定义有一个初步的了解,在以后的使用中,即可直接调用寄存器名字对其进行操作,这就将数据手册与头文件相对应了。






你可能感兴趣的:(DSP学习笔记)