Thread 中讨论的其他器件:SysConfig
工具/软件:Code Composer Studio
您好!
我有以下问题。 一个特定的程序总是以如下所示的错误消息停止。 我已删除所有断点。 我意识到、当闪存另一个程序时、问题不会出现。
该程序构建于 Project Zero 示例之上、该示例使用时间数字转换器集成了传感器控制器、并通过蓝牙发送数据。
这里的错误可能是什么? 是否有任何解决方案?
非常感谢。
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.
工具/软件:Code Composer Studio
您好!
我有以下问题。 一个特定的程序总是以如下所示的错误消息停止。 我已删除所有断点。 我意识到、当闪存另一个程序时、问题不会出现。
该程序构建于 Project Zero 示例之上、该示例使用时间数字转换器集成了传感器控制器、并通过蓝牙发送数据。
这里的错误可能是什么? 是否有任何解决方案?
非常感谢。
您好!
此错误通常由调试探针和目标板上器件之间的断开连接引起、下面的调试 JTAG 页面中显示了一些故障排除技巧:
https://software-dl.ti.com/ccs/esd/documents/ccs_debugging_jtag_connectivity_issues.html
如果您同时进行 UART 通信、则存在与此方案相关的未解决错误(EXT_EP-9768)-在下面的签名中检查其在链接 SIR 中的状态。
希望这对您有所帮助、
拉斐尔
您好!
有趣;链接在我的签名中为我显示。
无论以何种速率、直接链接都是:
https://sir.ext.ti.com/jira/browse/EXT_EP-9768
此致、
拉斐尔
您好!
我发现问题是将传感器控制器代码集成到 Code Composer Studio 中。
我使用 HWI 读取传感器控制器内存、这使我遇到了上述问题。
现在、我更改为用于集成传感器控制器的 SWI。 现在工作正常。 但又出现了另一个问题。
我也使用 SWI 作为周期性时钟、它通过蓝牙发送数据。 我想、如果不发送数据、一切都正常、但如果我切换时钟、程序会像以前一样再次显示错误。 我认为必须有一个优先问题。 如何更改其中一个中断的优先级? 在特定时间点或特定频率下发送数据的另一种方法是什么?
我认为、较高的优先级是将 AUX RAM 中的所有数据复制到主 RAM 中、发送数据只需在下一次复制操作之前的一段时间内发生。
我希望有任何解决办法。
谢谢
您好!
我的项目基于 simplelink_cc13x2_26x2_SDK_3_40_00_02的 Project Zero 示例。
要在 CCS 中集成 SC、我遵循中的指令:
http://software-dl.ti.com/lprf/simplelink_academy/modules/sc_01_project_from_scratch/sc_01_project_from_scratch.html#bonus-tasks-1-ndash-integrate-with-ble
该程序非常简单、可以广播、从传感器控制器获取数据并发送数据。
我在晚上做了一些更长期的测试。 我注意到、当我发送数据时、如果系统集成了 SC、系统不会中断。
即使我没有发送任何数据、集成的传感器控制器也会显示错误。 它需要几分钟到几个小时的时间、直到它停止运行。
我的传感器控制器以1kHz 的频率进行采样、并使用2个缓冲器、当数据传输到主 CPU 时会交换这些缓冲器。 每个缓冲区的大小为800个值。 因此、它大约每0.8s 中断一次 CCS 程序。
主程序每200ms 发送一次通告。
我没有使用 whatchdog。 我想不到我改变的任何其他东西。 我刚刚写下了我的代价剖面。
这是我的与传感器控制器集成相关的代码
静态空 ProjectZero_init (void) { //初始化 SCIF 操作系统抽象层 scifOsalInit(); scifOsalRegisterCtrlReadyCallback (scCtrlReadyCallback); scifOsalRegisterTaskAlertCallback (scTaskAlertCallback); //初始化 SCIF 驱动程序 scifInit (&scifDriverSetup); //设置传感器控制器任务节拍间隔 uint32_t N = 1000;// 1kHz RTC ->不确定! //启用 RTC 节拍,节拍间隔为 N Hz scifStartRtcTicksNow (0x00010000 / N); //启动"ReadCap"传感器控制器任务:传感器控制器开始测量 scifStartTasksNbl (1 << SCIF_READ_CAP_TASK_ID); } // SCIF 驱动程序回调:任务控制接口就绪(非阻塞任务控制操作完成) 静态空 scCtrlReadyCallback (void) { //通知应用程序`控制就绪`已激活 ProjectZero_enqueueMsg (app_MSG_SC_CTRL_READY、NULL); }// scCtrlReadyCallback 静态空 scTaskAlertCallback (void) { //通知应用程序`任务警报`已激活 ProjectZero_enqueueMsg (app_MSG_SC_TASK_ALERT、NULL); }// scTaskAlertCallback 静态空 processTaskAlert (void) { //清除警报中断源 scifClearAlertIntSource(); //... 在此处访问传感器控制器任务数据结构... 一个示例 //对于每个可用的输出缓冲器... while (scifGetTaskIoStructAvailCount (scif_read_cap_task_ID、 SCIF_STRUCT_OUTPUT)> 0) { scif_read_cap_output_t* pOutput = scifGetTaskStruct ( SCIF_READ_CAP_TASK_ID、SCIF_STRUCT_OUTPUT); 对于(int n = 0;n < scif_read_cap_buffer_size;n++) { data_array[n]= pOutput->tdcBuffer[n]; } //将缓冲器发回传感器控制器 scifHandoffTaskStruct (scif_read_cap_task_ID、scif_struct_output); } //确认警报事件 scifAckAlertEvents(); }// processTaskAlert
我希望这对您有所帮助。 请告诉我您需要的任何其他信息。
非常感谢。
不用担心、我知道您正在等待反馈。
我的"桌面"测试没有真正产生任何比我们已经知道的结果更好的结果。 在某些情况下会发生复位、它似乎与 VDDR 欠压相关。 我最近(实际上是今天)访问了远程设置、以便我与软件一起进行一些硬件测量、看看这是否可以进一步给我们带来启发。
您所做的实际上不应该是一个问题、我实际上可以在您的项目中找到的唯一错误是您将 SC 项目设置为在低功耗模式下工作、这在使用 TDC 等时不受支持 我确实将其移至我身边、因为这似乎不是您问题的根本原因。
我应该在一天或两天内就我的硬件测量结果提供一些反馈。
您好!
是的、它基于 Project Zero。
确实、调试器断开连接时不会出现问题、但蓝牙数据将停止发送。 我认为出现了同样的问题、但我们看不到、因为调试器断开连接。
您是否尝试使用蓝牙和传感器控制器实现了另一个示例项目? 这将是一个尝试的选项。 我使用 simple_peripheral 项目进行了测试、但集成传感器控制器时结果相同。
如果这是两个元件都正常运行的任何示例、我可以将数据放入该代码中。
我有点相信、我是第一个遇到此问题的人、因为传感器控制器的制造正是为了满足这两个要求、即通过蓝牙将数据从传感器控制器传输到笔记本电脑。 您没有运行任何示例吗?
高 VV、
我将尝试为您提供另一个项目、您可以在我有时间将其组合在一起后立即将其作为基础。 问题本身非常奇怪、您是我遇到过的唯一一个问题、在我的所有情况下、器件在整个测试期间继续工作(在 BLE 上进行广播等)、我从未看到它停止运行 (在同一电路板上加电+调试器时除外)。
这种组合有很多项目和用户、您是我知道的第一个出现类似此类错误的人。 如前所述、使用案例是有效的、在这种情况下会发生一些时髦的事情。
您好、M-W、
我发现导致错误的原因。 传感器控制 器使用时间数字转换器来测量基于 RCOSC 时钟的96MHz 时间。 该时钟也用于 TI-RTOS、因此程序已崩溃。 使用 XOSC 时钟时、一切工作正常。
在技术参考手册 Manuel 第19.4.5.1部分中、提到两个器件都使用相同的时钟。
如果在 Sensor Controller Studio Manuel 中也提到这一点,那将会非常有帮助。
非常感谢您为我所做的一切。 )
任何时钟都应该正常、这可能是一个时序问题、这在 RCOSC 中更为突出(因为 TI-RTOS 会使用 TDC 来校准它)。
您可以尝试以下几项操作:
1) 1)在 TI-RTOS 中关闭 RCOSC 校准、并查看这是否使其在使用 RCOSC 时正常工作。 您可以通过将电源驱动器配置中的"do calibration"设置为 false 来实现此目的。
2)修改" /proc_def/TDC_disable__1_1.asm、并在"中止 TDC"和"禁用 TDC 时钟"之间添加了大量(可能为40-50)"NOP"。 换句话说、在"OUT"指令之后。
3) 3)在 fwAcquirePeripheral()之后添加几 ms (可能为50 ish)延迟。
您认为您可以逐一尝试这些东西吗?
[引用用户="M-W"]
2)修改" /proc_def/TDC_disable__1_1.asm、并在"中止 TDC"和"禁用 TDC 时钟"之间添加了大量(可能为40-50)"NOP"。 换句话说、在"OUT"指令之后。
3) 3)在 fwAcquirePeripheral()之后添加几 ms (可能为50 ish)延迟。
[/报价]
这两个选项没有发生任何变化。
[引用 USER="M-W]1)在 TI-RTOS 中关闭 RCOSC 校准、并查看这是否使其在使用 RCOSC 时起作用。 您可以通过将电源驱动程序配置中的"do calibration"设置为 false 来执行此操作。
在什么文件中、您的意思是什么?
我看了一下:TI_drivers_config.h、ti_drivers_config.c、PowerCC26X2.h、PowerCC26X2.c 和其他一些、但没有任何可更改的布尔"执行校准"。