TMS320F28335之外部接口

来源:互联网 发布:java计算四舍五入 编辑:程序博客网 时间:2024/05/15 09:17
  • 外部寄存器接口原理
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

  • 外部接口寄存器定义
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

28335的XINTF接口没有中断设置,初始化配置XINTF模块就可直接使用,数据访问地址格式为Data=(^(volatile Uint16^)(0x4000+ 0x0000)),其中0x4000为基地址,0x0000为偏移地址,^为指针符号*。由此总结xintf接口配置步骤为:
1、设置GPIO为xintf模块。
2、开启xintf时钟。
3、设置xintf模块配置
4、访问或写入xintf地址。

  • 外部接口头文件DSP2833x_Xintf.h程序如下
// TI File $Revision: /main/4 $// Checkin $Date: July 27, 2009   13:57:25 $//###########################################################################//// FILE:   DSP2833x_Xintf.h//// TITLE:  DSP2833x Device 外部接口寄存器定义.////###########################################################################// $TI Release: DSP2833x/DSP2823x C/C++ Header Files V1.31 $// $Release Date: August 4, 2009 $//############################################################################ifndef DSP2833x_XINTF_H#define DSP2833x_XINTF_H#ifdef __cplusplusextern "C" {#endif// XINTF 时序寄存器位定义:struct XTIMING_BITS {    // bits  描述   Uint16 XWRTRAIL:2;    // 1:0   写访问跟踪时间   Uint16 XWRACTIVE:3;   // 4:2   写访问有效时间   Uint16 XWRLEAD:2;     // 6:5   写访问建立时间   Uint16 XRDTRAIL:2;    // 8:7   读访问跟踪时间   Uint16 XRDACTIVE:3;   // 11:9  读访问有效时间   Uint16 XRDLEAD:2;     // 13:12 读访问建立时间   Uint16 USEREADY:1;    // 14    区域XREADY信号采样使能   Uint16 READYMODE:1;   // 15    采样方式控制   Uint16 XSIZE:2;       // 17:16 数据总线宽度设定   Uint16 rsvd1:4;       // 21:18 保留   Uint16 X2TIMING:1;    // 22    实际值与设定值比值   Uint16 rsvd3:9;       // 31:23 保留};//时序寄存器union XTIMING_REG {   Uint32               all;   struct XTIMING_BITS  bit;    //时序寄存器位定义};// XINTF 控制寄存器位定义:struct XINTCNF2_BITS {    // bits  描述   Uint16 WRBUFF:2;       // 1:0   写缓冲器深度控制位   Uint16 CLKMODE:1;      // 2     XCLKOUT 时钟频率控制位   Uint16 CLKOFF:1;       // 3     使能 XCLKOUT   Uint16 rsvd1:2;        // 5:4   保留   Uint16 WLEVEL:2;       // 7:6   写缓冲寄存器数据个数   Uint16 rsvd2:1;        // 8     保留   Uint16 HOLD:1;         // 9     自动允许外部设备请求   Uint16 HOLDS:1;        // 10    请求对总线访问状态   Uint16 HOLDAS:1;       // 11    进行外部设备访问状态   Uint16 rsvd3:4;        // 15:12 保留   Uint16 XTIMCLK:3;      // 18:16 配置XTIMCLK   Uint16 rsvd4:13;       // 31:19 保留};//配置寄存器union XINTCNF2_REG {   Uint32                all;   struct XINTCNF2_BITS  bit;       //配置寄存器位定义      };// XINTF 区域切换控制寄存器位定义:struct XBANK_BITS {                 // bits  描述   Uint16  BANK:3;                  // 2:0   切换时的插入时间   Uint16  BCYC:3;                  // 5:3   指定区域   Uint16  rsvd:10;                 // 15:6  保留};//区域切换控制寄存器union XBANK_REG {   Uint16             all;   struct XBANK_BITS  bit;          //区域切换控制寄存器位定义};//模块复位寄存器位定义struct XRESET_BITS {    Uint16  XHARDRESET:1;    Uint16  rsvd1:15;};//模块复位寄存器union XRESET_REG {    Uint16            all;    struct XRESET_BITS bit;         //模块复位寄存器位定义};//---------------------------------------------------------------------------// XINTF 寄存器文件://struct XINTF_REGS {   union XTIMING_REG XTIMING0;      //区域0时序寄存器   Uint32  rsvd1[5];                //保留   union XTIMING_REG XTIMING6;      //区域6时序寄存器   union XTIMING_REG XTIMING7;      //区域7时序寄存器   Uint32  rsvd2[2];                //保留   union XINTCNF2_REG XINTCNF2;     //配置寄存器   Uint32  rsvd3;                   //保留   union XBANK_REG    XBANK;        //区域切换控制寄存器   Uint16  rsvd4;                   //保留   Uint16  XREVISION;               //版本修订寄存器   Uint16  rsvd5[2];                //保留   union XRESET_REG   XRESET;       //模块复位寄存器};//---------------------------------------------------------------------------// XINTF 外部引用 & 函数声明://extern volatile struct XINTF_REGS XintfRegs;#ifdef __cplusplus}#endif /* extern "C" */#endif  // end of DSP2833x_XINTF_H definition//===========================================================================// No more.//===========================================================================
  • XINTF配置文件DSP2833x_Xintf.c程序如下
