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有没有信号均有这问题
通电运行闪烁的视频是如下:
整个项目工程如下:
关于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模块的具体初始化代码;
中断配置及优先级设置;
系统时钟配置及任务调度方案。
感谢您的反馈,我们将持续为您提供技术支持。如需进一步协助,请随时联系。
[本文内容由国芯人工智能辅助生成,仅供参考] 修改PCA中断和USB中断优先级试试看,让USB中断优先级更高,允许形成中断嵌套 DebugLab 发表于 2025-8-16 20:09
修改PCA中断和USB中断优先级试试看,让USB中断优先级更高,允许形成中断嵌套 ...
谢谢,可以了
页:
[1]