查看: 692|回复: 0

[经验] 关于使用28335的ADC模块采样电流出现无法采样数据的问题

[复制链接]

该用户从未签到

发表于 2020-12-31 00:01:16 | 显示全部楼层 |阅读模式
分享到:

1、调试情况说明:
使用DSP238335的ADC模块进行采样电流,使用EPWM模块触发ADC采样,ADC采样级联模式,EPWM采用up-down模式。
实现功能需要了解EPWM和ADC的基本工作原理,相关寄存器的设置,使用何种触发模式,ADC的采样方式等等。此次主要简单记录解决问题的思路和过程。
问题: 使用ADC中断读取采样数据,并进行数据转换计算,进行仿真调试时ADC采样没有采样到数值。

2、调试思路及过程:
1、第一步首先检查ADC中断是否产生,对于DSP的三级中断检查所有与ADC中断相关的标志位(如下图),ADC是INT1.6,利用仿真调试检查对应的PIEIFR、PIEIER、IER、IFR等标志位状态是否正确,经检查中断标志位无异常,ADC可以正常中断,怀疑ADC模块没有正常转换数据;

22.jpg


2、由于是EPWMxSOCA触发采样,第二步检查触发源(下图红线)是否正常,EPWM所用产生触发事件的方式如下图红框所示,CTR= CMPA时产生触发事件。检查EPWM模块触发ADC的触发源ETFLG.SOCA=0;所示并没有SOCA触发事件产生,故无法进行AD采样;

23.jpg

24.jpg
3、第三步检查ADC初始化的触发源部分的寄存器设置,仿真调试看变量发现TBCTR的值没有变化,一直为0,将CMPA=0后发现产生触发事件,由此可知时基(TB)模块并没有工作,使得TBCTR时基计数寄存器无法工作(计数),主要怀疑TB模块工作,具体如下图红圈所示。

25.jpg


4、 时基模块工作需要时钟信号,经检查,对系统时钟的分频得到时基时钟(红圈1)进行了设置,此处没有问题;
5、 检查TBCLK时基时钟是否使能,EPWM模块时钟是否使能(如下图),经检查发现并未对TBCLK时基时钟以及使用的EPWM1模块时钟进行使能,在程序中(DSP2833x_SysCtrl.c中)置1使能后ADC能够正常进行采样。

26.jpg


SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1; // ePWM1
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Enable TBCLK within the ePWM

PCLKCR0寄存器的TBCLKSYNC使能:

PCLKCR1寄存器的EPWM1使能:

27.jpg

[size=0.83em]

image.png (228.01 KB, 下载次数: 0)

下载附件  [url=]保存到相册[/url]

[color=rgb(153, 153, 153) !important]2020-6-13 20:24 上传





写在最后
时钟设置是TI官方的.DSP2833x_SysCtrl.c之后设置的,一般不会更改,我由于在检查其他模块的问题的时候将其关闭,后来使用的时候未打开,才出现这种情况,虽然后来解决了问题,却浪费了许多时间,以后一定要细心。
28.jpg
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-23 12:35 , Processed in 0.116269 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.