// TI File $Revision: /main/5 $// Checkin $Date: August 16, 2007   11:06:26 $//###########################################################################//// FILE:   DSP2833x_Xintf.c//// TITLE:   DSP2833x Device 外部接口初始化 & 支持函数.//// DESCRIPTION:////          Example initialization function for the external interface (XINTF).//          This example configures the XINTF to its default state.  For an//          example of how this function being used refer to the//          examples/run_from_xintf project.////###########################################################################// $TI Release: DSP2833x/DSP2823x C/C++ Header Files V1.31 $// $Release Date: August 4, 2009 $//############################################################################include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File//---------------------------------------------------------------------------// InitXINTF://---------------------------------------------------------------------------// 改函数将外部接口初始化至默认的复位状态.//// Do not modify the timings of the XINTF while running from the XINTF.  Doing// so can yield unpredictable resultsvoid InitXintf(void){    // 这显示了如何写XINTF寄存器。    // 这里使用了重置后的默认状态值。    // 不同的硬件需要不同的配置。    // 为INTF配置一个例子,在如下目录    // F28335 eZdsp, refer to the examples/run_from_xintf project.    // 任何更改XINTF配置只能从XINTF扩展之外的区域运行代码。    // 所有区域---------------------------------    // 所有区域的基准时间时钟为 XTIMCLK = 1/2 SYSCLKOUT    EALLOW;    SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1;         //开启XINTF时钟信号    XintfRegs.XINTCNF2.bit.XTIMCLK = 1;             //基准时钟XTIMCLK = 1/2 SYSCLKOUT    XintfRegs.XINTCNF2.bit.WRBUFF = 0;              //无写缓冲寄存器    XintfRegs.XINTCNF2.bit.CLKOFF = 1;              //禁止XCLKOUT    XintfRegs.XINTCNF2.bit.CLKMODE = 1;             //XCLKOUT=XTIMCLK/2    XintfRegs.XTIMING0.bit.XWRLEAD = 2;             //区域0写建立时间为11b,周期数为6    XintfRegs.XTIMING0.bit.XWRACTIVE = 5;           //有效时间为111b,周期数为14    XintfRegs.XTIMING0.bit.XWRTRAIL = 2;            //跟踪时间为11b,周期数为6    // Zone read timing    XintfRegs.XTIMING0.bit.XRDLEAD = 2;             //区域0读建立时间为11b,周期数为6    XintfRegs.XTIMING0.bit.XRDACTIVE = 5;           //有效时间为111b,周期数为14    XintfRegs.XTIMING0.bit.XRDTRAIL = 2;            //跟踪时间为11b,周期数为6    // double all Zone read/write lead/active/trail timing    XintfRegs.XTIMING0.bit.X2TIMING = 1;            //比值2:1    // Zone will sample XREADY signal    XintfRegs.XTIMING0.bit.USEREADY = 0;            //XREADY信号采样    XintfRegs.XTIMING0.bit.READYMODE = 1;           //异步采样    XintfRegs.XTIMING0.bit.XSIZE = 3;               //数据总线宽度,16位//*****************************************************************************////片外ram访问//****************************************************************************//    XintfRegs.XTIMING6.bit.XWRLEAD = 3;             //区域6写建立时间为11b,周期数为6        XintfRegs.XTIMING6.bit.XWRACTIVE = 7;           //有效时间为111b,周期数为14    XintfRegs.XTIMING6.bit.XWRTRAIL = 3;            //跟踪时间为11b,周期数为6    // Zone read timing`    `       XintfRegs.XTIMING6.bit.XRDLEAD = 3;             //区域6读建立时间为11b,周期数为6    XintfRegs.XTIMING6.bit.XRDACTIVE = 7;           //有效时间为111b,周期数为14    XintfRegs.XTIMING6.bit.XRDTRAIL = 3;            //跟踪时间为11b,周期数为6    // double all Zone read/write lead/active/trail timing    XintfRegs.XTIMING6.bit.X2TIMING = 1;            //比值    // Zone will sample XREADY signal    XintfRegs.XTIMING6.bit.USEREADY = 0;            //不对ready信号采样    XintfRegs.XTIMING6.bit.READYMODE = 1;           //异步采样     XintfRegs.XTIMING6.bit.XSIZE = 3;               //数据总线宽度,16位    // Zone 7------------------------------------    XintfRegs.XTIMING7.bit.XWRLEAD = 3;             //区域7写建立时间为11b,周期数为6    XintfRegs.XTIMING7.bit.XWRACTIVE = 7;           //有效时间为111b,周期数为14    XintfRegs.XTIMING7.bit.XWRTRAIL = 3;            //跟踪时间为11b,周期数为6    // Zone read timing    XintfRegs.XTIMING7.bit.XRDLEAD = 3;             //区域7读建立时间为11b,周期数为6    XintfRegs.XTIMING7.bit.XRDACTIVE = 7;           //有效时间为111b,周期数为14    XintfRegs.XTIMING7.bit.XRDTRAIL = 3;            //跟踪时间为11b,周期数为6    // double all Zone read/write lead/active/trail timing    XintfRegs.XTIMING7.bit.X2TIMING = 1;            //比值2:1    // Zone will sample XREADY signal    XintfRegs.XTIMING7.bit.USEREADY = 0;            //XREADY信号采样    XintfRegs.XTIMING7.bit.READYMODE = 1;           //异步采样     // Size must be either:    XintfRegs.XTIMING7.bit.XSIZE = 3;               //数据总线宽度,16位    // Bank switching   XintfRegs.XBANK.bit.BANK = 0;                    //区域7被指定    XintfRegs.XBANK.bit.BCYC = 7;                   //区域切换的插入延时时间     EDIS;   //Force a pipeline flush to ensure that the write to   //the last register configured occurs before returning.// InitXintf32Gpio();//   asm(" RPT #7 || NOP");}//===========================================================================// No more.//===========================================================================
  • 参考资料
    《手把手教你学DSP:基于TMS320F28335》
    《TMS320F28335DSP原理与开发编程》
    《28335接口扩展 (XINTF) 参考指南》
0 0
原创粉丝点击