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的寄存器
  1. //Write ADC configurations and power up the ADC for both ADC A and ADC B
  2. void ConfigureADC(void)
  3. {
  4. EALLOW;
  5.  
  6. //write configurations
  7. AdcaRegs.ADCCTL2.bit.PRESCALE = ; //set ADCCLK divider to /4 //配置ADC时钟,ADC时钟有系统时钟直接提供参考时钟,计算的时候需要注意
  8. AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE); // 设置ADC的采样分辨率为12bit,单输入模式(区别于差分模式)
  9.  
  10. AdcbRegs.ADCCTL2.bit.PRESCALE = ; //set ADCCLK divider to /4
  11. AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
  12.  
  13. //Set pulse positions to late
  14. AdcaRegs.ADCCTL1.bit.INTPULSEPOS = ; //设置ADC的中断产生时机在转换完成后产生中断(Interrupt pulse generation occurs at the end of the conversion)
  15. AdcbRegs.ADCCTL1.bit.INTPULSEPOS = ;
  16.  
  17. //power up the ADC
  18. AdcaRegs.ADCCTL1.bit.ADCPWDNZ = ; //给ADC上电,注意需要延时1ms左右等待上电完成
    AdcbRegs.ADCCTL1.bit.ADCPWDNZ = ;
  19.  
  20. //delay for 1ms to allow ADC time to power up
  21. DELAY_US();
  22.  
  23. EDIS;
  24. }

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

  1. AdcbRegs.ADCSOC7CTL.bit.CHSEL = ; //SOC0 will convert internal connection B0
  2. AdcbRegs.ADCSOC7CTL.bit.ACQPS = tempsensor_acqps; //sample window is 100 SYSCLK cycles
  3. AdcbRegs.ADCSOC7CTL.bit.TRIGSEL = ; //trigger on ePWM1 SOCA/C,这里根据需要进行配置
  1. AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = ; //end of SOC0 will set INT1 flag (这里一般配置为最后一个优先级的SOC即可!注意要随时修改,这里栽跟头了)(优先级放最后讲解,可以不用理解!)
  2. AdcaRegs.ADCINTSEL1N2.bit.INT1E = ; //enable INT1 flag (如果不配置这里,那么ADC采样完成后中断flag不会置位,所以必须配置为1)
  3. AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = ; //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); (这里已经有现成的封装函数可以使用,直接调用即可!)(如果不初始化,会导致采样无法正常顺序进行,切记切记!)

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

4 epwm触发配置

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

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

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

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

  1. C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  2. 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)

    强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...

  3. (转)深度学习word2vec笔记之基础篇

    深度学习word2vec笔记之基础篇 声明: 1)该博文是多位博主以及多位文档资料的主人所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用 ...

  4. 深度学习word2vec笔记之基础篇

    作者为falao_beiliu. 作者:杨超链接:http://www.zhihu.com/question/21661274/answer/19331979来源:知乎著作权归作者所有.商业转载请联系 ...

  5. FPGA_VHDL 学习课堂笔记001

    FPGA_VHDL 学习课堂笔记   记录说明:本文档主要记录大学期间,老师FPGA授课课堂笔记. 代码语言:VHDL 编程软件:MAX+plus II FPGA硬件:FLE-843   03月05日 ...

  6. [编程笔记]第一章 C语言概述

    //C语言学习笔记 第一讲 C语言概述 第二讲 基本编程知识 第三讲 运算符和表达式 第四讲 流程控制 第五讲 函数 第六讲 数组 第七讲 指针 第八讲 变量的作用域和存储方式 第九讲 拓展类型 第十 ...

  7. 响应式编程笔记三:一个简单的HTTP服务器

    # 响应式编程笔记三:一个简单的HTTP服务器 本文我们将继续前面的学习,但将更多的注意力放在用例和编写实际能用的代码上面,而非基本的APIs学习. 我们会看到Reactive是一个有用的抽象 - 对 ...

  8. 数据结构(逻辑结构,物理结构,特点) C#多线程编程的同步也线程安全 C#多线程编程笔记 String 与 StringBuilder (StringBuffer) 数据结构与算法-初体验(极客专栏)

    数据结构(逻辑结构,物理结构,特点) 一.数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关.逻辑结构包括: 集合 数 ...

  9. 风变编程笔记(二)-Python爬虫精进

    第0关  认识爬虫 1. 浏览器的工作原理首先,我们在浏览器输入网址(也可以叫URL),然后浏览器向服务器传达了我们想访问某个网页的需求,这个过程就叫做[请求]紧接着,服务器把你想要的网站数据发送给浏 ...

随机推荐

  1. iOS面试和招聘

    1, <招聘一个靠谱的iOS>面试题参考答案(上) 2, 招聘一个靠谱的 iOS

  2. 转Masonry遇到的问题

    1,ImageView 圆角: 解决方法如下: https://github.com/SnapKit/Masonry/issues/153 2,iphone4  tableview只显示一半 加了一个 ...

  3. SqlSever基础 group by之后,加having 对分组之后的数据在进行处理

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  4. eclipse 恢复SVN无法还原的文件 svn使用了还原,但本地的没有提交找回没提交代码的方法

    http://blog.sina.com.cn/s/blog_750167060102vd2n.html

  5. 【leetcode❤python】 374. Guess Number Higher or Lower

    #-*- coding: UTF-8 -*-# The guess API is already defined for you.# @param num, your guess# @return - ...

  6. Java_你应该知道的26种设计模式

    四. 模板方法模式 Definition: Define the skeleton of an algorithm in an operation, deferring some steps to s ...

  7. 深入理解 C# 协变和逆变

    msdn 解释如下: “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型. “逆变”则是指能够使用派生程度更小的类型. 解释的很正确,大致就是这样,不过不够直白. 直白的理解: “协变” ...

  8. PHP 全局变量 $_SERVER

    $_SERVER['SERVER_ADDR']    当前运行脚本所在的服务器的 IP 地址. $_SERVER['REQUEST_TIME']    请求开始时的时间戳.从 PHP 5.1.0 起可 ...

  9. tracert命令详解

    一.windows.Linux系统下 tracert ip/网站域名 二.mac traceroute IP/域名 ---------2016-10-10 15:29:07-- source:[1]t ...

  10. mysql: 1045 access denied for user 'root'@'localhost' using password yes

    原因是:root的密码错误了. 解决思路:关闭mysql服务,重新启动mysql服务,启动mysql的时候,指定不需要校验密码.然后登陆mysql,修改密码,退出.再重新启动mysql服务. 1.关闭 ...