firefly2k 发表于 2025-8-16 18:15:40

USB-CDC和PCA干扰问题|已解决

我这个问题不知道该放到usb-cdc还是PCA分类里,感觉还是放到usb-cdc里面吧

问题:
只要主程序main.c中和pca.c中的下面两个语句同时打开,烧录程序后,usb-cdc的COM口就一直闪烁,无法正常使用。屏蔽其中任意一条,均可正常运行。请教下是什么问题?该如何解决
main.c:   USB_SendData((u8 *)pwavdat,WAVE_DATA_LEN);
pca.c:   pca_high16cnt++;

注:CCP0有没有信号均有这问题

通电运行闪烁的视频是如下:
整个项目工程如下:

国芯人工智能 发表于 2025-8-16 18:18:00

关于USB-CDC与PCA干扰问题的说明如下:

尊敬的用户,您好!

您所描述的问题涉及USB-CDC与PCA模块之间的干扰现象,这可能与系统资源冲突、时序控制或中断优先级设置有关。以下为专业分析及建议:

1. 问题现象分析
   您提到在main.c中使用USBSendData((u8 )pwavdat,WAVEDATALEN);,同时在pcac.c中执行pcahigh16cnt++;时,USB-CDC的COM口出现异常闪烁,无法正常使用;而屏蔽任一语句后可恢复正常。此现象表明两个功能模块在运行时存在冲突。

2. 潜在原因推测
资源竞争:若USBSendData()与pcahigh16cnt++共享同一硬件资源(如定时器、DMA通道或中断源),可能导致资源争用,影响数据传输稳定性。
时序问题:pcahigh16cnt++可能涉及高频率操作,若未合理安排任务调度或中断优先级,可能干扰USB-CDC的实时数据发送。
中断冲突:若PCA模块触发中断,且未正确配置中断优先级,可能导致USB-CDC中断被抢占,造成通信异常。

3. 建议排查步骤
检查硬件资源分配:确认USB-CDC与PCA模块是否共用定时器、DMA通道或GPIO引脚,避免资源冲突。
分析中断优先级:确保USB-CDC相关中断(如USB中断)优先级高于PCA中断,防止关键任务被抢占。
优化任务调度:若采用多任务框架(如RTOS),需检查任务优先级与调度策略,确保USB-CDC任务获得足够执行时间。
添加延时或锁机制:在关键代码段前后添加临界区保护(如禁用中断),避免并发操作导致异常。

4. 解决方案建议
分离功能逻辑:将USBSendData()与pcahigh16cnt++的执行逻辑分时处理,避免同时运行。
调整PCA频率:若PCA操作频率过高,可尝试降低其采样率或增加延时,减少对USB-CDC的干扰。
验证驱动实现:检查USB-CDC驱动是否支持多线程或中断安全操作,必要时进行适配优化。

5. 后续支持
   若问题仍未解决,建议提供以下信息以便进一步分析:
USB-CDC与PCA模块的具体初始化代码;
中断配置及优先级设置;
系统时钟配置及任务调度方案。

感谢您的反馈,我们将持续为您提供技术支持。如需进一步协助,请随时联系。

[本文内容由国芯人工智能辅助生成,仅供参考]

DebugLab 发表于 2025-8-16 20:09:49

修改PCA中断和USB中断优先级试试看,让USB中断优先级更高,允许形成中断嵌套

firefly2k 发表于 7 天前

DebugLab 发表于 2025-8-16 20:09
修改PCA中断和USB中断优先级试试看,让USB中断优先级更高,允许形成中断嵌套 ...

谢谢,可以了
页: [1]
查看完整版本: USB-CDC和PCA干扰问题|已解决