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.
在将 SysConfig 配置为在 CPU2上使用 ADC 实例时、我在编译期间收到以下错误:
"CPU2 HAL_ADCA (/driverlib/adc.js) adcBase:当 ADC 实例添加到 CPU2时、需要将模拟 PinMux 模块添加到 CPU1 "
我找不到 SysConfig 中提到的模拟 PinMux 模块、也找不到此 MCU 的数据表或技术参考手册。 我开始怀疑这是 SysConfig 中的错误、而不是我的配置中的错误。
解决此问题的正确方法是什么?
此致、
Rob。
尊敬的 Rob:
您正在使用哪个版本的 C2000Ware? 当我尝试相同的操作时、我收到以下错误消息:
当我在 CPU1窗口中添加 ASYSCTL 模块时、该操作会消失、但这可能只有较新版本的 SysConfig 才有可能实现。
谢谢!
卢克
Luke、您好!
感谢您的快速响应。
我使用的是 C2000Ware 5.01.00.00。 SysConfig 为1.18.0 +3266版本、我将进行升级(但它不会影响代码生成脚本)
我们还具有相同的 ASYSCTL 消息、当我们添加此模块时解析了该消息。
在 CPU1或 CPU2上下文中、由于在 SysConfig 中找不到此 MCU 的模拟 PinMux 模块、因此模拟 PinMux 错误仍然存在。
尊敬的 Rob:
模拟 Pinmux 模块是原始 SysConfig 工具的一部分。 如果您未在 SysConfig 启动屏幕或项目属性中指定软件产品、则会看到该产品。
您能否确认此问题特定于 CPU2? 如果您在 CPU1上添加了 ADC、仍然会看到此错误吗?
谢谢!
卢克
啊、我不知道这个"原始"SysConfig 概念。 当我在不选择软件产品的情况下创建新工程时、SysConfig 会生成 pinmux.c/h 文件。 该文件包含 GPIO 多路复用配置、但未提及模拟引脚多路复用。 在此模式下、不能添加 ADC 配置(左侧栏中的"Peripheral"组不显示"ADC"类别)。
是的、这仅在 CPU2上提供。 我们已经在 CPU1上使用 ADCC、没有任何问题。
我越来越确信此 MCU 上不存在模拟 PinMux、并且报告的错误完全是虚假的;
F28379D 数据表显示、ADCINxy 引脚要么专用于 ADC 输入、要么与比较器或 DAC 引脚共享。 对于所有 ADCIN 引脚、"UX 位置"列均为空。 技术参考手册 ADC 章节未提及任何模拟多路复用支持(某些控制/事件信号除外、例如通过 XBAR 的 ADCEXTSOC 和通过 GPIO8多路复用器3的 ADCSOCA0)。 如果存在任何模拟 PinMux、我们无法找到它。
我们已经将错误的来源跟踪到 driverlib/.meta/acd.js、行1740。 这会在多核 SysConfig 上的上下文为 CPU2时在函数 onValidate()中抛出错误。 该检查需要其他上下文(CPU1)才能使模块/driverlib/analogue.js 存在。 当我们禁用此错误时、将生成无错误的代码、并且生成的代码会正确编译。 我不能说这会产生可靠的代码、因为我们禁用了部分错误检查...
当然、为了使其正常工作、我们不必修改 TI 代码生成。
我们是否有找不到的模拟 PinMux 模块、或者 SysConfig/C2000Ware 中是否有错误?
此致、
Rob
重现此问题的一种便捷方法是导入工程 C2000Ware_5_01_00_00\driverlib\f2837xd\examples\dual\led\ccs\led_ex2_sysconfig.projectspec、然后将 ADC 添加到 CPU2 (并设置 ADCCLK = input/8、将 ASYSCTL 添加到 CPU1)
您将在 SysConfig 中以及在构建步骤中看到该错误。
尊敬的 Rob:
我也能够在我身边提出这个问题。 这似乎是 SysConfig 中的错误、您删除的错误检查实际上可能是不必要的。 我将进一步查看此内容以确定应如何在 SysConfig 中修复此问题、并指导您完成在自己侧实施修复的步骤。 否则、此问题将在 C2000Ware 的5.03版中修复。
谢谢!
卢克
好的、我现在将保持对误差的抑制、并继续开发。
作为参考、我在 C2000Ware_5_01_00_00\driverlib\.meta\adc.js 中进行了以下更改
在功能 onValidate()中的第1740行已从
如果(Common.isModuleOnOtherContext ("/driverlib/analogue.js ")== false){
至
if ((Common.isModuleOnOtherContext ("/driverlib/analogue.js ")== false)&!["F2837xD"].Includes (Common.getDeviceName ())){
这 可以防止针对 F2837xD MCU 引发此错误
谢谢 Luke!
尊敬的 Rob:
感谢您实施的修复程序的详细信息。 我已经向我们的一位 SysConfig 多核专家提出了这个问题、一旦收到他们的回复、我将回复给您。
Luke
Rob、
感谢您提请我们注意这一点。 此修复应同时起作用。 请确保使用 CPU1上的 SYSCTL 模块将所有权移交给 CPU2。