主题中讨论的其他器件:CC3220S、 CC3220SF
我正在尝试创建一个环回、使用 SPII 在 MOSI 和 MISO 引脚之间连接一条物理线。 我还尝试使用示波器读取 MOSI 和 CLK 信号、但它们仅显示一条平坦的线。 UART 环回示例代码工作正常。 CC3220S 上实际上没有任何 SPI 示例代码、但看起来不像这样应该太困难。 我的代码是:
#define MSGSIZE 20.
SPI_Handle SPI;
SPI_Params spiParams;
SPI_Transaction spiTransaction;
uint8_t transmitBuffer[MSGSIZE];
uint8_t receiveBuffer[MSGSIZE];
bool transferOK;
SPI_Params_init (&spiParams); //初始化 SPI 参数
//默认参数
spiParams.transferMode = SPI_MODE_BLOCKING;
spiParams.transferTimeout = SPI_WAIT_FOREVER;
spiParams.transferCallbackFxn =空;
spiParams.mode = SPI_MASTER;
spiParams.bitrate = 1000000;
spiParams.dataSize = 8; // 8位数据大小
spiParams.frameFormat = SPI_POL0_PHA0;
spiParams.custom=空;
SPI = SPI_OPEN (Board_SPI0、&spiParams);
if (SPI == NULL){
while (1); // spi_open()失败
}
对于(i = 0;i < MSGSIZE;i++){
transmitBuffer[i]= i;
receiveBuffer[i]= 0;
}
//填入 transmitBuffer
spiTransaction.count = MSGSIZE;
spiTransaction.txBuf = transmitBuffer;
receivTransaction.rxBuf = spieBuffer;
while (1){
transferOK = SPI_transfer (SPI、&spiTransaction);
如果(!transferOK){
GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_OFF);
// SPI 中出现错误或传输已在进行中。
}
}
如果存在传输问题、我会关闭 LED、但 LED 永远不会关闭。 我将 P05作为 CLK、将 P06作为 MISO、将 P07作为 MOSI、将 P08作为 CS。 我在示波器上测量 CLK 和 MOSI、MOSI 和 MISO 也通过电线物理连接。
如果您想了解 SPI 为何不能以正确的方向产生任何比特流或微移、我们将不胜感激。 谢谢。