⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2808adc2.0.c

📁 2808程序
💻 C
字号:
/*********************************************************************
** 功能描述:模数转换程序,对ADCINB7采样,结果从Scib发送出去**
*********************************************************************/
#include "DSP280x_Device.h"
unsigned long int i = 0;
//  模数转换相关寄存器初始化
void Adc_Init()
{
	//  Configure ADC @SYSCLKOUT = 150Mhz
    AdcRegs.ADCTRL1.bit.SEQ_CASC = 0;    //  双序列/级连选择:双序列工作模式
    AdcRegs.ADCTRL3.bit.SMODE_SEL = 0;  //  连续/并发选择:连续采样模式
    AdcRegs.ADCTRL1.bit.CONT_RUN = 0;   //  启动-停止/连续转换选择:启动-停止模式
    AdcRegs.ADCTRL1.bit.CPS = 1;          //  核时钟预分频器:ADC_CLK=ADCLKPS/2=3.125M
  	AdcRegs.ADCTRL1.bit.ACQ_PS = 0xf;       //  采集窗口大小:SH pulse/clock=16
   	AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x2;   //  核时钟分频:ADCLKPS=HSPCLK/4=6.25M
	AdcRegs.ADCMAXCONV.all = 0x0000;        //  转换通道数:SEQ1序列的通道数为1
  	AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0xd;   //  转换通道选择:ADCINB5 
}
void Adc_PowerUP()                           //  模数转换模块上电顺序延时
{ 	
  	AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;  //  模数转换内部参考电压源电路上电
  	for (i=0; i<1000000; i++){}                //  至少5ms延时
  	AdcRegs.ADCTRL3.bit.ADCPWDN = 1;	  //  模数转换核模拟电路加电
  	for (i=0; i<10000; i++){}                  //  至少20us延时
}
void Scia_init()
{    
	EALLOW;
 	GpioCtrlRegs.GPAMUX2.all = 0x0003000;	 //  设置G4和G5为通信端口	 
 	EDIS;
  	SciaRegs.SCICTL2.all = 0x0000;  	 //  禁止接收和发送中断
 	SciaRegs.SCILBAUD = 0x00E7;      //  波特率=9600
	SciaRegs.SCIHBAUD = 0x0001;  	     
    SciaRegs.SCICCR.all = 0x0007;  	 //  1个停止位,禁止校验,8位字符 
                             		 //  禁止自测试,异步空闲线协议
	SciaRegs.SCICTL1.all = 0x0023;  	 //  脱离复位状态,使能接收发送
	//SciaRegs.SCICTL1.bit.RXENA = 0; 	 //  禁止接收
}
main() 
{
InitSysCtrl();
EALLOW;
SysCtrlRegs.HISPCP.all = 0x3;//  高速外设模块时钟HSPCLK=SYSCLKOUT/6=25Mhz
EDIS;
DINT;           // 关闭总中断
IER = 0x0000;	    //  关闭外设中断
IFR = 0x0000;    //  清中断标志
Scia_init();       //  Scib初始化
Adc_PowerUP();
Adc_Init();
while (1)
   	{
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;     //  用S/W模式启动SEQ1转换序列
while (AdcRegs.ADCST.bit.SEQ1_BSY ==  1){}   //  判序列忙否
i = AdcRegs.ADCRESULT0 >> 4;
SciaRegs.SCITXBUF = i >> 8;
while(ScibRegs.SCICTL2.bit.TXRDY ==  0){}
SciaRegs.SCITXBUF = i;
while(SciaRegs.SCICTL2.bit.TXRDY ==  0){}
while(SciaRegs.SCICTL2.bit.TXEMPTY ==  0){}//  将转换结果从Scib发送
for (i=0; i<1000000; i++){}
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;       //  复位排序器到CONV00
   	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -