TI中文支持网
TI专业的中文技术问题搜集分享网站

请问CC1010使用回调函数模式SPI时这样使用timeout是否正确

我CC1310的SPI使用的是SDK中的回调函数模式,其中使用了sem_timedwait(&slaveSem,&timeout),要实现在回调函数模式下spi传输的超时(3ms)退出,核心代码如下所示,这样使用是否正确,求解答!!!

struct timespec timeout;

clock_gettime(clock_realtime,&timeout);

timeout.tv_nsec += 3000000;

transferOK = SPI_transfer(slaveSpi,&transaction);

if(transferOK)

{

sem_timedwait(&slaveSem,&timeout);

}

Viki Shi:

if(transferOK) { sem_timedwait(&slaveSem,&timeout); } 我觉得不需要这个if判断,根据transferOK = SPI_transfer(slaveSpi,&transaction);这句,transferOK不成立的原因有很多,如果只是判断超时,建议把sem_timedwait(&slaveSem,&timeout);移出来。 推荐一个网友分享的类似用法:www.cnblogs.com/…/4085336.html

liu shr:

回复 Viki Shi:

这个判断是原来SDK例程中的,我可以去掉试一下,我试试这样做是否有效

liu shr:

回复 Viki Shi:

用这种方式试了下不太行啊,我这边数据老是接收有错。我主要就想有个超时退出的机制

Viki Shi:

回复 liu shr:

原例程测试下来什么问题?两种情况一样吗?

liu shr:

回复 Viki Shi:

原例程使用的时sem_wait(&slaveSem);测试时正确的,但是因为我的spi是slave模式,我想要实现spi传输中断时候的退出,所以使用sem_timedwait(&slaveSem,&timeout);,但是使用sem_timedwait(&slaveSem,&timeout);时候效果不太理想,传输有误码,不知道是不是我使用的有问题。

Viki Shi:

回复 liu shr:

排查下是不是时间参数使用有误

赞(0)
未经允许不得转载:TI中文支持网 » 请问CC1010使用回调函数模式SPI时这样使用timeout是否正确
分享到: 更多 (0)