DSP28377S - ADC学习编程笔记

DSP28377S -  ADC学习编程笔记

彭会锋

2016-08-04  20:19:52

1 ADC类型导致的配置区别

F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采样方式是不一样的:F28335ADC 采样序列可以配置为顺序采样和同步采样模式,而F28377S采样序列可以配置为round-robin or burst模式,这两种模式下面再讲解。



2 ADC上电配置步骤

  • 首先明确一点,ADC是专用管脚,不需要配置GPIO,所以可以直接配置ADC的寄存器
//Write ADC configurations and power up the ADC for both ADC A and ADC B
void ConfigureADC(void)
{
    EALLOW;

    //write configurations
    AdcaRegs.ADCCTL2.bit.PRESCALE = 6; //set ADCCLK divider to /4      //配置ADC时钟,ADC时钟有系统时钟直接提供参考时钟,计算的时候需要注意
    AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE); // 设置ADC的采样分辨率为12bit,单输入模式(区别于差分模式)

    AdcbRegs.ADCCTL2.bit.PRESCALE = 6; //set ADCCLK divider to /4
    AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);

    //Set pulse positions to late
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;     //设置ADC的中断产生时机在转换完成后产生中断(Interrupt pulse generation occurs at the end of the conversion)
    AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;

    //power up the ADC
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;  //给ADC上电,注意需要延时1ms左右等待上电完成    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;

    //delay for 1ms to allow ADC time to power up
    DELAY_US(1000);

    EDIS;
}

3 ADC采样通道、保持时间和触发信号配置,这里和中断配置在一起讲了!

    AdcbRegs.ADCSOC7CTL.bit.CHSEL = 14;  //SOC0 will convert internal connection B0
    AdcbRegs.ADCSOC7CTL.bit.ACQPS = tempsensor_acqps; //sample window is 100 SYSCLK cycles
    AdcbRegs.ADCSOC7CTL.bit.TRIGSEL = 5; //trigger on ePWM1 SOCA/C,这里根据需要进行配置
    AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 7; //end of SOC0 will set INT1 flag (这里一般配置为最后一个优先级的SOC即可!注意要随时修改,这里栽跟头了)(优先级放最后讲解,可以不用理解!)
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;   //enable INT1 flag (如果不配置这里,那么ADC采样完成后中断flag不会置位,所以必须配置为1)
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //make sure INT1 flag is cleared

在配置过程中需要注意的是:

为了进行测试,有时候会使用13 temp sensor做测试用(需要注意必须先初始化此温度端口,然后在使用,否则ADC采样会被卡在这个地方导致莫名其妙问题)

//Initialize the temperature sensor
      //Note: The argument needs to change if using a VREFHI voltage other than 3.0V
      InitTempSensor(3.0); (这里已经有现成的封装函数可以使用,直接调用即可!)(如果不初始化,会导致采样无法正常顺序进行,切记切记!)

    AdcaRegs.ADCSOC6CTL.bit.CHSEL = 13;  //SOC0 will convert internal connection A13
    AdcaRegs.ADCSOC6CTL.bit.ACQPS = tempsensor_acqps; //sample window is 100 SYSCLK cycles
    AdcaRegs.ADCSOC6CTL.bit.TRIGSEL = 5; //trigger on ePWM1 SOCA/C

4 epwm触发配置

注意:epwm可以配置为在ZERO和PERIOD两个时刻都可以触发SOCA采样信号,所以在逆变器中可以连续采样两次,这个对于编程很重要,差点有栽跟头了,所以一定要看官方文档!

void ConfigureEPWM(void)
{
    EALLOW;
    // Assumes ePWM clock is already enabled
    EPwm1Regs.ETSEL.bit.SOCAEN    = 0;             // Disable SOC on A group
    EPwm1Regs.ETSEL.bit.SOCASEL    = 1;            // Select SOC on up-count
    EPwm1Regs.ETPS.bit.SOCAPRD = ET_CTR_PRDZERO;   // Generate pulse on 1st event(注意这里EPWM可以配置为在ZERO 和 PERIOD时触发ADC采样,这和F28335不一样!又差点栽跟头了!)
    EPwm1Regs.CMPA.bit.CMPA = 0x0800;              // Set compare A value to 2048 counts
    EPwm1Regs.TBPRD = 0x1000;                      // Set period to 4096 counts
    EPwm1Regs.TBCTL.bit.CTRMODE = 3;               // freeze counter
    EDIS;
}

最后还有关于EOC  转换优先级 和 ADC采样结构等内容,作为了解性质,晚点补充,今天先到次为止!

时间: 2024-08-01 20:39:05

DSP28377S - ADC学习编程笔记的相关文章

Winsock网络编程笔记(4)----基本的理论知识

前面的笔记记录了Winsock的入门编程,领略了Winsock编程的乐趣..但这并不能算是掌握了Winsock,加深理论知识的理解才会让后续学习更加得心应手..因此,这篇笔记将记录一些有关Winsock的基本理论知识,由于是一篇笔记,鉴于看书速度有限,主要内容会慢慢地填入..错误在所难免的,希望看客更正..(*^__^*) 嘻嘻…… Winsock网络编程笔记(4)----基本的理论知识,布布扣,bubuko.com

