一、功能说明

  • 12位内建采样保持的模数转换器
  • 模拟输入电平:0~3V
  • 16个转换通道
  • 最快转换时钟频率12.5MHz(奈奎斯特定则,25MHz最高能采样12.5MHz的信号)
  • 多触发源:软件、ePWM和GPIO
  • 两种采样模式:级联和双通道模式

软件设置流程

//1.ADC时钟使能
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;//在InitSysCtrl()函数里
//2.时钟分频
EALLOW;
SysCtrlRegs.HISPCP.all = 0x3;//HSPCLK = SYSCLKOUT/2*HISPCP = 150/(2*3)   = 25.0 MHz
ADC_cal();
EDIS;
AdcRegs.ADCTRL3.all = 0x00E0;  // Power up bandgap/reference/ADC circuits
DELAY_US(ADC_usDELAY);         // Delay before converting ADC channels
AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x0;//Fclk = HSPCLK/(2*ADCCLKPS),但当ADCCLKPS=0时,Fclk = HSPCLK
AdcRegs.ADCTRL1.bit.CPS = 0x0;//ADCCLK = Fclk / (CPS+1)
//3.通道设置
//4.触发源设置
//5.中断源设置

二、模式说明

2.1 级联模式

//3.通道设置
AdcRegs.ADCTRL1.bit.SEQ_CASC = 0x1;//0-dual, 1-Cascaded
AdcRegs.ADCMAXCONV.all = 0x000F;       // Setup 16 conv's on SEQ
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // Setup ADCINA0 as 1st SEQ conv.
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; // Setup ADCINA1 as 2nd SEQ conv.
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x2; // Setup ADCINA2 as 3rd SEQ conv.
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x3; // Setup ADCINA3 as 4th SEQ conv.
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x4; // Setup ADCINA4 as 5th SEQ conv.
AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x5; // Setup ADCINA5 as 6th SEQ conv.
AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x6; // Setup ADCINA6 as 7th SEQ conv.
AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x7; // Setup ADCINA7 as 8th SEQ conv.
AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 0x8; // Setup ADCINB0 as 9th SEQ conv.
AdcRegs.ADCCHSELSEQ3.bit.CONV09 = 0x9; // Setup ADCINB1 as 10th SEQ conv.
AdcRegs.ADCCHSELSEQ3.bit.CONV10 = 0xA; // Setup ADCINB2 as 11th SEQ conv.
AdcRegs.ADCCHSELSEQ3.bit.CONV11 = 0xB; // Setup ADCINB3 as 12th SEQ conv.
AdcRegs.ADCCHSELSEQ4.bit.CONV12 = 0xC; // Setup ADCINB4 as 13th SEQ conv.
AdcRegs.ADCCHSELSEQ4.bit.CONV13 = 0xD; // Setup ADCINB5 as 14th SEQ conv.
AdcRegs.ADCCHSELSEQ4.bit.CONV14 = 0xE; // Setup ADCINB6 as 15th SEQ conv.
AdcRegs.ADCCHSELSEQ4.bit.CONV15 = 0xF; // Setup ADCINB7 as 16th SEQ conv.

2.2 双通道模式

//3.通道设置
AdcRegs.ADCTRL1.bit.SEQ_CASC = 0x0;//0-dual, 1-Cascaded
AdcRegs.ADCMAXCONV.all = 0x0077;       // Setup 8 conv's on SEQ1 and 8 conv's on SEQ2
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // Setup ADCINA0 as 1st SEQ1 conv.
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; // Setup ADCINA1 as 2nd SEQ1 conv.
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x2; // Setup ADCINA2 as 3rd SEQ1 conv.
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x3; // Setup ADCINA3 as 4th SEQ1 conv.
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x4; // Setup ADCINA4 as 5th SEQ1 conv.
AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x5; // Setup ADCINA5 as 6th SEQ1 conv.
AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x6; // Setup ADCINA6 as 7th SEQ1 conv.
AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x7; // Setup ADCINA7 as 8th SEQ1 conv.
AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 0x8; // Setup ADCINB0 as 1st SEQ2 conv.
AdcRegs.ADCCHSELSEQ3.bit.CONV09 = 0x9; // Setup ADCINB1 as 2nd SEQ2 conv.
AdcRegs.ADCCHSELSEQ3.bit.CONV10 = 0xA; // Setup ADCINB2 as 3rd SEQ2 conv.
AdcRegs.ADCCHSELSEQ3.bit.CONV11 = 0xB; // Setup ADCINB3 as 4th SEQ2 conv.
AdcRegs.ADCCHSELSEQ4.bit.CONV12 = 0xC; // Setup ADCINB4 as 5th SEQ2 conv.
AdcRegs.ADCCHSELSEQ4.bit.CONV13 = 0xD; // Setup ADCINB5 as 6th SEQ2 conv.
AdcRegs.ADCCHSELSEQ4.bit.CONV14 = 0xE; // Setup ADCINB6 as 7th SEQ2 conv.
AdcRegs.ADCCHSELSEQ4.bit.CONV15 = 0xF; // Setup ADCINB7 as 8th SEQ2 conv.

