精华内容
下载资源
问答
  •  PIC16F877单片机内部嵌入的ADC模块具有10位数字量精度,共有8个模拟通道,与ADO模块有关的寄存器共有11个,其专用的4个寄存器分别为:ADCCON0、ADCCON1、ADRESH及ADRESL。  源阻抗(RS)和内部采样开
  •  (3)A/D模块初始化子程序,选择A/D转换通道,开A/D转换器并设定A/D转换时钟。  (4)软件延时自程序,空跑5535个系统周期。  (5)报警子程序,对PORTD端口进行操作。  (6)AD处理中断服务子程序...
  • 摘要:数字信号处理器TMS320F2812片上ADC模块的转化结果往往存在较大误差,最大误差甚至会高达9%,如果这样直接在实际工程应用ADC,必然造成控制精度降低。对此提出了一种改进校正方法,即用最小二乘和一元线性...
  • 如何提高DSP的ADC

    2021-01-19 18:55:20
    摘要:数字信号处理器TMS320F2812片上ADC模块的转化结果往往存在较大误差,误差甚至会高达9%,如果这样直接在实际工程应用ADC,必然造成控制精度降低。对此提出了一种改进校正方法,即用二乘和一元线性回归思想,...
  • (1)外围模块主要指集成在DSP内部各功能单元,DSP有丰富外设资源。本系统用到主要模块有事件管理器A、数模转换单元(ADC)、外部扩展存储器单元及SCI通信模块。事件管理器(EVA)初始化 事件管理器A(EVA)是...
  • 在此提出一种采用最小二乘法和线性回归校正DSP的ADC模块的方法,实验证明此方法可以大大提高转化精度,有效弥补了DSP中AD转化精度不高的缺陷。此方法硬件电路简单,成本代价较低,具有很高的推广和利用价值。
  • 如何提高DSP的ADC精度

    2020-10-22 12:34:24
    数字信号处理器TMS320F2812片上ADC模块的转化结果往往存在较大误差,最大误差甚至会高达9%,如果这样直接在实际工程应用ADC,必然造成控制精度降低。对此提出了一种改进校正方法,即用最小二乘和一元线性回归...
  • DSP学习之ADC补充说明

    千次阅读 2019-04-29 11:51:29
    一、排序器覆盖功能 排序器工作在连续自动...在连续运行模式下,ADC模块将转换结果存放到结果寄存器ADCRESULTn,在一个转换序列完成后,排序器自动返回0,即排序器SEQ1和级联排序器指针返回CONV00,SEQ2指针返...

    一、排序器的覆盖功能

    排序器工作在连续的自动排序模式下:
    AdcRegs.ADCTRL1.bit.CONT_RUN=1;
    排序器工作在启动/停止模式下:
    AdcRegs.ADCTRL1.bit.CONT_RUN=0;

    在连续运行模式下,ADC模块将转换结果存放到结果寄存器ADCRESULTn中,在一个转换序列完成后,排序器自动返回0,即排序器SEQ1和级联排序器指针返回CONV00,SEQ2指针返回CONV08。但使用排序器覆盖功能时,排序器的自动返回可通过软件控制,通过控制寄存器ADCTRL1.SEQ_OVRD位的置位,
    AdcRegs.ADCTRL1.bit.SEQ_OVRD=1;
    排序器更新MAX_CONV1个结果寄存器后不再回绕到0,而是继续增加,直到ADCRESULT15为止,当ADCRESULT15更新完毕,再返回到0.
    注这个特点将结果寄存器看作了FIFO,用于ADC对连续数据的捕捉。

    二、ADC的时钟控制

    ADC时钟频率ADCCLK:是F283x的高速外设时钟HSPCLK通过控制寄存器ADCTRL3的ADCCLKPS来分频的,再通过控制寄存器ADCTRL1的CPS位来分频的。
    分频公式为:
    ADCCLK=HSPCLK/2*ADCCLKPS/CPS+1
    ADCCLKPS[3~0]分频系数可达1-30;CPS分频系数为1和2,当CPS=0,不分频;当CPS=1,二分频。

    注意,ADC模块通过控制寄存器ADCTRL1的ACQ_PS[3~0]扩展采样获取周期,来延长转换脉冲SOC的宽度,增加采样时间的长度,SOC脉冲宽度为:
    (ACQ_PS+1)/ADCCLK
    e.g:AdcRegs.ADCTRL1.bit.ACQ_PS=7; //SOC脉冲宽度等于8个ADCCLK周期。

    展开全文
  • TMS320F2812是高精度的DSP,其运算速度快,工作时钟频率达150 MHz,指令周期可达6.67 ns以内,低功耗(核心电压1.8 V,I/O口电压3.3 V)。采用哈佛总线结构,具有强大操作能力、迅速中断响应和处理能力以及统一...
  • DSP-ADC

    千次阅读 2016-04-11 21:31:13
    ADC模块一般都是非常昂贵,但是有时候我们必须要转换好几个信号,可是这样就需要接多个模数芯片,这样是非常昂贵,所以一般都是采用分时复用。在F28335通过多时复用产生了16个输入通道。只有一个转换器肯定不...

    F28335内部集成了一块ADC转换模块。核心是一个12位精度的模数转换器。ADC模块一般都是非常昂贵的,但是有时候我们必须要转换好几个信号,可是这样就需要接多个模数芯片,这样是非常昂贵的,所以一般都是采用分时复用。在F28335中通过多时复用产生了16个输入通道。只有一个转换器肯定不可能同时进行16路转换,此时就是时间换资源,并且在内部还有两个采样保持器,这两个采样保持器肯定也不可能同转换,也是分时的。ADCAIN0~ADCAIN7的某个端口,比如ADCAIN4采到的电压,先存入S/H-A,ADCBIN0~ADCBIN7的某个端口,比如ADCBIN3采到的电压,先存入S/H-B,然后S/H-A的结果传到转换核心进行转换,结果存到Result Reg 0中,S/H-B的结果传到转换核心进行转换,结果存到Result Reg 1中,然后继续进行别的转换。而转换的顺序则是由两个排序器决定的。比如可以A0->A5->A2->A0->A1等等,当ADC接收到触发源的开始转换信号(SOC)就根据排序器自动完成多路转换,转换的结果也是依次存入结果寄存器中。
    这里写图片描述
    ADC有多个触发源可以启动转换(SOC)
    1.S/W-软件立即启动
    2.外部引脚
    3.ePWMx SOCA启动
    4.ePWMx SOCB启动
    而且允许每个或者每隔一个序列转换结束就可以产生中断,方便读取数据。

    最后上一个官方例程吧

    //###########################################################################
    // Description
    //! \addtogroup f2833x_example_list
    //! <h1> ADC Start of Conversion (adc_soc)</h1>
    //!
    //! This ADC example uses ePWM1 to generate a periodic ADC SOC on SEQ1.
    //! Two channels are converted, ADCINA3 and ADCINA2.
    //!
    //! \b Watch \b Variables \n
    //! - Voltage1[10]  - Last 10 ADCRESULT0 values
    //! - Voltage2[10]  - Last 10 ADCRESULT1 values
    //! - ConversionCount   - Current result number 0-9
    //! - LoopCount     - Idle loop counter
    //
    //
    //###########################################################################
    // $TI Release: F2833x/F2823x Header Files and Peripheral Examples V141 $
    // $Release Date: November  6, 2015 $
    // $Copyright: Copyright (C) 2007-2015 Texas Instruments Incorporated -
    //             http://www.ti.com/ ALL RIGHTS RESERVED $
    //###########################################################################
    
    #include "DSP28x_Project.h"     // Device Headerfile and Examples Include File
    
    // Prototype statements for functions found within this file.
    __interrupt void adc_isr(void);
    
    // Global variables used in this example:
    Uint16 LoopCount;
    Uint16 ConversionCount;
    Uint16 Voltage1[10];
    Uint16 Voltage2[10];
    
    main()
    {
    // Step 1. Initialize System Control:
    // PLL, WatchDog, enable Peripheral Clocks
    // This example function is found in the DSP2833x_SysCtrl.c file.
       InitSysCtrl();
    
       EALLOW;
       #if (CPU_FRQ_150MHZ)     // Default - 150 MHz SYSCLKOUT
         #define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3)   = 25.0 MHz
       #endif
       #if (CPU_FRQ_100MHZ)
         #define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2)   = 25.0 MHz
       #endif
       EDIS;
    
       // Define ADCCLK clock frequency ( less than or equal to 25 MHz )
       // Assuming InitSysCtrl() has set SYSCLKOUT to 150 MHz
       EALLOW;
       SysCtrlRegs.HISPCP.all = ADC_MODCLK;
       EDIS;
    
    // Step 2. Initialize GPIO:
    // This example function is found in the DSP2833x_Gpio.c file and
    // illustrates how to set the GPIO to it's default state.
    // InitGpio();  // Skipped for this example
    
    // Step 3. Clear all interrupts and initialize PIE vector table:
    // Disable CPU interrupts
       DINT;
    
    // Initialize the PIE control registers to their default state.
    // The default state is all PIE interrupts disabled and flags
    // are cleared.
    // This function is found in the DSP2833x_PieCtrl.c file.
       InitPieCtrl();
    
    // Disable CPU interrupts and clear all CPU interrupt flags:
       IER = 0x0000;
       IFR = 0x0000;
    
    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    // This will populate the entire table, even if the interrupt
    // is not used in this example.  This is useful for debug purposes.
    // The shell ISR routines are found in DSP2833x_DefaultIsr.c.
    // This function is found in DSP2833x_PieVect.c.
       InitPieVectTable();
    
    // Interrupts that are used in this example are re-mapped to
    // ISR functions found within this file.
       EALLOW;  // This is needed to write to EALLOW protected register
       PieVectTable.ADCINT = &adc_isr;
       EDIS;    // This is needed to disable write to EALLOW protected registers
    
    // Step 4. Initialize all the Device Peripherals:
    // This function is found in DSP2833x_InitPeripherals.c
    // InitPeripherals(); // Not required for this example
       InitAdc();  // For this example, init the ADC
    
    // Step 5. User specific code, enable interrupts:
    
    // Enable ADCINT in PIE
       PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
       IER |= M_INT1; // Enable CPU Interrupt 1
       EINT;          // Enable Global interrupt INTM
       ERTM;          // Enable Global realtime interrupt DBGM
    
       LoopCount = 0;
       ConversionCount = 0;
    
    // Configure ADC
       AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;//顺序采样方式
       AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;//ADC工作25Mhz,不再分频
       AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1通道模式,级联
       AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run
    
       AdcRegs.ADCMAXCONV.all = 0x0001;       // Setup 2 conv's on SEQ1
       AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x3; // Setup ADCINA3 as 1st SEQ1 conv.
       AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x2; // Setup ADCINA2 as 2nd SEQ1 conv.
       AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;// Enable SOCA from ePWM to start SEQ1
       AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;  // Enable SEQ1 interrupt (every EOS)
    
    // Assumes ePWM1 clock is already enabled in InitSysCtrl();
       EPwm1Regs.ETSEL.bit.SOCAEN = 1;        // Enable SOC on A group
       EPwm1Regs.ETSEL.bit.SOCASEL = 4;       // Select SOC from from CPMA on upcount
       EPwm1Regs.ETPS.bit.SOCAPRD = 1;        // Generate pulse on 1st event
       EPwm1Regs.CMPA.half.CMPA = 0x0080;     // Set compare A value
       EPwm1Regs.TBPRD = 0xFFFF;              // Set period for ePWM1
       EPwm1Regs.TBCTL.bit.CTRMODE = 0;       // count up and start
    
    // Wait for ADC interrupt
       for(;;)
       {
          LoopCount++;
       }
    }
    
    __interrupt void  adc_isr(void)
    {
      Voltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4;
      Voltage2[ConversionCount] = AdcRegs.ADCRESULT1 >>4;
    
      // If 40 conversions have been logged, start over
      if(ConversionCount == 9)
      {
         ConversionCount = 0;
      }
      else
      {
          ConversionCount++;
      }
    
      // Reinitialize for next ADC sequence
      AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;         // Reset SEQ1
      AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;       // Clear INT SEQ1 bit
      PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;   // Acknowledge interrupt to PIE
    
      return;
    }
    
    
    
    
    展开全文
  • 其中,数据采集部分尤为重要,而传统数据采集系统,通常采用单片机或DSP作为控制器,用以控制ADC、存储器和其他外围电路工作,使得采集速度和效率降低。近年来,微电子技术,如:大规模集成电路和超大规模集成...
  • 1. 实验任务  利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,但要求... c) 把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。  d
  • 摘 要:在信号处理过程中,自然界模拟信号首先要经过A/D转换器(ADC)变换成数字信号,送到DSP中。文章设计了一种高精度转换序列发生器,能分别单独处理8位数据,并行后能处理16位数据。这意味着ADC每收到一个...
  • 为了提高系统供电电源可靠性,本文以集成有eCAN模块ADC采集模块的TMS320F2812数字信号处理器作为核心控制器,提出一种直流电源供电系统设计方法。该系统可通过对系统电压、电流参数实时监控和对过流、欠压...
  • 1.4.1 ADC 模块时钟和采样频率............................................ 27 1.5 低功率模式.......................................................... 27 1.6 上电顺序.......................................
  • 折叠ADC 折叠或插值ADO使用了多个“折叠模块”,如图1所示。其中高有效位由低精度转换器产生,而低有效位利用取模规则确定。利用插值可减少折叠模块,同时保证给定精度。一个折叠模块包含N个耦合差分对,其输出...
  •  A/D转换器是连接模拟信号与数字信号的桥梁,现有单片机芯片通常都内置有ADC模块,A/D采样值通常以字节的形式存储在片内存储器中。对RAM或Flash中的A/D采样数据绘图,调试过程中先在存储结束处设置断点,然后把存储...
  • 单片机即单片微型计算机简称,它是将CPU、ROM、RAM、TIMER/COUNTER以及输入/输出接口(I/O)等集成在一块超大规模集成电路芯片上而制成,有些单片机还集成了模数转换器(ADC)、脉宽调制模块(PWM)、通讯接口等...
  • 引言 ADmC812是ADI公司以8051(8052)内核为控制核心新型微转换器。由于ADmC812内部集成了大量外围设备。它本身就是一个完全可编程、自...在这个系统,ADmC812作为主机,完成ADC、DAC、显示、键盘等功能,而DS
  • 逐次逼近ADC 逐次逼近转换器在中档应用很流行。如图1所示,逐次逼近ADO包含一个逐次比较寄存器(SAR)、比较器和DAC。SAR产生单向递增二进制序列(斜坡信号),这个数字斜坡信号由DAC转换为离散时间(模拟)...
  • 引言 ADmC812是ADI公司以8051(8052)内核为控制核心新型微转换器。由于ADmC812内部集成了大量外围设备。它本身就是一个完全可编程、自...在这个系统,ADmC812作为主机,完成ADC、DAC、显示、键盘等功能,而D
  • 此外AT89C5131还集成了10位的ADC、I2C总线接口和PCA模块等丰富的外设。  AT89C5131的USB2.0全速从接口的结构如图3所示,其包括USB D+/D-的接口缓冲,数字锁相环,串行接口引擎(SIE)和通用功能接口(UFI)。其中...
  • 在设计现场数据采集模块的过程,经过对众多数据采集处理芯片分析比较,选用了ADuC841 作为数据采集核心芯片,相比于早期ADuC81x 系列,它在速度大幅度提升片内集成功能、器件可靠性和功耗等方面都达到了...
  • ADC模块是一个12位、具有流水线结构模数转换器,内置双采样保持器(S/H),可多路选择16通道输入,快速转换时间运行在25 MHz、ADC时钟或12.5 Msps,16个转换结果寄存器可工作于连续自动排序模式或启动/停止模式。...
  • Innovative国际在加州Simi Valley推出X5-GSPS,包括一个XMC I/O模块,一个NS8位双通道ADC08D1500 AD转换器,同时还包括赛灵思Virtex5 SX95T FPGA,512MBDDR2内存,4MBQDR-II内存,以及一个八通道PCI-E主机接口...
  • 它在性能、价格、功耗和实时性方面树立了一个新标杆,集成了Cortex-M3内核,以及双ADC、多用途通用时钟TIMx、RTC、I2C、SPI、UART、CAN、DMA、USB等丰富外设。其功耗在全速72MHz所有模块都打开时也仅仅为36 mA...
  • 该板卡上共集成了8个同相ADC处理模块,最高速率达到105MHz。VHS-ADC-V4使用了Xilinx公司高性能Virtex-4 FPGA芯片,可以承担更高速信号处理任务。板载SDRAM用于信号存储,并且提供了扩展子卡连接端口,可以...
  • 片上有丰富片内外设,根据型号不同,包括ADC、DAC、UART、捕捉/比较模块的可编程计数器/定时器阵列、SPI、SMBus等。  C8051Fxxx单片机有大容量Flash存储器,用于程序代码和非易失性数据存储,可在系统编程。...
  • 其中,标准接口用于BSW各个模块之间通信,已用C语言定义,如void Adc_Init(const Adc_ConfigType* ConfigPtr)。AUTOSAR接口用于软件构件(SW-C)之间通信或者软件构件和ECU固件(IO硬件抽象、复杂设备驱动)之间...

空空如也

空空如也

1 2 3 4 5 6
收藏数 108
精华内容 43
关键字:

dsp中的adc模块