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

CC3120 移植驱动到MCU ,执行sl_start()后返回F82B ,也就是-2005,含义为SL_API_ABORTED ,问一下这个问题说明我程序中那个地方移植的有问题。

CC3120 移植驱动到MCU ,执行sl_start()后返回F82B ,也就是-2005,含义为SL_API_ABORTED ,问一下这个问题说明我程序中那个地方移植的有问题。TI的朋友帮忙看看,给点建议,我好排查代码,我单步调试,发现SPI可以正常的读写数据,底层SPI和GPIO驱动应该是正常的。

user6105077:

我有一个问题不明白,我创建一个任务运行sl_task任务,该任务会阻塞在等待信号量上,该任务的优先级较高,然后我会调动sl_start函数,该函数内部也会等待信号量,但是sl_task的优先级较高,所以来了信号量后会被sl_task任务获取,导致sl_start函数得不到信号量最终被阻塞,我看你们的例程中就是这么写的,这正常吗,目前我的代码运行到sl_start函数就会被阻塞到获取信号量上。

Viki Shi:

回复 user6105077:

sl_task等待的同步对象不应该与sl_start API等待的同步对象相同。我怀疑你的cc_pal.c或移植层的user.h有问题。目前官方没有CC3120移植到STM32的例程,有个CC3100的供参考:www.ti.com/…/CC3100SDK这个SDK里包含主机驱动程序移植到STM32的端口,以及一个示例demo。虽然CC3100和CC3120之间的主机驱动程序略有不同,但是就所需的同步对象而言,大多数移植步骤是相同的。建议查看一下CC3100 STM32端口,并将其与CC3120的端口进行比较。

后面还有问题可以在本帖讨论,请勿重复发帖,谢谢

user6105077:

回复 Viki Shi:

我重新 移植了一下驱动,目前sl_start()函数可以执行过去,但是出现了一个新问题,sl_start()的返回值为-2005,我单步调试了一下程序,发现当运行进sl_start()函数时,会在_SLDrvSyncObjWaitTimeout()函数中返回-2005.下边是该函数的代码:

_SLReturnVal_t_SLDrvSyncObjWaitTimeout()

{

_SLReturnVal_t ret = SL_SyncObjWait();

if(ret)

{
_SLDrvHandleFataError();
return(SL_API_ABORTED);
}

else if(SL_IS_RESTART_REQUIRED)

{
函数执行到这里返回的-2005
return (SL_API_ABORTED);

}

return(SL_RET_CODE_OK);

}

麻烦帮忙分析一下,什么原因会导致这种问题的发生,谢谢。

user6105077:

回复 user6105077:

STM 32主频120M HZ , 使用的SPI1 位于APB2总线,总线主频60MHZ , SPI 1配置的64分频,SPI 的时钟只有不到1M HZ 这个频率小于20M HZ
不是频率的问题,帮忙分析一下还有什么情况会导致出现 SL_DEVICE_EVENT_FATAL_SYNC_LOSS 错误。

user6105077:

好的麻烦了,我的STM32主频120M HZ , 使用的SPI1 位于APB2总线,该总线时钟为60M HZ , 我配置的SPI1为64分频,所以SPI 时钟只有不到1M HZ ,不会是SPI频率太高的问题,请帮忙再分析一下,导致SL_DEVICE_EVENT_FATAL_SYNC_LOSS的原因,不胜感激。

赞(0)
未经允许不得转载:TI中文支持网 » CC3120 移植驱动到MCU ,执行sl_start()后返回F82B ,也就是-2005,含义为SL_API_ABORTED ,问一下这个问题说明我程序中那个地方移植的有问题。
分享到: 更多 (0)