三、触发源

//4.触发源设置
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;//软触发(用于级联、双通道1#)
AdcRegs.ADCTRL2.bit.SOC_SEQ2 = 1;//软触发(用于双通道2#)
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;//ePWM触发(用于双通道1#)
AdcRegs.ADCTRL2.bit.EPWM_SOCB_SEQ2 = 1;//ePWM触发(用于双通道2#)
AdcRegs.ADCTRL2.bit.EPWM_SOCB_SEQ = 1;//ePWM触发(用于级联)

四、中断源

//5.中断源设置
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; //用于级联、双通道1#
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2 = 1; //双通道2#

五、接收转换结果

5.1 中断式

/** AD的外部中断程序【中等优先级】* 中断触发信号:EPWM
*/
interrupt void ADC_ISR(void)
{Voltage[0] = AdcRegs.ADCRESULT0 >>4;Voltage[1] = AdcRegs.ADCRESULT1 >>4;Voltage[2] = AdcRegs.ADCRESULT2 >>4;Voltage[3] = AdcRegs.ADCRESULT3 >>4;Voltage[4] = AdcRegs.ADCRESULT4 >>4;Voltage[5] = AdcRegs.ADCRESULT5 >>4;Voltage[6] = AdcRegs.ADCRESULT6 >>4;Voltage[7] = AdcRegs.ADCRESULT7 >>4;Voltage[8] = AdcRegs.ADCRESULT8 >>4;Voltage[9] = AdcRegs.ADCRESULT9 >>4;Voltage[10] = AdcRegs.ADCRESULT10 >>4;Voltage[11] = AdcRegs.ADCRESULT11 >>4;Voltage[12] = AdcRegs.ADCRESULT12 >>4;Voltage[13] = AdcRegs.ADCRESULT13 >>4;Voltage[14] = AdcRegs.ADCRESULT14 >>4;Voltage[15] = AdcRegs.ADCRESULT15 >>4;// Reinitialize for next ADC sequenceAdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;         // Reset SEQ1AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;       // Clear INT SEQ1 bitPieCtrlRegs.PIEACK.all = PIEACK_GROUP1;   // Acknowledge interrupt to PIEreturn;
}

5.2 查询式

while(AdcRegs.ADCST.bit.INT_SEQ1 == 0);
test[0] = AdcRegs.ADCRESULT0 >>4;
test[1] = AdcRegs.ADCRESULT1 >>4;
test[2] = AdcRegs.ADCRESULT2 >>4;
test[3] = AdcRegs.ADCRESULT3 >>4;
test[4] = AdcRegs.ADCRESULT4 >>4;
test[5] = AdcRegs.ADCRESULT5 >>4;
test[6] = AdcRegs.ADCRESULT6 >>4;
test[7] = AdcRegs.ADCRESULT7 >>4;
test[8] = AdcRegs.ADCRESULT8 >>4;
test[9] = AdcRegs.ADCRESULT9 >>4;
test[10] = AdcRegs.ADCRESULT10 >>4;
test[11] = AdcRegs.ADCRESULT11 >>4;
test[12] = AdcRegs.ADCRESULT12 >>4;
test[13] = AdcRegs.ADCRESULT13 >>4;
test[14] = AdcRegs.ADCRESULT14 >>4;
test[15] = AdcRegs.ADCRESULT15 >>4;
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;// Reset SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;

六、其他设置

6.1 运行模式
运行模式分为start-stop和continuous两种模式,通过以下代码配置:

AdcRegs.ADCTRL1.bit.CONT_RUN = 0x0; //0-start stop mode; 1-Continuous conversion mode

start-stop模式下,AD转换结束后等待触发信号,才开始进行下一次的AD转换;
continuous模式下,AD转换结束后无需等待触发信号,立即开始下一次的AD转换。
6.2 SOC脉宽设置

AdcRegs.ADCTRL1.bit.ACQ_PS = 0xF;//Acquisition window size

SOC脉宽是(ACQ_PS + 1)倍的ADCLK周期。
6.3 复位启动

AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0x0;

仅用在continuous模式里面,如果该位为0,则新的SOC来时从复位状态启动,如SEQ1和级联模式下,重新从CONV00开始;如果该位为1,则不会从复位状态开始,直接从现在的转换序列开始,直到最后停止。

七、疑问

  1. 什么时候触发中断?
    答:当SEQ_CNTR = 0时,INT_SEQ = 1,且产生中断。否则,INT_SEQ = 0。

  2. ePWM触发双通道ADC,只能转换一个通道,什么原因?
    答:ACQ_PS的值太大,改小后,触发脉冲变小,可实现双通道。

