LM3S6911的 SSI 配置成从机模式(SLAVE),如何采集主机高速的SPI(4M)的发送数据?

2019-03-24 16:07发布

LM3S6911的 SSI 配置成从机模式(SLAVE),如何采集主机高速的SPI(4M)的发送数据? 程序怎么编写? 我用LM3S6965 做发现接收有中断,但是数据全部为0,不知道为什么? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
jalon_jy
1楼-- · 2019-03-25 01:06

void SPI_Init(void){
  long i;
  SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI );
  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA|SYSCTL_PERIPH_GPIOF );
  GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_2);
  GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_3);
  GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_4);
  GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_5);
 
 // SSIDisable(SSI_BASE );
  i=SysCtlClockGet();
  SSIConfigSetExpClk(SSI0_BASE, i, SSI_FRF_MOTO_MODE_2,
                       SSI_MODE_SLAVE, i/10, 16);
        SSIIntEnable(SSI_BASE ,SSI_RXTO|SSI_RXFF);
  SSIEnable(SSI_BASE);
//  SSI 管理方式
     while(SSIDataGetNonBlocking(SSI0_BASE, SSIBUF)){
  }
    //
    // Enable the SSI interrupt.
    //
     IntEnable(INT_SSI0);
//  PTF0- 输入SS 数据包开始标志
  GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_0);
  GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_0,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
  GPIOPinIntEnable(GPIO_PORTF_BASE,GPIO_PIN_0);
  IntEnable(INT_GPIOF);
}

void SPI_ISR(void){
  unsigned long ulStatus;
  ulStatus = SSIIntStatus(SSI_BASE,true);
  SSIIntClear(SSI_BASE,ulStatus);
  SPI++;
  if((ulStatus & SSI_RXFF)|(ulStatus & SSI_RXTO)){
   while(1){
   if (SSIDataGetNonBlocking(SSI_BASE,&SSIBUF[SSISP++])) ;   
   else{
    if (SSISP>=14) { SSISP=0;  SPI=0;}
    break;
    }
  }
  }
}                                  

guguo2010
2楼-- · 2019-03-25 06:06
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章