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

CC2640R2F: 协处理器

Part Number:CC2640R2F

TI工程师您好,我有一个需求:协处理器每1ms通过spi获取一个数据,然后发送给主处理器。

我遇到了一下的情况,请您解答一下

一.1ms读取数据问题

1.如果我按照下面的代码初始化,使用scs调试,可以看到每隔1ms发起一次spi请求;

我的AUXIO_I_DRDY_IRQ始终为高,所以死循环一直运行,这个时候,fwGenAlertInterrupt唤醒不调用,我的主处理器scTaskAlertCallback不执行,我可以理解

2.但是,我将系统唤醒移动到上面,成为了下面的代码,每次执行scTaskAlertCallback时翻转电平,我用 逻辑分析仪的1管脚测试,在我理解下他不应该是不断翻转的吗,但是按照逻辑分析仪的他只执行了一次,请问这是为什么?

3.当我把死循环去掉,修改成下面的代码,您可以从逻辑分析中看到,他并不是每隔1ms,就采一次数据了,这是为什么?

4.在测试中我还发现了问题,上面逻辑分析仪采到的数据都是在scs开发工具调试模式下,当我代码移植后,协处理器和M3一起工作的时候,对比3的图片,您可以看到采不到spi的信号,但是采到了scTaskAlertCallback时翻转电平的信号,3的图片则是,采到spi的信号,采不到scTaskAlertCallback时翻转电平的信号,scs开发工具调试时,和运行时,可以捕获的信号正好相反,我无法确定代码移植后,系统正常运行时spi信号到底是怎样的,请问这是怎么回事?

二.scTaskAlertCallback中的数据不改变

 您看上面一.3和一.4的逻辑分析器的图片,我应该可以确定scTaskAlertCallback在不断执行吧,我取出spi,数据然后发给主机,奇怪的是主机收到的数据完全一样!!!

三.从机给主机发送的数据不连续

您可能看到二里面绿色数据不一样,那是我测试时将第一位数据人为的改了,您看代码D2后面应该是D3,在主机这却变成了D4,这不是个例,甚至出现了E8后面是44的情况,请问这是为什么?

一共三个大问题,希望得到您的帮助!!

Alex Zhang:

您好,您的问题我已经跟进,这需要一些时间

,

Cherry Zhou:

您好,

首先要明确,协处理器是传感器控制器。

您的问题是无法使用传感器控制器 SPI 接口读取 EEG。 建议您不要使用传感器控制器,而是使用 TI RTOS SPI 驱动程序。

在您使用 TI RTOS SPI 驱动程序使 SPI 通信正常工作后,可以尝试传感器控制器方法。 然后了解将传感器控制器用于此应用的优势。 如果没有传感器,请不要使用传感器控制器。

请从默认 SCS 示例开始着手,并在尝试实施您的自定义应用之前完全理解该操作。 通过以增量步骤开发代码,可以避免同时出现多个问题,然后我们的工程师可以帮助您解决出现的特定问题。  

,

jiang chuanli:

您好,我使用 TI RTOS SPI 驱动程序已经使 SPI 通信正常工作,能得到模拟前端采集到的EEG数据了,因为想进行低功耗开发,协处理器采集数据,当采集到一定数据再唤醒M3,所以才使用了协处理器,而且 SCS 的几个示例我也已经自己跑通了,上面的问题就是我在开发中遇到的问题。但 SCS 的开发网上实例确实比较少,所以请您帮我就上面的几个问题,指出应该排查的方面。

,

Cherry Zhou:

了解了,已跟进给工程师,有答复尽快给到您。

,

Cherry Zhou:

您好,

根据SCS Help Documentation,您应使用 Task Debugging 和 Run-Time Logging 来确保 SCS 内核按预期运行。 然后,主 CC2640R2F 内核需要正确管理/处理 SCIF OSAL 并 debug 。 建议您根据工作示例代码采取增量步骤,来确定问题的引入位置。 

,

jiang chuanli:

您好,请问针对我的问题,对于调试有什么建议

,

jiang chuanli:

调试时,要着重注意哪一部分

,

Cherry Zhou:

您好,

请问您是否已针对以下建议进行查看或调试?是否有新的进展或发现?

Cherry Zhou said:根据SCS Help Documentation,您应使用 Task Debugging 和 Run-Time Logging 来确保 SCS 内核按预期运行。 然后,主 CC2640R2F 内核需要正确管理/处理 SCIF OSAL 并 debug 。 建议您根据工作示例代码采取增量步骤,来确定问题的引入位置。 

,

jiang chuanli:

您好,我用scs自带调试器调试时发现,我用下面的代码(state.DRDYstate一直为1)死循环,是每1ms传输一次数据

但是去掉死循环,就不是了,两次之间间隔很大

我调试里面是只运行执行代码的

请问为什么会出现这个延迟

,

jiang chuanli:

 您好,按照协处理器Time0的使用,这应该是8ms唤醒一次,但实际是us级别的请问是为什么

,

Cherry Zhou:

您好,

对于由 RTC 触发的每个任务迭代,或由系统 CPU 应用程序手动触发的每个任务迭代,执行代码运行一次。 系统 CPU 应用程序使用 scifStartRtcTicksNow ()/ scifStartRtcTicks()函数配置 RTC 节拍周期。 请务必通读并理解  SCS Help Documentation.中的  Timer 0 and RTC-Based Execution Scheduling 模块。 

,

jiang chuanli:

感谢!!这几个问题解决了

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F: 协处理器
分享到: 更多 (0)