【DSP】TMS320F28335的ADC模块相关推荐

  1. DSP之TMS320F28335学习总结与笔记(二)————ADC模块

    F28335 ADC模块 ADC转换模块 A/D转换器(ADC)将模拟量转换为数字量通常要经过四个步骤:采样.保持.量化和编码. 采样:将一个时间上连续变化的模拟量转化为时间上离散变化的模拟量. 保持 ...

  2. 硬汉DSP TMS320F28335开发板全套资料

    TMS320F28335型数字信号处理器TI公司的一款TMS320C28X系列浮点DSP控制器.与以往的定点DSP相比,该器件的精度高,成本低, 功耗小,性能高,外设集成度高,数据以及程序存储量大,A ...

  3. stm32 adc 连续和扫描_技术分享 | STM32多个ADC模块同时采样转换的应用示例

    在STM32家族里,多数系列芯片内含2到3个ADC模块,有的甚至更多,比方G4系列可以有5个ADC模块.其中,通道数因不同的系列或型号多少不等,几个到几十个的都有.有时,我们可能需要多个ADC模块同时 ...

  4. 嵌入式Linux设备驱动程序开发指南18(IIO子系统(二)具有硬件触发功能的IIO子系统ADC模块)——读书笔记

    IIO子系统二 具有硬件触发功能的IIO子系统ADC模块 十八.IIO子系统(二) 具有硬件触发功能的IIO子系统ADC模块 18.1 简介 18.2 设备树 18.3 硬件触发驱动功能分析 18.3 ...

  5. 如何利用单片机的ADC模块(或者独立的ADC芯片)得到接入ADC管脚上的实际电压值?

    这个问题,是第一次接触ADC时候,大家都会遇到的问题. 会读到什么值 单片机会读到什么值?需要看一个特性,就是几位的ADC,在手册上就会给出,例如,STM32的ADC是12位的.另外,还有8位,10位 ...

  6. 树莓3b adc模块pcf8591

    上午玩通了三色灯,还不错,有个好的开始. 下午争取再玩通一个.在传感器堆里找,大多数都是do输出,或ao输出.如果是do输出,那没有什么玩的,就是一个gpio读高低电平,这个就没有多少意思.ao的接口 ...

  7. Aurix TC3xx系列MCU ADC模块简介(一)

    文章目录 1 前言 2 ADC模块简介(TC3xx) 1.1 ADC模块特点 1.2 转换器内部结构 1.3 转换时间 3 EDSADC模块简单介绍 >>返回总目录<< 1 前 ...

  8. 闲聊飞思卡尔ADC模块

     因为 ADC 模块是各种控制比较重要的功能模块,基本的保护算法都要考 ADC 的采样数据来执行,所以 ADC 模块还是要熟练掌握,今天我们就来学习下飞思卡尔的ADC模块,如果有猿友使用过m ...

  9. MC9S12XEP100 ADC模块使用总结

    概述 在调试ADC模块功能时,习惯性的在网上搜索中文资料.最后被这些中文资料坑了,最终还是看英文的Datasheet才解决这个问题,最后把ATD0和ATD1均调试出来了. 网上那些错误的描述: 错误1 ...

最新文章

  1. python怎么安装到d盘-python必须装在c盘吗
  2. C++ const成员Demo - Win32 版本
  3. Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
  4. 时钟源为什么会影响性能
  5. Pytorch 为什么每一轮batch需要设置optimizer.zero_grad
  6. Java Collections CheckedCollection()方法与示例
  7. linux磁盘满了之后清理
  8. 【java】Java泛型
  9. eCognition易康domain is empty原因
  10. android studio 导入第三方的jar包,add as library的位置
  11. 给 Android 开发者的 Kotlin 教程(一)
  12. AM437x——LED裸机
  13. Python 学习笔记 变量 xxx XXX
  14. 安卓测试二(Espresso)
  15. ios html调起高德地图,iOS开发笔记 调起本地地图导航(百度、高德、腾讯、苹果自带)...
  16. DeltaOne介绍
  17. 目标检测模型——One stage(YOLO v5的模型解析及应用)
  18. 【操作系统】RR算法
  19. html如何既能应用于pc端也能用于手机端_如何选择一个 vue ui 框架?
  20. VB.net版机房收费系统——结账功能实现(代码部分)

热门文章

  1. 中国软件杯 公共地点人流量计算的云监管平台 算法思路分享
  2. Qt C++ 源码 开发《打飞机游戏》
  3. 安卓pdf阅读器_提笔就写安卓阅读器,文石BOOX NOTE PRO轻体验
  4. 大一上学期计算机考试笔记,上大一波学霸笔记曝光 笔记本里的青春 有着努力的痕迹...
  5. 计算机等级考试电子邮件的附件在哪里查看,​计算机等级考试详解:电子邮箱的地址组成结构!...
  6. 【互动媒体】像素风画板
  7. swoft php怎么样,swoft 事件
  8. 【python 下载神器】你应该知道的下载神器you-get
  9. 操作符的相关知识(二)
  10. java计算机毕业设计springboot+vue医院碳排放管理平台系统