TMS320f2812地址映射以及CMD文件详解.pdfVIP

  • 64
  • 0
  • 约8.43千字
  • 约 4页
  • 2020-12-25 发布于浙江
  • 举报
TMS320f2812 地址映射以及cmd 文件详解 用过 F2812 的朋友一定会对cmd 文件很熟悉,因为这个文件中为每个程序和数据分配了相应的地址。 我们常用的cmd 文件包括连个: (1) DSP281x_Headers_nonBIOS.cmd (2) F2812_EzDSP_RAM_lnk.cmd DSP281x_Headers_nonBIOS.cmd 上面第一个文件用于对 DSP 外设分配地址,而第二个文件是为系统的程序和数据分配地址。当然,如 果 DSP 的外设地址我们用C 语言已经自己定义,那第一个文件我们就可以不用了,笔者就是自己定义的, 所以没有用到第一个文件。对于为什么要自己定义外设寄存器以及中断地址,有这几个原因: (1) 自己定义外设寄存器地址可以很清楚的了解DSP 的工作原理,虽然这样很耗费时间,但是会了解到 DSP 的中断等等是怎么工作的。 (2)因为DSP 外设寄存器地址的分配时采用寄存器形式分配到的。举个例子,以sci 串口通信为例,其他 的外设以及中断都一样。 比如我们设置波特率,肯定是设置某个寄存器的相应位来实现。而DSP 是这样实现的: ScibRegs.SCIHBAUD = (BRRVal 8); ScibRegs.SCILBAUD = (BRRVal); 上面的程序,ScibRegs 是串口的寄存器结构体,也就说说 DSP 的每个寄存器都是以结构体为单位来分配地 址的,而每个寄存器的具体地址通过偏移来分配,因为在 DSP 中,某个外设的寄存器地址是基本连续的。 而这个结构体的定义是这样的: extern volatile struct SCI_REGS SciaRegs; extern volatile struct SCI_REGS ScibRegs; 大家可以看到,这里定义了两个结构体,一个是SciaRegs ,一个是ScibRegs,因为DSP 内部有两个串行通信, A 和B,这两个都是结构体,而类型就是前面的SCI_REGS 的,这个结构体类型是这样定义的: struct SCI_REGS { union SCICCR_REG SCICCR; // Communications control register union SCICTL1_REG SCICTL1; // Control register 1 Uint16 SCIHBAUD; // Baud rate (high) register Uint16 SCILBAUD; // Baud rate (low) register union SCICTL2_REG SCICTL2; // Control register 2 union SCIRXST_REG SCIRXST; // Recieve status register Uint16 S CIRXEMU; // Recieve emulation buffer register union SCIRXBUF_REG SCIRXBUF; // Recieve data buffer Uint16 rsvd1; // reserved Uint16 SCITXBUF; // Transmit data buffer union SCIFFTX_REG SCIFFTX; // FIFO transmit register union SCIFFRX_REG SCIFFRX; // FIFO recieve register union SCIFFCT_REG SCIFFCT; // FIFO control register Uint16 rsvd2; // reserved Uint16 rsvd3; // reserved union SCIPRI_REG SCIPRI; // FIFO

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档