?? spi dma driven.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 + -