【疑问】当2812采用外扩ad芯片时,是不是不用对ad寄存器进行定义??
在看2812采用外扩的ad芯片ads8556采集数据的例子程序时,没有发现对ad寄存器的一些定义,是不是不用定义呢? 外扩AD芯片的使用应该是不用寄存器的配置工作 你只需给AD芯片采集使能然后读取相应的数据就可以了
为什么要外扩2812自带的AD口不够用吗还是AD采集精度不够 zhangmangui 发表于 2013-7-31 10:48 static/image/common/back.gif
外扩AD芯片的使用应该是不用寄存器的配置工作 你只需给AD芯片采集使能然后读取相应的数据就可以了
为 ...
我能说 领导给我的板子就是用外扩的吗············ sunsundsp 发表于 2013-7-31 10:59 static/image/common/back.gif
我能说 领导给我的板子就是用外扩的吗············
那就只能说明2812自带的AD精度不太好 看了一下是需要配置相应的寄存器的中文资料
http://www.doc88.com/p-218794600471.html zhangmangui 发表于 2013-7-31 11:07 static/image/common/back.gif
看了一下是需要配置相应的寄存器的中文资料
http://www.doc88.com/p-218794600471.html ...
我看了,只有控制寄存器CR,但是CR在硬件模式下很多位不是是无效的吗? 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 ***/
sunsundsp 发表于 2013-8-1 10:34 static/image/common/back.gif
这是这个采样程序的主程序,在里面我就看到了一些定时中断和采样的过程,完全没看到寄存器的影子
从程序中确实没有看到配置寄存器 只是CPU定时器定时采样并采集完重启ADC 准备下次采样 zhangmangui 发表于 2013-8-1 10:51 static/image/common/back.gif
从程序中确实没有看到配置寄存器 只是CPU定时器定时采样并采集完重启ADC 准备下次采样 ...
现在我想把采集到的数据进行FFT处理,不知该如何下手 本帖最后由 吃狼的肉肉 于 2015-6-5 10:22 编辑
我现在在做用2812外扩ads8556采集数据然后进行fft的课题 也遇到相似问题 求救楼主!可能的话加个qq呗或者有做过的大神求助。我QQ:549690706
sunsundsp 发表于 2013-8-1 13:20
现在我想把采集到的数据进行FFT处理,不知该如何下手
我现在在做用2812外扩ads8556采集数据然后进行fft的课题 也遇到相似问题 求救楼主!可能的话加个qq呗549690706
页:
[1]