sunsundsp 发表于 2013-7-31 10:35

【疑问】当2812采用外扩ad芯片时,是不是不用对ad寄存器进行定义??

在看2812采用外扩的ad芯片ads8556采集数据的例子程序时,没有发现对ad寄存器的一些定义,
是不是不用定义呢?

zhangmangui 发表于 2013-7-31 10:48

外扩AD芯片的使用应该是不用寄存器的配置工作   你只需给AD芯片采集使能然后读取相应的数据就可以了
为什么要外扩2812自带的AD口不够用吗还是AD采集精度不够

sunsundsp 发表于 2013-7-31 10:59

zhangmangui 发表于 2013-7-31 10:48 static/image/common/back.gif
外扩AD芯片的使用应该是不用寄存器的配置工作   你只需给AD芯片采集使能然后读取相应的数据就可以了
为 ...

我能说 领导给我的板子就是用外扩的吗············

zhangmangui 发表于 2013-7-31 11:02

sunsundsp 发表于 2013-7-31 10:59 static/image/common/back.gif
我能说 领导给我的板子就是用外扩的吗············

那就只能说明2812自带的AD精度不太好

zhangmangui 发表于 2013-7-31 11:07

看了一下是需要配置相应的寄存器的中文资料
http://www.doc88.com/p-218794600471.html

sunsundsp 发表于 2013-8-1 10:33

zhangmangui 发表于 2013-7-31 11:07 static/image/common/back.gif
看了一下是需要配置相应的寄存器的中文资料
http://www.doc88.com/p-218794600471.html ...

我看了,只有控制寄存器CR,但是CR在硬件模式下很多位不是是无效的吗?

sunsundsp 发表于 2013-8-1 10:34

zhangmangui 发表于 2013-7-31 11:07 static/image/common/back.gif
看了一下是需要配置相应的寄存器的中文资料
http://www.doc88.com/p-218794600471.html ...

这是这个采样程序的主程序,在里面我就看到了一些定时中断和采样的过程,完全没看到寄存器的影子


/**********************************************************************
* File: nain_nonBIOS.c
* Devices: TMS320F2812, TMS320F2811, TMS320F2810
* Author: Saber, ICETEK.
* History:
*   2010/04/07 - original
**********************************************************************/
#include "DSP281x_Device.h"
#include "example_nonBIOS.h"                                       

//if you want to run in FLASH:
//1.Enable the define "EXAMPLE_FLASH"
//2.Remove "F2812_nonBIOS_RAM.cmd"
//3.Add the "F2812.cmd"

//#define EXAMPLE_FLASH   

#define StartCpuTimer0()CpuTimer0Regs.TCR.bit.TSS = 0
#define ADSmple 2048
#define AD_CONVST   (*((Uint16 *)0x2800))
#define AD_CHIPSEL0 (*((Uint16 *)0x2200))
#define AD_CHIPSEL1 (*((Uint16 *)0x2000))

