⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi dma driven.c

📁 ADI 公司的DSP ADSP21262 EZ-KIT LITE开发板的全部源代码
💻 C
字号:
/* SPI Control Registers                                  */
#define SPICTL  (0x1000)  /* SPI Control Register         */
#define SPIFLG  (0x1001)  /* SPI Flag register            */
#define SPIBAUD (0x1005)  /* SPI baud setup register      */

/* SPI DMA Registers                                      */
#define IISPI   (0x1080)  /* Internal DMA address         */
#define IMSPI   (0x1081)  /* Internal DMA access modifier */
#define CSPI    (0x1082)  /* Number of words to transfers */
#define CPSPI   (0x1083)  /* Points to next DMA parameters*/
#define SPIDMAC (0x1084)  /* SPI DMA control register     */

/*SPICTL bits                                             */
#define TIMOD2  (0x0002)  /* Use DMA for transfers        */
#define DMISO   (0x0020)  /* Disable MISO pin             */
#define WL32    (0x0100)  /* SPI Word Length = 32         */
#define SPIMS   (0x1000)  /* SPI Master if 1, Slave if 0  */
#define SPIEN   (0x4000)  /* SPI Port Enable              */

/*SPIFLG bits                                             */
#define DS0EN   (0x0001)  /* use FLG0 as SPI device-select*/

/*SPIDMAC bits                                            */
#define SPIDEN  (0x0001)  /* enable DMA on the SPI port   */

/* Default buffer size */
#define BUFSIZE 0x100
/*========================================================*/
/* Source data to be transmitted via SPI DMA              */
int src_buf[BUFSIZE]= {
                         #include "source.dat"
                      };

/* Application code */
main(){
/* Init SPI MASTER TX DMA */
*(volatile int *)SPICTL = 0;
*(volatile int *)SPIFLG = 0;
*(volatile int *)SPIDMAC = 0;

/* set the SPI baud rate to CCLK/4*64 (781.25KHz @ 200MHz)*/
     *(volatile int *)SPIBAUD = 0x64;

*(volatile int *)SPIFLG = DS0EN;    /*use flag0 as spi device select */

*(volatile int *)IISPI = (int) src_buf; /* point to 'src_buf' */
*(volatile int *)CSPI = sizeof(src_buf);    /* count = 256  */
*(volatile int *)IMSPI = 1;    /* step size = 1     */

*(volatile int *)SPICTL = DMISO|  /* Disable MISO on transfers */
         WL32|   /* 32-bit words */
         SPIMS|  /* Master mode (internal SPICLK) */
         SPIEN|  /* Enable SPI port */
         TIMOD2; /* Initialize SPI port to begin
                    transmitting when DMA is enabled */

*(volatile int *)SPIDMAC = SPIDEN;  /* begin DMA         */
/*========================================================*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -