spi core driven.asm
来自「ADI 公司的DSP ADSP21262 EZ-KIT LITE开发板的全部源代」· 汇编 代码 · 共 66 行
ASM
66 行
/* SPI Control Registers */
#define SPICTL (0x1000)
#define SPIFLG (0x1001)
#define SPIBAUD (0x1005)
#define TXSPI (0x1003)
/*SPICTL bits */
#define TIMOD1 (0x0001) /* 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*/
/* Default Buffer Length */
#define BUFSIZE 10
.SECTION/DM seg_dmda;
/* Transmit Buffer */
.var tx_buf[BUFSIZE]= 0x11111111,
0x22222222,
0x33333333,
0x44444444,
0x55555555,
0x66666666,
0x77777777,
0x88888888,
0x99999999,
0xAAAAAAAA;
/* Main code section */
.global _main;
.SECTION/PM seg_pmco;
_main:
/* Init SPI MASTER TX */
r0=0;
dm(SPICTL)=r0;
dm(SPIFLG)=r0;
/* set the SPI baud rate to CCLK/4*64 (781.25KHz @ 200MHz)*/
ustat3 = 0x64;
dm(SPIBAUD)=ustat3;
/* Set up DAG registers */
i4=tx_buf;
m4=1;
ustat3 = DMISO| /* Disable MISO on transfers */
WL32| /* 32-bit words */
SPIMS| /* Master mode (internal SPICLK) */
SPIEN| /* Enable SPI port */
TIMOD1; /* Initialize SPI port to begin
transmitting when DMA is enabled */
dm(SPICTL)=ustat3;
/* Set up loop to transmit data */
lcntr = LENGTH(tx_buf), do loopend until lce;
/* Retrieve data using DAG1 and send TX via SPI */
r0=dm(i4,m4);
loopend: dm(TXSPI)=r0;
_main.end: jump (pc,0);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?