主题中讨论的其他器件:AMC7820
工具/软件:Code Composer Studio
您好!
在我的设计中、我必须在 SPI2中配置2个从机模块。
我使用的从机模块是 TI- AMC7820。
首先、我尝试配置单个 SPI 模块。
我使用的引脚是 PD0、PD1和 PD3。 从器件1的片选为 PK3。
我已经修改了将0x2345写入寄存器并读回它的代码。 但我读回的是 NULL
init、read 和 write 函数如下所示。
void SSI2Init (void)//SPI 2初始化 { // 必须启用 SSI2外设才能使用。 // SysCtlPeripheralEnable (SYSCTL_Periph_SSI2); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);//为 端口 D0、D1和 D3上的 SSI0函数配置引脚多路复用。 // GPIOPinConfigure (GPIO_PD0_SSI2XDAT1); GPIOPinConfigure (GPIO_PD1_SSI2XDAT0); GPIOPinConfigure (GPIO_PD3_SSI2CLK); // GPIOPinConfigure (GPIO_PA3_SSI0FSS);//这不是因为 CS 是 GPIO_PIN1引脚 输出引脚/ GPIO_PIN1引脚输出引脚1引脚、GPIO_PIN1引脚输出引脚1引脚 GPIOPinWrite (GPIO_PORTK_base、GPIO_PIN_3、GPIO_PIN_3);//将其设为高电平、因为它为低电平有效 // //配置 SSI 引脚的 GPIO 设置。 // GPIOPinTypeSSI (GPIO_PORTD_base、GPIO_PIN_3 | GPIO_PIN_1 | GPIO_PIN_0); // 为 SPI 主控模式配置和启用 SSI 端口。 使用 SSI2、 // SSIConfigSetExpClk (SSI2_base、g_ui32SysClock、SSI_FRF_TI、 SSI_MODE_MASTER、 1000000、8); // //启用 SSI2模块。 // SSIEnable (SSI2_base); // 从 SSI 端口读取任何残留数据。 // while (SSIDataGetNonBlocking (SSI2_base、&pui32DataRx[0]) }{ } void SPI2Read (void) { pui32DataTx[0]= 0x82;//从寄存 器 pui32DataTx[1]= 0x40读取; GPIOPinWrite (GPIO_PORTK_= 0x32 );//使用 i32+引脚索引</ u32+、uCS 函数;/u32+、u32+、u32+、u32+、u32eUS+、u32e+、u32e+、i32eUS+、i240/ u32u240/ u240/ u240/ u240/ u240u240u240u240u240u240u240u240u 此函数 //将等待发送 FIFO 中有空间后再返回。 //这使您可以确保发送的所有数据都将其放入 //发送 FIFO 中。 // SSIDataPut (SSI2_base、pui32DataTx[ui32Index]); } // //等待 SSI0完成传输发送 FIFO 中的所有数据。 // while (SSIBusy (SSI2_base) ){ } //接收2个字节的数据。 // for (ui32Index = 0;ui32Index < 2;ui32Index++) { // //使用“阻塞”GET 函数接收数据。 此函数 //将等待接收 FIFO 中有数据后再返回。 // SSIDataGet (SPIBase、&pui32DataRx[ui32Index]); //由于我们使用的是8位数据,因此屏蔽 MSB。 // pui32DataRx[ui32Index]&= 0x00FF; } GPIOPinWrite (GPIO_PORTK_base、GPIO_PIN_3、GPIO_PIN_3);//将 CS 重置为高 电平} void SPIwrite (void) { pui32DataTx[0]= 0x02; pu32DataTx[1]= 0x40=PIPTX=0x40_PIPTH ;pitTx23_GPIOPTH GPIO_PIN_3、0)// CS 低电平;AMC 期望低电平有效控制信号 (ui32Index = 0;ui32Index < 4;ui32Index++) { // //使用“阻塞”Put 函数发送数据。 此函数 //将等待发送 FIFO 中有空间后再返回。 //这使您可以确保发送的所有数据都将其放入 //发送 FIFO 中。 // SSIDataPut (SSI2_base、pui32DataTx[ui32Index]); } // //等待 SSI0完成传输发送 FIFO 中的所有数据。 // while (SSIBusy (SSI2_base) { } GPIOPinWrite (GPIO_PORTK_base、GPIO_PIN_3、GPIO_PIN_3);//将 CS 重置为高 电平}
请帮帮我。
提前感谢。