This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C1231的SPI问题,谁能帮帮我!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1



下满是SPI的初始化。发送数据的时候就是没有CLK的波形,到底为什么,测试过只有SSI2有,SSI0和SSI1也没有

用这个函数发的SSIDataPutNonBlocking(SSI3_BASE, ulDataTx[0]);

void InitSPI3(void)
{

//初始化SSI3

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); //GPIO port B needs to be enabled so these pins can be used.
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3); // The SSI3 peripheral must be enabled for use.


GPIOPinConfigure(GPIO_PD0_SSI3CLK);
GPIOPinConfigure(GPIO_PD1_SSI3FSS);
GPIOPinConfigure(GPIO_PD2_SSI3RX);
GPIOPinConfigure(GPIO_PD3_SSI3TX);

GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

SSIConfigSetExpClk(SSI3_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 100000, 8); //接收


SSIEnable(SSI3_BASE); //SPI使能

}

  • 应该不会吧,下面的程序用SSI0,在我的板子上跑没问题,你可以先试试:


    #include "inc/hw_ints.h"
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    //#include "driverlib/debug.h"
    #include "driverlib/fpu.h"
    #include "driverlib/gpio.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/pin_map.h"
    #include "driverlib/rom.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/ssi.h"
    #include "utils/uartstdio.h"

    void SPIInit(void)
    {
    //³õʼ»¯SSI3
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    // SSIConfig(SSI3_BASE, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, BitRate, DataWidth);

    GPIOPinConfigure(GPIO_PA2_SSI0CLK);
    GPIOPinConfigure(GPIO_PA3_SSI0FSS);
    GPIOPinConfigure(GPIO_PA4_SSI0RX);
    GPIOPinConfigure(GPIO_PA5_SSI0TX);

    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5);

    // GPIODirModeSet(GPIO_PORTD_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_DIR_MODE_OUT);
    // GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);

    SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 100000, 8); //½ÓÊÕ

    SSIEnable(SSI0_BASE); //SPIʹÄÜ
    }

    int
    main(void)
    {
    SPIInit();
    while(1)
    {
    while(SSIBusy(SSI0_BASE));
    SSIDataPutNonBlocking(SSI0_BASE, 0x55);

    }

  • 不知道你用的是那颗料,但是这种问题需要检查是否用到了需要解锁的引脚。请参考对应的datasheet/GPIO/Commit Control一章。