#include "Includes.h" #if 1 #define RCV_LEN 1024 #define SND_LEN 1024 #define CH_TX 3 #define CH_RX 11 #define CH11_BLK (1 << 11) //通道 11 块传输结束 #define CH3_BLK_EN (1 << 3) //通道3 块传输结束使能 static uint8_t __attribute__((aligned(4))) spi1_rcv_data[RCV_LEN]; volatile uint16_t spi1_rcv_len = 0; static uint8_t __attribute__((aligned(4))) spi1_send_data[SND_LEN]; volatile uint16_t spi1_send_len = 0; /* --------------------------------------------------------------------------------------------------- - 函数名称: dma_ssi1_send - 函数功能: spi slave 发送接口函数 - 输入参数: - 创建日期: ----------------------------------------------------------------------------------------------------*/ void dma_ssi1_send(uint32_t snd_len) { __write_hw_reg32(DMAS_CHx_CTL0((CH_TX)) ,snd_len); //set trans byte len __write_hw_reg32(DMAS_CLR ,CH_TX); //disable DMA TX channel __write_hw_reg32(DMAS_EN ,CH_TX); //enable DMA TX channel } /* --------------------------------------------------------------------------------------------------- - 函数名称: Init_spi_selve - 函数功能: spi slave 初始化函数接口 - 输入参数: - 创建日期: ----------------------------------------------------------------------------------------------------*/ void Init_spi_selve(uint32_t ch) { uint32_t val; __write_hw_reg32(CPR_SPIx_MCLK_CTL(ch), 0x110010);//1分频 //- spi(x)_mclk = 32Mhz(When TXCO=32Mhz). __write_hw_reg32(CPR_CTLAPBCLKEN_GRCTL , (0x1000100<0) { spi1_rcv_data[spi1_rcv_len++]=*SSIx_DATA(1); if(spi1_rcv_len==1024)spi1_rcv_len=0; //*SSIx_DATA(1)=rev_num++; __read_hw_reg32(SSI1_RXFL,spi1_data); } __read_hw_reg32(SSI1_IC,spi1_data); } extern void test_spi1_selve(void) { gpio_mux_ctl(0,0);gpio_fun_inter(0,0);gpio_fun_sel(0,SSI1_SSN); gpio_mux_ctl(1,0);gpio_fun_inter(1,0);gpio_fun_sel(1,SSI1_CLK); gpio_mux_ctl(2,0);gpio_fun_inter(2,0);gpio_fun_sel(2,SSI1_TX); gpio_mux_ctl(3,0);gpio_fun_inter(3,0);gpio_fun_sel(3,SSI1_RX); Init_spi_selve(1); while(1) { switch(spi1_rcv_data[0]) { case 'A': spi1_rcv_data[0]=0;spi1_rcv_len=0; for(int i=0;i