学习编程的过程中可能会走哪些弯路?

整理自知乎问题:学习编程的过程中可能会走哪些弯路,有哪些经验可以参考? @Crossin 回头看学生时代,最大的弯路就是怕走弯路.想不走弯路. 纠结该学什么语言.该研究哪个方向.该做项目还是啃算法,生怕一失足成千古恨,踏上一条不归路. 很久之后才发现,与其纠结选择,不如找个点坚持下去.好比爬山,你在山脚下纠结该从哪条路上去,而实际上,每一条都能通往山顶,每一条都不会是笔直平坦的.你怕错过另一条路的风景踟蹰不前,却不知道只要登上山顶就可以一览众山小. 如果一定要说个经验教诲,那就是尽可能多地写代码

如何快而好的学习编程

作者:刘铁猛    编辑:张·布兰登   翻译:九幽科技 当我写这个话题的时候,我感觉我正在和整个世界对话,就像我在写我的第一个程序“Hello,World”.希望这个话题可以帮助那些想学编程的人(包括你自己)获得一个良好的开端. 关于我 我的名字叫刘铁猛,如果你愿意可以叫我蒂姆.当我在大学的时候,才开始学习计算机编程,在此之前,电脑对我来说就仅仅是一台打印机或者游戏机.但是,当我开始编程,三个因素使我在计算机领域中受益匪浅.分别是: 1.相当迅速地打字 2.知道一些磁盘操作系统命令,并且知道一

Python学习手册笔记

之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读<Python学习手册(第三版)>.如果只是想快速入门,我在这里推荐了几篇文章,有其他语言编程经验的人简单看一看就可以很快地开始编写Python程序了. 黑体表示章节, 下划线表示可以直接在原文对应位置查到的专有技术名词. 原书配套答案请到http://www.hzbook.com/Books/4572.html下载,简单注册即可. 第三章 如何运行程序 impor

零基础如何学习编程

零基础如何学习编程 心得笔记 自学编程2年来,加过n多群,泡过n多论坛,接触过心怀激情的编程新人,遇到过沉着冷静的技术大牛--编程,吸引了一批又一批的热血青年,或许是为了理想,或许是心中的爱好,不断有新人的加入,也不断有人从编程中退出.编程的入场入口只有一个,出场的出口却很多.自学编程的新人,有很大一部分卡在了入门上,对此,我想写下对编程入门的一些拙见,权当抛砖引玉,或对或错,还望同学们自己鉴定.1.零基础,打算自学编程,应具备哪些的知识?答:对于入门阶段,对知识水平的要求并不算高,或者说很低,

编程笔记 2017-08-07

贴一些前几天跟踪代码的草稿吧,以证明前两天并未闲着. 今天,觉得模型类Shape和ShapeFactory理解的已较为透彻了想再进一步,粗粗浏览了Controller目录下的GameController,阅毕,顿觉自己功力太浅,看完完全无感 有关,接口与继承,有何区别?之前读书时,就觉得此处一团浆糊,今决定要把此概念,理解得通透,网上游历一番,各个大神的讲解,都未让我有醍醐认识,还是无感.很反感,一些大神举的例子,什么小狗小猫,吃饭,睡觉的,越看越糊涂. 关于,接口与子类,还需加强理论的学习.后

(转)大牛的《深度学习》笔记,60分钟带你学会Deep Learning。

大牛的<深度学习>笔记,60分钟带你学会Deep Learning. 2016-08-01 Zouxy 阅面科技 上期:<从特征描述到深度学习:计算机视觉发展20年> 回复“01”回顾全文   本期:大牛的<深度学习>笔记,60分钟带你学会Deep Learning. 深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里,深度学习颠覆了语音识别.图像分类.文本

C++MFC编程笔记day01 MFC介绍、创建MFC程序和重写消息处理

一.MFC概念和作用 1.全称Microsoft Foundation Class Library,我们称为微软基础类库,封闭了绝大部分的win32 Api函数,C++语法中的数据结构,程序的执行流程 MFC就是一个库(动态库,静态库) MFC还是一个程序框架 2.为什么使用MFC 基于框架编程,提高工作效率,减少开发周期,节约开发成本. 二.几个重要的头文件 afx.h    -绝大部分类的声明头文件 afxwin.h -包含了afx.h和windows.h afxext.h -提供了扩展窗口

学习编程让我成功减肥!

路过楼下药店,门口有个称,称了下体重,惊喜地发现体重跟大半年前相比,减轻了十来斤. 欣喜之余,梳理了一下,发现能够成功减肥,跟学习编程有密不可分的关系.总结如下: 1, 学习编程帮助减肥 学习编程,免不了要熬夜. 一熬夜,就上火. 朋友说,得管住嘴,不吃油腻食物. 好呢,自此天天白灼上海青,戒掉了最爱的猪脚肉. 2, 学习编程,让我学会了合理安排饮食 炒菜不放油,尽量以蒸菜为主. 白灼最有效,水烧开后,上海青扔进锅,烫熟后吃,原汁原味,各种维生素基本上保留无余. 3, 学习编程,让我爱上了锻炼身