打印
[寄存器]

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

[复制链接]
2736|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunsundsp|  楼主 | 2013-7-31 10:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhangmangui| | 2013-7-31 10:48 | 只看该作者
外扩AD芯片的使用应该是不用寄存器的配置工作   你只需给AD芯片采集使能  然后读取相应的数据就可以了
为什么要外扩  2812自带的AD口不够用吗  还是AD采集精度不够

使用特权

评论回复
板凳
sunsundsp|  楼主 | 2013-7-31 10:59 | 只看该作者
zhangmangui 发表于 2013-7-31 10:48
外扩AD芯片的使用应该是不用寄存器的配置工作   你只需给AD芯片采集使能  然后读取相应的数据就可以了
为 ...

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

使用特权

评论回复
地板
zhangmangui| | 2013-7-31 11:02 | 只看该作者
sunsundsp 发表于 2013-7-31 10:59
我能说 领导给我的板子就是用外扩的吗············

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

使用特权

评论回复
5
zhangmangui| | 2013-7-31 11:07 | 只看该作者
看了一下  是需要配置相应的寄存器的  中文资料
http://www.doc88.com/p-218794600471.html

使用特权

评论回复
6
sunsundsp|  楼主 | 2013-8-1 10:33 | 只看该作者
zhangmangui 发表于 2013-7-31 11:07
看了一下  是需要配置相应的寄存器的  中文资料
http://www.doc88.com/p-218794600471.html ...

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

使用特权

评论回复
7
sunsundsp|  楼主 | 2013-8-1 10:34 | 只看该作者
zhangmangui 发表于 2013-7-31 11:07
看了一下  是需要配置相应的寄存器的  中文资料
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[ADSmple];                          //AD通道0数据
int ADSampleResult1[ADSmple];                          //AD通道1数据
int ADSampleResult2[ADSmple];                          //AD通道2数据
int ADSampleResult3[ADSmple];                          //AD通道3数据
int ADSampleResult4[ADSmple];                          //AD通道4数据
int ADSampleResult5[ADSmple];                          //AD通道5数据
int ADSampleResult6[ADSmple];                          //AD通道0数据
int ADSampleResult7[ADSmple];                          //AD通道1数据
int ADSampleResult8[ADSmple];                          //AD通道2数据
int ADSampleResult9[ADSmple];                          //AD通道3数据
int ADSampleResult10[ADSmple];                          //AD通道4数据
int ADSampleResult11[ADSmple];                          //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[Count]=AD_CHIPSEL0;
        ADSampleResult1[Count]=AD_CHIPSEL0;
        ADSampleResult2[Count]=AD_CHIPSEL0;
        ADSampleResult3[Count]=AD_CHIPSEL0;
        ADSampleResult4[Count]=AD_CHIPSEL0;
        ADSampleResult5[Count]=AD_CHIPSEL0;
        
        ADSampleResult6[Count]=AD_CHIPSEL1;
        ADSampleResult7[Count]=AD_CHIPSEL1;
        ADSampleResult8[Count]=AD_CHIPSEL1;
        ADSampleResult9[Count]=AD_CHIPSEL1;
        ADSampleResult10[Count]=AD_CHIPSEL1;
        ADSampleResult11[Count]=AD_CHIPSEL1;
         
        AD_CONVST=0x0;        //重新启动AD转换
        Count++;
          }   
          else
          {
              Count = 0;
          }
   
          PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
/*** end of file ***/

使用特权

评论回复
8
zhangmangui| | 2013-8-1 10:51 | 只看该作者
sunsundsp 发表于 2013-8-1 10:34
这是这个采样程序的主程序,在里面我就看到了一些定时中断和采样的过程,完全没看到寄存器的影子

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

使用特权

评论回复
9
sunsundsp|  楼主 | 2013-8-1 13:20 | 只看该作者
zhangmangui 发表于 2013-8-1 10:51
从程序中确实没有看到配置寄存器   只是CPU定时器定时采样  并采集完重启ADC   准备下次采样 ...

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

使用特权

评论回复
10
吃狼的肉肉| | 2015-6-5 10:13 | 只看该作者
本帖最后由 吃狼的肉肉 于 2015-6-5 10:22 编辑

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

使用特权

评论回复
11
吃狼的肉肉| | 2015-6-5 10:45 | 只看该作者
sunsundsp 发表于 2013-8-1 13:20
现在我想把采集到的数据进行FFT处理,不知该如何下手

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

122

帖子

2

粉丝