请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC1310 大家好、
以下是客户的请求:
客户使用 SimpeLink 4.20.1.3 SDK,例如 SPI 从设备,如图所示: 
主器件每秒发送3个字节的数据、如图所示: 
发现从设备(CC1310)一次只能接收数据的第一个字节、最后两个字节丢失。
您能帮助检查这一点吗?
谢谢。此致、
Nick
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、Nick
如果您不对主代码或其余从代码做任何表述、那么要知道发生了什么情况就不容易了。
不过、我已经修改了 SDK 中的主从 SPI 示例、以便使用阻塞模式每2秒传输一个3字节长的数据包。 不使用握手。
代码按预期工作、从器件在每次迭代中接收所有3个字节。
代码如下:
主站:
#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_Handle masterSpi;
SPI_Params spiParams;
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 buffer
strncpy((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);
}
}
从机:
#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_Handle slaveSpi;
SPI_Params spiParams;
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 buffer
strncpy((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);
}
}
Siri.