主题中讨论的其他器件:AFE4404、 CC2640
工具/软件:TI-RTOS
尊敬的 TI 专家:
我目前正在从事一个项目、涉及一个与 AFE4404、ADXL345和 microSD 卡插槽集成的 CC26x2芯片。 该项目是之前使用 CC2640的电路板的延续。 最后一个编译存在一些线程问题、我希望确保在这个新编译中避免这些问题。 下面是有关设备工作原理的一些背景信息:
Sensor Controller Studio (SCS)从 AFE4404收集14个样本、然后通过设置为400KHz 的 I2C 从 ADXL345收集1个样本(x、y、z)。 此过程将持续到 SCS 中的内部缓冲器生成警报以唤醒 cc26x2并清空 SCS 缓冲器。 任务1持续检查 SCS 中断、当检测到一个中断时 、将接收输出的 SCS 缓冲器、 然后任务1将其解析为单个样本。 然后、任务1将这些样本发送到乒乓缓冲器。 此任务1的一般结构如下所示:
初始化 AFE、UART、I2C、SPI、ADXL345、 MicroSD (FATFS)、引脚、内存/缓冲器和 SCS。
Semaphore_Params semParams;
Semaphore_Params_init (&semParams);
Semaphore_construction (&semMainLoop、0、&semParams);
hSemMainLoop = semaphore_handle (&semMainLoop);
scifClearAlertIntSource ();
while (1)
{
检查同步
semaphore_pend 的时间(hSemMainLoop、BIOS_WAIT_Forever);
scifAlertIntSource ();
检查 SCS cfg 变量以查看 SCS 缓冲区的完整程度。
如果 cfg 变量指示已满或几乎已满、则清空缓冲区。
ScifAckAlertEvents ();
}
当其中一个乒乓缓冲器接近满状态时、会发布一个信标、并使用任务2通过 SPI 将乒乓缓冲器数据写入 microSD 卡。 任务2的总体结构如下所示:
Semaphore_Params semParams2; Semaphore_Params_init (&semParams2); Semaphore_construction (&semWriteSD、0、&semParams2); hSemWriteSD = Semaphore_handle (&semWriteSD); while (1) { Semaphore_pend (hSemWriteSD、BIOS_wait_forever); writeToSD (); }
此外,在调用 BIOS_Start()之前启动一个周期性时钟实例,并且大约每11秒触发一次。 触发后、变量设置为 true、在下一次将数据写入 SD 卡期间、会发生 f_sync 操作。
一些问题:
1.这种方法是否正确?
2.根据文档,信标默认为计数。 对于我所概述的任务、这是一个好的设置吗?
3.是否应该为所提到的信标设置优先级? 如果是、您如何确定哪一项最适合优先级?
谢谢!
斯蒂芬