Thread 中讨论的其他器件:EK-TM4C1294XL
工具/软件:TI-RTOS
大家好、我曾尝试在同一控制器上将 hte SSI 接口 SSI0配置为主接口、将 SSI2配置为从接口、并通过将 SSI 引脚连接到 SSI2的相应补码引脚来编写通用固件以获取 SPI。我能够读取从中的主接口(SSI0)写入的数据 从站(SSI2)尝试从 SALve (SSI2)将相同的数据写回主站(SSI0)。但这次尝试读回数据时、调试器卡在 SSI 忙线的检查线上。 请帮助解决问题。 。
/*SSI 初始化函数*?
void SSI_init (void)
{
ui32SysClkFreq = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
GPIOPinConfigure (GPIO_PA2_SSI0CLK);
GPIOPinConfigure (GPIO_PA3_SSI0FSS);
GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);
GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);
GPIOPinTypeSSI (GPIO_Porta_base、GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2);
SSIConfigSetExpClk (SSI0_BASE、ui32SysClkFreq、SSI_FRF_MOTO_MODE_0、SSI_MODE_MASTER、10000、 16);
SSIEnable (SSI0_BASE);
SysCtlPeripheralEnable (SYSCTL_Periph_SSI2);//启用 SSI2
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);//启用端口 B GPIO 以与 SSI2数据和帧信号配合使用
GPIOPinConfigure (GPIO_PD3_SSI2CLK);
GPIOPinConfigure (GPIO_PD2_SSI2FSS);
GPIOPinConfigure (GPIO_PD1_SSI2XDAT0);
GPIOPinConfigure (GPIO_PD0_SSI2XDAT1);
GPIOPinTypeSSI (GPIO_PORTD_base、GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
SSIConfigSetExpClk (SSI2_base、ui32SysClkFreq、SSI_FRF_MOTO_MOTO_0、SSI_MODE_SLAVE、10000、 16);
SSIEnable (SSI2_base);
}
/*函数从 SSI2中的 ssi0读取数据并将其写回 ssi0并将两个*
/ void test_spi (void)
{进行比较
uint32_t ui32Index;
uint32_t ui32Data;
SPI_DATA_index=0;
memset (spi_data_recaused_back、'\0'、15);
for (ui32Index = 0;ui32Index < NUM_SSI_DATA;ui32Index++)
{
ui32Data = SPI_TEST_COMMAN[ui32Index];
SSIDataPut (SSI0_BASE、ui32Data);
while (SSIBusy (SSI0_BASE))
{
}
SSIDataGet (SSI2_base、&SPI_recated_char);
SSIDataPut (SSI2_base、SPI_recathed_char);
while (SSIBusy (SSI2_base))/* DEBUGER 停留在这里*/
{
}
SSIDataGet (SSI0_BASE、SPI_recathed_char);//和 SPI_DATA_recated_back [SPI_DATA_index++]
}
if (strcmp (spi_test_command、spi_data_recated_back)==0)
{
PASS_OR_FAIL = 1;
UARTprintf ("\n\n\rPASSED\n");
}
其他
{
PASS_OR_FAIL = 0;
UARTprintf ("\n\rFAILED\n");
}
返回;
}