笔者使用过的项目中,使用的ADC都是DSP的片内ADC,使用片内ADC的好处是,转换速度快,节约成本,这是相比片外ADC的优势。

DSP_28069的ADC精度是12位,DSP_28377D的ADC精度可以选择为12位,也可以选择为16位,笔者这里采用的是12位,两种DSP的采样模式都是单端模式。

DSP的ADC采样精度和参考电压有很大的关系,一般选择外部参考电压,参考电压一定要加RC滤波电路。

计算公式如下:

关于ADC其他方面的原理,这里就不作介绍了,如果读者想了解更多,可以搜搜其他博客看看。

笔者在项目中使用ADC,基本上只涉及以下几个方面:

  • ADC的初始化

ADC初始化,主要分为两个部分,ADC的模式选择,(精度模式、采样方式(差分或单端)),中断触发时刻,使能中断等。

void InitAdcPart1(void)
{EALLOW;SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;(*Device_cal)();EDIS;EALLOW;AdcRegs.ADCCTL1.bit.ADCBGPWD  = 1;      // Power ADC BGAdcRegs.ADCCTL1.bit.ADCREFPWD = 1;      // Power referenceAdcRegs.ADCCTL1.bit.ADCPWDN   = 1;      // Power ADCAdcRegs.ADCCTL1.bit.ADCENABLE = 1;      // Enable ADCAdcRegs.ADCCTL1.bit.ADCREFSEL = 1;      // External VREFHI or VREFLO pins used for             //reference generationEDIS;DELAY_US(1000L);         // Delay before converting ADC channelsEALLOW;AdcRegs.ADCCTL2.bit.CLKDIV2EN = 0;  //ADCCLK = SYSCLK = 80MhzEDIS;DELAY_US(1000L);         // Delay before converting ADC channels
}void InitAdcPart2(void)
{EALLOW;AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1; // Overlap of sample is not allowedAdcRegs.ADCSAMPLEMODE.all = 0;          //  Single sample mode//物理采样通道选择AdcRegs.ADCSOC0CTL.bit.CHSEL = 0;  //ADCINA0AdcRegs.ADCSOC1CTL.bit.CHSEL = 1;AdcRegs.ADCSOC2CTL.bit.CHSEL = 2;AdcRegs.ADCSOC3CTL.bit.CHSEL = 3;AdcRegs.ADCSOC4CTL.bit.CHSEL = 4;AdcRegs.ADCSOC5CTL.bit.CHSEL = 5;AdcRegs.ADCSOC6CTL.bit.CHSEL = 6;AdcRegs.ADCSOC7CTL.bit.CHSEL = 7;  //ADCINA7AdcRegs.ADCSOC8CTL.bit.CHSEL = 8;  //ADCINB0AdcRegs.ADCSOC9CTL.bit.CHSEL = 9;AdcRegs.ADCSOC10CTL.bit.CHSEL= 10;AdcRegs.ADCSOC11CTL.bit.CHSEL= 11;AdcRegs.ADCSOC12CTL.bit.CHSEL= 12;AdcRegs.ADCSOC13CTL.bit.CHSEL= 13;AdcRegs.ADCSOC14CTL.bit.CHSEL= 14;AdcRegs.ADCSOC15CTL.bit.CHSEL= 15;  //ADCINB7//采样保持时间//Sample window =(19 + 1 clock cycles).AdcRegs.ADCSOC0CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC1CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC2CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC3CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC4CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC5CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC6CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC7CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC8CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC9CTL.bit.ACQPS  = 19;AdcRegs.ADCSOC10CTL.bit.ACQPS = 19;AdcRegs.ADCSOC11CTL.bit.ACQPS = 19;AdcRegs.ADCSOC12CTL.bit.ACQPS = 19;AdcRegs.ADCSOC13CTL.bit.ACQPS = 19;AdcRegs.ADCSOC14CTL.bit.ACQPS = 19;AdcRegs.ADCSOC15CTL.bit.ACQPS = 19;//ADC触发源//4//set SOC0 start trigger on XIN2AdcRegs.ADCSOC0CTL.bit.TRIGSEL  = 4;  //4;//  // 5 set SOC0 start trigger on EPWM1AAdcRegs.ADCSOC1CTL.bit.TRIGSEL  = 4; //4;AdcRegs.ADCSOC2CTL.bit.TRIGSEL  = 4; //4;AdcRegs.ADCSOC3CTL.bit.TRIGSEL  = 4; //4;AdcRegs.ADCSOC4CTL.bit.TRIGSEL  = 4; //4;AdcRegs.ADCSOC5CTL.bit.TRIGSEL  = 4; //4;AdcRegs.ADCSOC6CTL.bit.TRIGSEL  = 4; //4;AdcRegs.ADCSOC7CTL.bit.TRIGSEL  = 4; //4;AdcRegs.ADCSOC8CTL.bit.TRIGSEL  = 4; //4;AdcRegs.ADCSOC9CTL.bit.TRIGSEL  = 4; //4;AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 4; //4;AdcRegs.ADCSOC11CTL.bit.TRIGSEL = 4; //4;AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 4; //4;AdcRegs.ADCSOC13CTL.bit.TRIGSEL = 4; //4;AdcRegs.ADCSOC14CTL.bit.TRIGSEL = 4; //4;AdcRegs.ADCSOC15CTL.bit.TRIGSEL = 4; //4;EDIS;}void InitAdcINT(void)
{EALLOW;AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;   // ADCINT1 trips after AdcResults latchAdcRegs.INTSEL1N2.bit.INT1CONT  = 0;    // Disable ADCINT1 Continuous modeAdcRegs.INTSEL1N2.bit.INT1SEL     = 15;   // EOC15 is trigger for ADCINT1EALLOW;
}void EnableAdcInterrupt(void)
{EALLOW;AdcRegs.INTSEL1N2.bit.INT1E   = 1; // Enabled ADCINT1EDIS;
}

ADC的触发源,即表示如何启动ADC转换,一般用PWM启动ADC,或者外部GPIO启动ADC,比如FPGA外部触发ADC。

  • ADC转换的结果ADCRESULT

ADCRESULT表示数据采集的源头,各种电压电流,都是通过这个公式(ADCRESULT - 零漂)* 系数而得到的。

  • ADC的转换完成后触发的中断

ADC触发的中断,一般是整个DSP系统中的主中断,这个中断里会运行一些数据采集、算法、故障保护等实时性要求比较高的函数。

void InitInterrupt(void)
{EALLOW;  // This is needed to write to EALLOW protected registerPieVectTable.ADCINT1   = &Interrupt_Adc1;EDIS;    // This is needed to disable write to EALLOW protected registersPieCtrlRegs.PIEIFR1.bit.INTx1 = 0;PieCtrlRegs.PIEIER1.bit.INTx1 = 1;  // Enable   ADC1 INT 1.1 in the PIEPieCtrlRegs.PIEACK.all = 0x0FFF;        //set all ack to 0}__interrupt void  Interrupt_Adc1(void)
{ServeMainInt();AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;      //Clear ADCINT1 flag reinitialize //for next SOCPieCtrlRegs.PIEACK.all |= PIEACK_GROUP1;  // Acknowledge interrupt to PIE}

Ti的C28x系列的DSP(28069)(28377)使用经验,ADC经验相关推荐

  1. Ti的C28x系列的DSP使用经验,如何整合DSP中运行的函数。

    我从事Ti的C28x系列的DSP的开发时间不长,短短一年,使用过两种架构的DSP,主要针对资源管理有一些自己的心得. 在工程文件的分布上,本人认为需要DSP运行的的代码应该放在一个.C文件中管理,这样 ...

  2. Ti的C28x系列的DSP(28069)使用经验,I2C与EEPROM(AT24C256C)

    本人正式使用I2C的经历只有一次,使用EEPROM是为了实现DSP的RAM中的变量断电后仍不会丢失的目的.这可能不是一个恰当的比喻.下面我来详细描述EEPROM的过程. 项目中使用的EEPROM的型号 ...

  3. TI的C28x系列芯片的存储结构(1)——总括

    C28x内核为哈佛结构,程序储存和数据储存分开,使用32位数据地址和22位程序地址.这样总地址可以达到:在数据空间中存储4G个字(1个字= 16位),在程序空间中存储4M个字.C28x的程序和数据空间 ...

  4. 二、TI毫米波雷达系列——IWR6843 DSP系统内存结构

    DSP系统结构: 1)IWR6843的DSS的核心是600MHz的C674xDSP核,客户可以编程运行雷达信号处理算法.DSP本地有两级内存(L1和L2).L1(32KBL1D.32KBL1P)以60 ...

  5. TI的C28x系列芯片的存储结构(2)——CLA的RAM

    CLA有自己的程序和数据总线,它的RAM存储区分三种:程序RAM(program RAM).数据RAM(data RAM)和信号RAM(message RAM). ①program RAM CLA的程 ...

  6. [解疑][TI]TI毫米波雷达系列(一):Texas Instruments德州仪器 相关软件安装及使用时问题汇总,持续更新......

    德州仪器 (Texas Instruments),简称TI,是全球领先的半导体公司,为现实世界的信号处理提供创新的数字信号处理(DSP)及模拟器件技术.除半导体业务外,还提供包括传感与控制.教育产品和 ...

  7. 基于TI AM5728(浮点双DSP C66x +双ARM Cortex-A15)的开发板

    开发板简介 基于TI AM5728浮点双DSP C66x +双ARM Cortex-A15工业控制及高性能音视频处理器: 多核异构CPU,集成双核Cortex-A15.双核C66x浮点DSP.双核PR ...

  8. 信迈TI OMAP-L138(定点/浮点DSP C674x+ARM9) + Xilinx Spartan-6 FPGA开发板规格书

    1 评估板简介 基于TI OMAP-L138(定点/浮点 DSP C674x+ARM9)+ Xilinx Spartan-6 FPGA处理器: OMAP-L138 FPGA 通过uPP.EMIFA.I ...

  9. STM8S系列基于IAR开发单通道ADC连续采样示例

    STM8S系列基于IAR开发单通道ADC连续采样示例

最新文章

  1. Spring+MyBatis
  2. Java 时间 Date类型,Long类型,String类型
  3. BZOJ 1226: [SDOI2009]学校食堂Dining [DP 状压]
  4. 软件稳定性测试的测试点
  5. 微软借Bletchley项目将云计算信息加入区块链
  6. HH SaaS电商系统的销售订单毛利润模块设计
  7. 东北大学c语言真题及答案,东北大学C语言总测试题(含答案).pdf
  8. 内外网切换软件_不需要软件,用命令简单实现内外网切换指定网段走哪条线路...
  9. 世界摩天大楼2009年排名
  10. 基于SSM的医学健康网站
  11. 将计算机知识应用于生活中,电脑知识在生活中的灵活运用(6页)-原创力文档...
  12. 中国电网计算机面试题目,国家电网面试经验
  13. php读取excel显示,PHP读取Excel并展示实现代码
  14. 微信、米聊等国内kik类手机通信录互动应用前景探讨
  15. 解决Veil—Evasion安装中git clone导致失败的问题
  16. optionnally mysql_关于Tomcat与MySQL连接池问题的解析!
  17. 计算机鼠标双击怎么,鼠标双击变成属性怎么办 鼠标双击变成属性解决办法【详解】...
  18. Android rom开发:recovery取消校验Vbmeta version和framework matrix
  19. 产生分类中的双月问题的数据集
  20. Linux中的各种栈:进程栈 线程栈 内核栈 中断栈

热门文章

  1. 前端阿拉伯数字转为汉字的方法
  2. 根据ip获取服务器详细信息,服务器根据ip获取地址
  3. MPC 101:安全多方计算与多方签名
  4. Allegro使用技巧(3)----PCB规则检查
  5. 【赏】svg添加箭头绘制路径运动
  6. JS如何判断数据类型
  7. Ubuntu系统下查看显卡相关信息
  8. Project:解决问题:紧后任务开始日期不随着紧前任务变化
  9. java计算机毕业设计知道特产网源程序+mysql+系统+lw文档+远程调试
  10. 【冀宝er要逆袭】HDU-4287-Intelligent IME