主题中讨论的其他器件: CC2640R2F、 SysConfig、 CC2652PSIP
我正在开发一个可在 CC2652RSIP Launch Pad 上运行的应用程序。
首先,我将相应的 SimpleCentral 示例程序从“C:\ti\simplelink_cc13xx_cc26xx_sdk_6_10_00_29\examples\rtos\lp_CC2652RSIP\ble5stack”导入到 IAR 中。 虽然我没有测试其功能是否正常、但它在编译和运行时没有崩溃。
然后、我将 SimpleCentral 应用代码替换为我们的定制 SimpleCentral 应用代码、该代码在 CC2640R2F LaunchPad 上运行正常。 该代码也已编译并正确运行、包括通过 XDS110运行的 UART0。
然后、我开始实施新功能。 我为此代码创建了一个新任务、其优先级低于 SimpleCentral 应用程序。 此应用程序在处理状态机的其他类型的操作系统上运行。 它被称为欧斯莫斯。 您将在下面的调用栈中看到它。 它的循环每10ms 运行一次。 我还尝试了1000ms。 此任务不使用动态内存分配。
我开始添加外设。 首先、我确保了我可以操纵一些 LED。
然后、我添加了 UART2、它与条形码扫描仪成功通信。
我现在禁用了 UART2代码、并尝试在阻塞模式下在 SSI0上实现 SPI 主设备。 此代码按预期编译和传输两个字节。 CS、MOSI 和 SCLK 信号均正常工作。 但是,代码随后在 spiPollingTransfer()中崩溃。 似乎最可能的问题是堆栈烧断、但我将两个任务的堆栈大小增加到4096、没有任何效果。 我还将系统堆栈从1K 增加到4K、但没有效果。
SPICC26X2DMA.c spiPollingTransfer()行 rxbuf =(void *)(((UINT32_trxBuf)+ rxIncrement 中的代码失败。 我在崩溃之前和之后附加了屏幕截图。 失败的 LDR 汇编指令似乎是无害的。
如果能在这方面提供任何帮助,将不胜感激。


SPI_Params spiParams;
/*将 SPI 作为主器件打开(默认)*/
SPI_Params_init (&spiParams);
spiParams.transferMode = SPI_MODE_BLOCKING; //SPI_MODE_CALLACK;
spiParams.transferTimeout = 100000U;
spiParams.transferCallbackFxn =空;
spiParams.mode = SPI_MASTER;
spiParams.bitrate =200000;
spiParams.dataSize = 8;
spiParams.frameFormat = SPI_POL0_PHA0;
spiParams.custom =空;
// SPI_Params_init (&spiParams);
pMAX3241E->m_SPI_Handle = SPI_open (spiIndex、&spiParams);