问题背景: 硬件平台是FR5989 + CC2564B,期望实现SPP。 采用的开发方案是基于TI提供的5438的SPP Demo进行移植。
问题简述:在打开协议栈时,调用了函数BSC_Initialize,不过该函数返回失败(失败原因 -4, BTPS_ERROR_HCI_INITIALIZATION_ERROR),使得后续的初始化工作无法进行。
硬件问题排查:
1、 CC2564B的 32K慢时钟、26M时钟是OK的。
2、 CC2564B 的HCI_RTS输出了有效电平。(我理解这应该意味着CC2564B已经启动成功了)
3、 FR5989的波特率设置与手册中的说明吻合。(后续的软件排查中可以看到,UART接口已经能够发送和接收数据,所以这个接口也应该是OK的)
软件问题排查:
1、 通过增加函数轨迹跟踪发现,初始化过程中调用了HCITR_COMOpen,这其中涉及到的UART相关的初始化工作我们进行了仔细的排查,发现的问题已经基本解决。
2、 接口初始化完成之后,我们观察到程序调用了HCITR_COMWrite,给CC2564B发送了4个字节的数据(0x1,0x3,0xC,0x0)。之后接收到了一个字节的回复数据(0x0)。
3、 程序通过HCITR_COMProcess调用RxProcess对接收到的数据进行处理。具体完成数据处理的是函数指针_COMDataCallback。这个函数原型没有源码,看不到都做了一些什么事情。
4、 在处理完接收到的1个数据之后。程序调用了HCITR_COMClose,协议栈初始化终止。可以推测在_COMDataCallback中处理出现了异常,但是到底是返回的数据有问题还是其他原因,我们无法定位。
由于看不到协议栈执行的过程,也没有看到有明显的异常,所以分析和解决该问题遇到了一些困难。
发帖求助,谢谢指点~~~

