This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

有关CC2640中Sensor Contrller使用的问题

Other Parts Discussed in Thread: CC2640

问题背景:由于项目需要,CC2640需要先后(几乎同时)通过SPI1与传感器1进行通信,I2C与传感器2进行通信。数据的采集过程是,当传感器1采集到数据后会将处理器某管脚拉低,用于通知处理器接收数据,这时处理器先后读取传感器1、传感器2采到的数据。并对所采集的数据通过SPI0写入存储卡中。一开始所有功能都在M3上实现的,为了降低功耗,我想将对传感器1、2的采集功能挪到sensor controller上去。当sensor controller采集到的数据达到一定数量时,以中断方式通知M3进行写入存储卡并将数据Notify出去。参考了TI Academy中有关sensor controller的教程和 sensor controller例程后,进行试验出现了一些问题并有一系列疑惑:

1、我想问在写sensor controller程序时,是否可以实现GPIO的循环触发用于告知sensor controller进行数据的接收?是否可以在代码中只使用evhSetupGpioTrigger()函数而不使用fwScheduleTask()函数来实现(实际中效果比同时使用两函数更差)?

2、由于传感器1每次拉低电平时间间隔大约2ms,也就是说基本每2毫秒就会触发sensor controller去接收传感器1、2的数据,并进行简单的处理(主要是与或运算),那么sensor controller是否满足这样速度的数据接收处理?

3、SPI与I2C的读写可以写在sensor controller的同一任务中吗?或者说同时使用吗?sensor controller使用SPI1时可能M3同时也在使用SPI0这两者有冲突吗?

4、因为sensor controller需要收满10个数据后用fwGenAlertInterrupt()或fwGenQuickAlertInterrupt()向M3产生中断(具体使用哪个函数,都试过没有什么区别),那么我讲数据存到output.tfreg[]中去了,请问每次存数前怎样确定output.tfreg[]的索引 ,使得可以依次存储。因为我感觉sensor controller编程语言中没有全局变量的概念,每次调度任务或执行触发事件时就不知道该把数据存入output.tfreg中的哪。

5、使用了一个比较笨的方法解决了问题4后,在一个Task中同时使用I2C和SPI去读取数据。在Task Testing中经常会出现采集到的数据为两个数循环(应该是在一定范围的随机数),这是为什么?

6、当Task Tesing正常时,生成代码后在M3程序中进行相应调用,在实际测验中本应20ms左右M3被从idle状态唤醒去读取sensor controller的10个数据,结果有时候会60、70ms甚至上百毫秒去读取一次,十分不稳定,这可能是由什么造成的?