#pragma DATA_SECTION(ADSampleResult0,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult1,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult2,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult3,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult4,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult5,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult6,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult7,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult8,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult9,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult10,"GlobalVar");
#pragma DATA_SECTION(ADSampleResult11,"GlobalVar");
int ADSampleResult0;                          //AD通道0数据
int ADSampleResult1;                          //AD通道1数据
int ADSampleResult2;                          //AD通道2数据
int ADSampleResult3;                          //AD通道3数据
int ADSampleResult4;                          //AD通道4数据
int ADSampleResult5;                          //AD通道5数据
int ADSampleResult6;                          //AD通道0数据
int ADSampleResult7;                          //AD通道1数据
int ADSampleResult8;                          //AD通道2数据
int ADSampleResult9;                          //AD通道3数据
int ADSampleResult10;                          //AD通道4数据
int ADSampleResult11;                          //AD通道5数据
void User_Init(void);
interrupt void cpu_timer0_isr(void);
Uint16 Count = 0;
/**********************************************************************
* Function: main()
*
* Description: Main function for F281x example.
**********************************************************************/
void main(void)
{
    /*** CPU Initialization ***/
    InitSysCtrl();                //Initialize the CPU (FILE: SysCtrl.c)
    DINT;
    IER = 0x0000;        // Disable CPU interrupts
    IFR = 0x0000;        // Clear all CPU interrupt flags
    InitXintf();                //Initialize the external memory interface (FILE: Xintf.c)
    //InitGpio();                // Initialize the shared GPIO pins (FILE: Gpio.c)
    InitPieCtrl();                // Initialize and enable the PIE (FILE: PieCtrl.c)
    InitEv();                        // Initialize the EV(FILE: Ev.c)--And initialize the Timer1
    InitCpuTimers();        // Initialize the time (FILE: DSP281x_CpuTimers.c)       
   
    #ifdef EXAMPLE_FLASH
    MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
    InitFlash();
    #endif
   
    EALLOW;                                // This is needed to write to EALLOW protected registers
    PieVectTable.TINT0 = &cpu_timer0_isr;//timer0中断服务子程序重定位
    EDIS;                           // This is needed to disable write to EALLOW protected registers
    IER |= M_INT1;                // EV Interrupt
    IFR &= 0x0000;                //Clear all interrupt flag
    // Enable TINT0 in the PIE: Group 1 interrupt 7
    PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
   
    //SetDBGIER(IER);                // Configure the DBGIER for realtime debug      
    EINT;                                // Enable global interrupts and realtime debug
    //asm(" CLRC INTM, DBGM");
    StartCpuTimer0();
   
    /*** Main Cycle ***/
    while(1)
    {
      ;
    }
}// End of main

interrupt void cpu_timer0_isr(void)
{
    if(Count < ADSmple)
          {
      AD_CONVST=0xf;//停止AD转换 准备读出AD通道数据
      ADSampleResult0=AD_CHIPSEL0;
      ADSampleResult1=AD_CHIPSEL0;
      ADSampleResult2=AD_CHIPSEL0;
      ADSampleResult3=AD_CHIPSEL0;
      ADSampleResult4=AD_CHIPSEL0;
      ADSampleResult5=AD_CHIPSEL0;
      
      ADSampleResult6=AD_CHIPSEL1;
      ADSampleResult7=AD_CHIPSEL1;
      ADSampleResult8=AD_CHIPSEL1;
      ADSampleResult9=AD_CHIPSEL1;
      ADSampleResult10=AD_CHIPSEL1;
      ADSampleResult11=AD_CHIPSEL1;
         
      AD_CONVST=0x0;        //重新启动AD转换
      Count++;
          }   
          else
          {
              Count = 0;
          }
   
          PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
/*** end of file ***/

zhangmangui 发表于 2013-8-1 10:51

sunsundsp 发表于 2013-8-1 10:34 static/image/common/back.gif
这是这个采样程序的主程序,在里面我就看到了一些定时中断和采样的过程,完全没看到寄存器的影子




从程序中确实没有看到配置寄存器   只是CPU定时器定时采样并采集完重启ADC   准备下次采样

sunsundsp 发表于 2013-8-1 13:20

zhangmangui 发表于 2013-8-1 10:51 static/image/common/back.gif
从程序中确实没有看到配置寄存器   只是CPU定时器定时采样并采集完重启ADC   准备下次采样 ...

现在我想把采集到的数据进行FFT处理,不知该如何下手

吃狼的肉肉 发表于 2015-6-5 10:13

本帖最后由 吃狼的肉肉 于 2015-6-5 10:22 编辑

我现在在做用2812外扩ads8556采集数据然后进行fft的课题 也遇到相似问题 求救楼主!可能的话加个qq呗或者有做过的大神求助。我QQ:549690706

吃狼的肉肉 发表于 2015-6-5 10:45

sunsundsp 发表于 2013-8-1 13:20
现在我想把采集到的数据进行FFT处理,不知该如何下手

我现在在做用2812外扩ads8556采集数据然后进行fft的课题 也遇到相似问题 求救楼主!可能的话加个qq呗549690706
页: [1]
查看完整版本: 【疑问】当2812采用外扩ad芯片时,是不是不用对ad寄存器进行定义??