📄 ad 测试 a0.txt
字号:
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
// ADC start parameters
#define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25MHz
#define ADC_CKPS 0x1 // ADC module clock = HSPCLK/2*ADC_CKPS = 25MHz/(1*2) = 12.5MHz
#define ADC_SHCLK 0xf // S/H width in ADC module periods = 16 ADC clocks
#define AVG 1000 // Average sample limit
#define ZOFFSET 0x00 // Average Zero offset
#define BUF_SIZE 2048 // Sample buffer size
void IO_function(void);
void Scib_init(void);
void Scib_xmit(int a);
// Global variable for this example
Uint16 SampleTable[BUF_SIZE];
main()
{
Uint16 i;
InitSysCtrl();
EALLOW;
SysCtrlRegs.HISPCP.all = ADC_MODCLK; // HSPCLK = SYSCLKOUT/ADC_MODCLK
EDIS;
IO_function();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
Scib_init();
InitAdc(); // For this example, init the ADC
// Specific ADC setup for this example:
AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;
AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;
AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run
// Step 5. User specific code, enable interrupts:
// Clear SampleTable
for (i=0; i<BUF_SIZE; i++)
{
SampleTable[i] = 0;
}
// Start SEQ1
AdcRegs.ADCTRL2.all = 0x2000;
// Take ADC data and log the in SampleTable array
while(1)
{
for (i=0; i<AVG; i++)
{
while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt
// Software wait = (HISPCP*2) * (ADCCLKPS*2) * (CPS+1) cycles
// = (3*2) * (1*2) * (0+1) = 12 cycles
asm(" RPT #11 || NOP");
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );
Scib_xmit(SampleTable[i]>>8);
Scib_xmit(SampleTable[i]&0xff);
}
}
}
void IO_function(void)
{
EALLOW;
GpioMuxRegs.GPGMUX.all|=0x0030; //SCIB口功能口
EDIS;
}
void Scib_xmit(int a)
{
ScibRegs.SCITXBUF=(a&0xff); //发送数据缓冲寄存器
while(ScibRegs.SCICTL2.bit.TXRDY!=1){}; //发送缓冲寄存器准备好标志位
}
void Scib_init(void)
{
ScibRegs.SCIFFTX.all =0xE040; //允许接收,使能FIFO,没有FIFO中断
//清除TXFIFINT,
ScibRegs.SCIFFRX.all =0x2021; //使能FIFO接收,清除RXFFINT,16级FIFO
ScibRegs.SCIFFCT.all =0x0000; //禁止波特率校验
ScibRegs.SCICCR.all =0x0007; //1个停止位,无校验,禁止自测试,
//空闲地址模式,字长8位
ScibRegs.SCICTL1.all =0x0003; //复位
ScibRegs.SCICTL2.all =0x0003;
ScibRegs.SCIHBAUD =0x0001; //设定波特率9600bps
ScibRegs.SCILBAUD =0x00E7; //设定波特率9600bps
ScibRegs.SCICTL1.all =0x0023; //退出RESET
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -