Part Number:CC1310
HI,
我使用的simpelink 4.20.1.3 sdk, spislave的例程,程序如图, master每秒发送3个字节的数据,如图:,发现slave(CC1310)每次SPI_transfer只能接收到第一个字节的数据,后两个字节丢失了,这是为什么?
谢谢!
Nick Sun:
您好,
关于这个问题我们需要一点时间查看一下,有结论及时联系您。
,
ruimao cong:
你好,有相关结论吗
,
Nick Sun:
您好,
我们也不清楚发生了什么当未看到任何关于主代码或从代码其余部分的内容时。
但是,我们已经修改了 SDK 中的主和从 spi 示例,以使用阻塞模式每 2 秒传输一次 3 字节长的数据包。未使用握手。
代码按预期工作,每次迭代时,从机都会收到所有 3 个字节。
代码如下:
Master:
#define SPI_MSG_LENGTH(3) #define MASTER_MSG("ABC")unsigned char masterRxBuffer[SPI_MSG_LENGTH]; unsigned char masterTxBuffer[SPI_MSG_LENGTH];void *masterThread(void *arg0) {SPI_HandlemasterSpi;SPI_ParamsspiParams;SPI_Transaction transaction;// Open SPI as master (default)SPI_Params_init(&spiParams);spiParams.frameFormat = SPI_POL0_PHA0;spiParams.bitRate = 1000000;spiParams.transferMode = SPI_MODE_BLOCKING;masterSpi = SPI_open(Board_SPI_MASTER, &spiParams);if (masterSpi == NULL){while (1);}// Copy message to transmit bufferstrncpy((char *) masterTxBuffer, MASTER_MSG, SPI_MSG_LENGTH);transaction.count = SPI_MSG_LENGTH;transaction.txBuf = (void *) masterTxBuffer;transaction.rxBuf = (void *) masterRxBuffer;while (1){SPI_transfer(masterSpi, &transaction);sleep(2);} }Slave:
#define SPI_MSG_LENGTH(3) #define SLAVE_MSG("DEF")unsigned char slaveRxBuffer[SPI_MSG_LENGTH]; unsigned char slaveTxBuffer[SPI_MSG_LENGTH];void *slaveThread(void *arg0) {SPI_HandleslaveSpi;SPI_ParamsspiParams;SPI_Transaction transaction;SPI_Params_init(&spiParams);spiParams.frameFormat = SPI_POL0_PHA0;spiParams.mode = SPI_SLAVE;spiParams.bitRate = 1000000;spiParams.transferMode = SPI_MODE_BLOCKING;slaveSpi = SPI_open(Board_SPI_SLAVE, &spiParams);if (slaveSpi == NULL){while (1);}// Copy message to transmit bufferstrncpy((char *) slaveTxBuffer, SLAVE_MSG, SPI_MSG_LENGTH);transaction.count = SPI_MSG_LENGTH;transaction.txBuf = (void *) slaveTxBuffer;transaction.rxBuf = (void *) slaveRxBuffer;while(1){SPI_transfer(slaveSpi, &transaction);} }