LM4F230H5QR SSI1的接收问题



我对SSI1进行了配置,用来驱动AT45DB161D,经示波器测试,输出信号正确,但ssi接收数据总是0x00,但AT45DB161D输出的数据不是0x00,请问是什么问题?

  • 1.直接测下LM4F230的SSI与AT45连接的相关管脚的信号 注意幅值。。。

    2.检查一下SSI的相关配置是否正确

  • 恩,我也觉得是配置的问题,以前做过LM3F的程序,移植过来就不对了,不知道问什么。

    ssi1 相应的配置如下:

    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);                      

      SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);                        

      //置SPI为模式0,主机模式,波特率,数据宽度为8位  

      //SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(),SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 40000, 8);

      SSIConfig(SSI1_BASE, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 40000, 8);

      SSIEnable(SSI1_BASE);  

    GPIOPinConfigure(GPIO_PF0_SSI1RX);

      GPIOPinConfigure(GPIO_PF1_SSI1TX);

      GPIOPinConfigure(GPIO_PF2_SSI1CLK);

      GPIOPinTypeSSI(GPIO_PORTF_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2));

      GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_3, GPIO_DIR_MODE_OUT);      //配置片选管脚为输出  

      GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_3, GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);  //配置片选管脚为推挽,4MA输出

    经测试还是不正常,望解答,谢谢。

  • Haitao Yuan :

    见上所附代码 发现几处疑点:

    1. AT45的片选应该是连接至SSI的Fss管脚吧?但代码中并未对Fss管脚进行配置

    2.推荐连接片选的管脚配置为----上拉2MA输出

    因此,推荐配置流程如下:

    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);

     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

     SSIConfigSetExpClk( SSI1_BASE,
               SysCtlClockGet(),
               SSI_FRF_MOTO_MODE_0, //模式0
               SSI_MODE_MASTER,           //主机模式
               BIT_RATE,                           //波特率
               DATA_WIDTH                     //数据位
               );

     SSIEnable(SSI1_BASE);

     GPIOPinTypeSSI( GPIO_PORTF_BASE,          //  设置GPIOF0,1,2,3引脚为SSI配置功能
             GPIO_PIN_3 |
             GPIO_PIN_2 |
             GPIO_PIN_1 |
                      GPIO_PIN_0);

     GPIOPinConfigure(GPIO_PF0_SSI1CLK);   
     GPIOPinConfigure(GPIO_PF1_SSI1FSS);
      GPIOPinConfigure(GPIO_PF2_SSI1RX);
     GPIOPinConfigure(GPIO_PF3_SSI1TX);

     GPIODirModeSet( GPIO_PORTF_BASE,         //  配置片选管脚为输出
             FLASH_CE,                                              //AT25片选 宏定义为0x00000002即管脚GPIO_PIN_2 Fss
             GPIO_DIR_MODE_OUT);

      GPIOPadConfigSet( GPIO_PORTF_BASE,       //  配置片选管脚为上拉,2MA输出
              FLASH_CE,
              GPIO_STRENGTH_2MA,
              GPIO_PIN_TYPE_STD);

  • SSI1 用PF配置时RX为PF0,PF0是特殊管脚与NMI复用,所以要在GPIOLOCK和GPIOCR中进行相应配置