Thread 中讨论的其他器件:CC3220SF、 SysConfig
尊敬的支持:
我使用 CC3220SF LP 和 SDK v3.20、需要使用 SPI 模式3连接外设。 在使用以下代码成功地为模式3设置 SPI 模块时:
SPI_Params MasterSpiParams;SPI_init ();
SPI_PARAMS_INIT (&MasterSpiParams);
MasterSpiParams.bitrate = 4000000;
MasterSpiParams.mode = SPI_MASTER;
MasterSpiParams.frameFormat = SPI_POL1_PHA1;//未激活时为高电平
MasterSpiParams.dataSize = 8;
MasterSpiParams.transferMode = SPI_MODE_BLOCKING;
hMasterSPI = SPI_OPEN (Board_SPI1,&MasterSpiParams);
我能够成功地将其打开并跟踪 SPI 传输。 然而、在第一次 SPI 传输之前、SPI 时钟为低电平。 根据 SPI 模式3、它需要为高电平。 为了使其正常工作、我必须执行如下虚拟传输:
ImagePtr =(uint8_t *)&RxBuffer[组索引][0][0];
masterTransaction.rxBuf =(ptr)图像 Ptr;
masterTransaction.count = 2;
transferOK = SPI_transfer (hMasterSPI、masterTransaction);
if (transferOK == false)
{
display_printf (hDisplay、0、0、"主 SPI 传输失败");
}
我执行此事务、但 SPI CS 处于高电平、因此这是一个虚拟事务。 之后、SPI 时钟变为高电平、并在所有剩余的事务中保持高电平、这是 SPI 模式3应该工作的方式。 我已经介绍了 SDK 中的 SPI 驱动程序代码、找不到方法来设置引脚以使其正常工作、从而使 SPI 时钟保持高电平。 我可以使 SPI 时钟在 SPI_OPEN 之前保持高电平(...) 调用、但一旦我从 SPI_open (...)返回、 调用时、SPI 时钟会变为低电平并保持低电平、直到我执行第一个 SPI 事务、然后它正常工作。 您能告诉我我我需要做什么、这样我就不必执行这个虚拟 SPI 事务、以便在 SPI_open (...)之后、SPI 时钟在 SPI 模式3中变为高电平吗? 呼叫? 请提供建议。
BTW -这是特定于 CC3220的、当在这些器件上运行相同的完全 SPI 代码时、CC1352P1或 MSP432E4不会出现此问题。
谢谢、
Tim