微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 28335的ad采样并如何使用pwm波输出

28335的ad采样并如何使用pwm波输出

时间:10-02 整理:3721RD 点击:
新人一枚,现在正在学习28335,最近正在做一个用AD去采集模拟量,并用pwm输出波形,
我想请问一下,adc模块和pwm模块这两个是怎么联系在一起的,是通过AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0x1;        还是通过AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1=1;来实现。又或者有其它方法请各位大神们给支支招

我是这样理解的,你这个项目应该做成,PWM输出一个固定频率的信号,假设50HZ,AD采到0V,输出占空比为0的PWM信号,AD采到5V输出100%占空比的信号,具体做法就是根据AD采回来的数值,赋值给PWM输出的分子部分,接收端用定时器测量接收到的PWM信号的高电平时间。

具体的代码我不会,但我可以跟你说说AD是如何跟PWM联系起来的,比如说,你做一个自动拉窗帘的小装置,用一个光敏电阻和一个电机,AD就是用来采集光线变化程度的,电压越高则代表光线越强,当你光照超过某一阈值时,你便控制电机收放窗帘,如何控制电机呢,那当然是用PWM了,这便将PWM于AD联系起来了。

谢谢你的说明
但现在我在编AD采样,pwm波输出的程序,目前就是单个的adc模块和单个的pwm模块可以考虑明白,但当两个结合在一起的时候发现不知道怎么把两者联系起来。
就比如说我ad采一个1.5V的电压,然后通过pwm输出一个波形,就不知道如何实现。

TI的例程有类似的代码,
你可以去TI官网看看。
或者其他做28335开发板的厂商给的也有AD采样的例程。

你的这个PWM是用来控制东西吗?还是只是作为输出?

只是作为数字量的输出

这个,我之前看过,但是我试过一下,发现ad采集的数据跟pwm输出的波形关系不大
给你看一下那个代码:
void ADC_init(void)
{
    InitAdc();
    AdcRegs.ADCTRL1.bit.ACQ_PS    = 0xf;             // Acquisition window size
        AdcRegs.ADCTRL1.bit.CPS       = 0;                     // ADC预分频
        AdcRegs.ADCTRL3.bit.ADCCLKPS  = 3;                     // ADCCLK=25MHz
    AdcRegs.ADCTRL1.bit.SEQ_CASC  = 1;           // cascaded sequencer operation
    AdcRegs.ADCTRL1.bit.CONT_RUN  = 1;           // Continue-Run mode
        AdcRegs.ADCTRL3.bit.SMODE_SEL = 0;                     // 顺序采样
//        AdcRegs.ADCOFFTRIM.bit.OFFSET_TRIM = 120;
        AdcRegs.ADCMAXCONV.all        = 0x0005;      // 6 channels of AD convertion in SEQ
    AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x00;
    AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x01;
    AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x02;
    AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x03;
    AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x04;
    AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x05;
       
           AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0x1;                     // 软件强制触发转换
}

这个我看了,但我的ad采集的数值跟pwm波输出的频率跟电压都没关系啊

恩恩,那我在研究研究,谢谢啦

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top