DSP281x_Xintf.c
上传用户:qingfan3
上传日期:2014-10-27
资源大小:31439k
文件大小:7k
源码类别:

DSP编程

开发平台:

C/C++

  1. //###########################################################################
  2. //
  3. // FILE:   DSP281x_Xintf.c
  4. //
  5. // TITLE:   DSP281x Device External Interface Init & Support Functions.
  6. //
  7. // DESCRIPTION:
  8. //
  9. //          Example initialization function for the external interface (XINTF).
  10. //          This example configures the XINTF to its default state.  For an
  11. //          example of how this function can be modified to configure the XINTF
  12. //          for use with the F2812 eZdsp, refer to the examples/run_from_xintf
  13. //          project.
  14. //
  15. //###########################################################################
  16. //
  17. //  Ver | dd mmm yyyy | Who  | Description of changes
  18. // =====|=============|======|===============================================
  19. //  1.00| 11 Sep 2003 | L.H. | Changes since previous version (v.58 Alpha)
  20. //      |             |      | Added pipeline flush after the XINTF Init
  21. //###########################################################################
  22. #include "DSP281x_Device.h"     // DSP281x Headerfile Include File
  23. #include "DSP281x_Examples.h"   // DSP281x Examples Include File
  24. //---------------------------------------------------------------------------
  25. // InitXINTF: 
  26. //---------------------------------------------------------------------------
  27. // This function initializes the External Interface the default reset state.
  28. //
  29. // Do not modify the timings of the XINTF while running from the XINTF.  Doing
  30. // so can yield unpredictable results
  31. void InitXintf(void)
  32. {
  33. #if  F2812
  34.     // This shows how to write to the XINTF registers.  The
  35.     // values used here are the default state after reset.
  36.     // Different hardware will require a different configuration.
  37.     
  38.     // For an example of an XINTF configuration used with the
  39.     // F2812 eZdsp, refer to the examples/run_from_xintf project.
  40.     
  41.     // Any changes to XINTF timing should only be made by code
  42.     // running outside of the XINTF. 
  43.     
  44.     // All Zones---------------------------------
  45.     // Timing for all zones based on XTIMCLK = 1/2 SYSCLKOUT 
  46.     XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
  47.     // No write buffering
  48.     XintfRegs.XINTCNF2.bit.WRBUFF = 0;
  49.     // XCLKOUT is enabled
  50.     XintfRegs.XINTCNF2.bit.CLKOFF = 0;
  51.     // XCLKOUT = XTIMCLK/2 
  52.     XintfRegs.XINTCNF2.bit.CLKMODE = 1;
  53.     
  54.     
  55.     // Zone 0------------------------------------
  56.     // When using ready, ACTIVE must be 1 or greater
  57.     // Lead must always be 1 or greater
  58.     // Zone write timing
  59.     XintfRegs.XTIMING0.bit.XWRLEAD = 3;
  60.     XintfRegs.XTIMING0.bit.XWRACTIVE = 7;
  61.     XintfRegs.XTIMING0.bit.XWRTRAIL = 3;
  62.     // Zone read timing
  63.     XintfRegs.XTIMING0.bit.XRDLEAD = 3;
  64.     XintfRegs.XTIMING0.bit.XRDACTIVE = 7;
  65.     XintfRegs.XTIMING0.bit.XRDTRAIL = 3;
  66.     
  67.     // double all Zone read/write lead/active/trail timing 
  68.     XintfRegs.XTIMING0.bit.X2TIMING = 1;
  69.     // Zone will sample XREADY signal 
  70.     XintfRegs.XTIMING0.bit.USEREADY = 1;
  71.     XintfRegs.XTIMING0.bit.READYMODE = 1;  // sample asynchronous
  72.     // Size must be 1,1 - other values are reserved
  73.     XintfRegs.XTIMING0.bit.XSIZE = 3;
  74.     
  75.     // Zone 1------------------------------------
  76.     // When using ready, ACTIVE must be 1 or greater
  77.     // Lead must always be 1 or greater
  78.     // Zone write timing
  79.     XintfRegs.XTIMING1.bit.XWRLEAD = 3;
  80.     XintfRegs.XTIMING1.bit.XWRACTIVE = 7;
  81.     XintfRegs.XTIMING1.bit.XWRTRAIL = 3;
  82.     // Zone read timing
  83.     XintfRegs.XTIMING1.bit.XRDLEAD = 3;
  84.     XintfRegs.XTIMING1.bit.XRDACTIVE = 7;
  85.     XintfRegs.XTIMING1.bit.XRDTRAIL = 3;
  86.     
  87.     // double all Zone read/write lead/active/trail timing 
  88.     XintfRegs.XTIMING1.bit.X2TIMING = 1;
  89.     // Zone will sample XREADY signal 
  90.     XintfRegs.XTIMING1.bit.USEREADY = 1;
  91.     XintfRegs.XTIMING1.bit.READYMODE = 1;  // sample asynchronous
  92.     // Size must be 1,1 - other values are reserved
  93.     XintfRegs.XTIMING1.bit.XSIZE = 3;
  94.     // Zone 2------------------------------------
  95.     // When using ready, ACTIVE must be 1 or greater
  96.     // Lead must always be 1 or greater
  97.     // Zone write timing
  98.     XintfRegs.XTIMING2.bit.XWRLEAD = 3;
  99.     XintfRegs.XTIMING2.bit.XWRACTIVE = 7;
  100.     XintfRegs.XTIMING2.bit.XWRTRAIL = 3;
  101.     // Zone read timing
  102.     XintfRegs.XTIMING2.bit.XRDLEAD = 3;
  103.     XintfRegs.XTIMING2.bit.XRDACTIVE = 7;
  104.     XintfRegs.XTIMING2.bit.XRDTRAIL = 3;
  105.     
  106.     // double all Zone read/write lead/active/trail timing 
  107.     XintfRegs.XTIMING2.bit.X2TIMING = 1;
  108.     // Zone will sample XREADY signal 
  109.     XintfRegs.XTIMING2.bit.USEREADY = 1;
  110.     XintfRegs.XTIMING2.bit.READYMODE = 1;  // sample asynchronous
  111.     // Size must be 1,1 - other values are reserved
  112.     XintfRegs.XTIMING2.bit.XSIZE = 3;
  113.     // Zone 6------------------------------------
  114.     // When using ready, ACTIVE must be 1 or greater
  115.     // Lead must always be 1 or greater
  116.     // Zone write timing
  117.     XintfRegs.XTIMING6.bit.XWRLEAD = 3;
  118.     XintfRegs.XTIMING6.bit.XWRACTIVE = 7;
  119.     XintfRegs.XTIMING6.bit.XWRTRAIL = 3;
  120.     // Zone read timing
  121.     XintfRegs.XTIMING6.bit.XRDLEAD = 3;
  122.     XintfRegs.XTIMING6.bit.XRDACTIVE = 7;
  123.     XintfRegs.XTIMING6.bit.XRDTRAIL = 3;
  124.     
  125.     // double all Zone read/write lead/active/trail timing 
  126.     XintfRegs.XTIMING6.bit.X2TIMING = 1;
  127.     // Zone will sample XREADY signal 
  128.     XintfRegs.XTIMING6.bit.USEREADY = 1;
  129.     XintfRegs.XTIMING6.bit.READYMODE = 1;  // sample asynchronous
  130.     // Size must be 1,1 - other values are reserved
  131.     XintfRegs.XTIMING6.bit.XSIZE = 3;
  132.     // Zone 7------------------------------------
  133.     // When using ready, ACTIVE must be 1 or greater
  134.     // Lead must always be 1 or greater
  135.     // Zone write timing
  136.     XintfRegs.XTIMING7.bit.XWRLEAD = 3;
  137.     XintfRegs.XTIMING7.bit.XWRACTIVE = 7;
  138.     XintfRegs.XTIMING7.bit.XWRTRAIL = 3;
  139.     // Zone read timing
  140.     XintfRegs.XTIMING7.bit.XRDLEAD = 3;
  141.     XintfRegs.XTIMING7.bit.XRDACTIVE = 7;
  142.     XintfRegs.XTIMING7.bit.XRDTRAIL = 3;
  143.     
  144.     // double all Zone read/write lead/active/trail timing 
  145.     XintfRegs.XTIMING7.bit.X2TIMING = 1;
  146.     // Zone will sample XREADY signal 
  147.     XintfRegs.XTIMING7.bit.USEREADY = 1;
  148.     XintfRegs.XTIMING7.bit.READYMODE = 1;  // sample asynchronous
  149.     // Size must be 1,1 - other values are reserved
  150.     XintfRegs.XTIMING7.bit.XSIZE = 3;
  151.     // Bank switching
  152.     // Assume Zone 7 is slow, so add additional BCYC cycles 
  153.     // when ever switching from Zone 7 to another Zone.  
  154.     // This will help avoid bus contention.
  155.     XintfRegs.XBANK.bit.BANK = 7;
  156.     XintfRegs.XBANK.bit.BCYC = 7;
  157.    //Force a pipeline flush to ensure that the write to 
  158.    //the last register configured occurs before returning.  
  159.    asm(" RPT #7 || NOP"); 
  160.     
  161.     #endif
  162. }
  163. //===========================================================================
  164. // No more.
  165. //===========================================================================