小磷光一

BF533的AD模块的测量输入电压主函数

0
阅读(2905)

 

#include "dm_bf5xx.h"
#include "dm_types.h"

uint8_t databuf[256];
uint8_t cmd[2];

/****************************************************************************
* 名称 : Printf_VDD
* 功能 : 打印选定端点的输入电压值
* 入口参数 :Num 输入电压信道号(1-4) ,buffer	AD寄存器数据缓存
* 出口参数 :无
****************************************************************************/
void Printf_VDD(uint8_t Num,uint8_t *buffer)
{	
	uint_t VDD_value,LSB_value;
	uint_t Print_VDD;
	
	ADT7516_READ_REG(0x00,64,buffer);
	
	LSB_value = buffer[4];

	switch(Num)
	{
	case 1:	
			VDD_value = buffer[8];
			VDD_value <<=2;
			VDD_value = VDD_value|((LSB_value) &0x3);
			printf("Channel NO.1 value is %d\r\n",VDD_value);
			break;
	case 2:
			VDD_value = buffer[9];
			VDD_value <<=2;
			VDD_value = VDD_value|((LSB_value>>2) &0x3);
			printf("Channel NO.2 value is %d\r\n",VDD_value);
			break;

	case 3:
			VDD_value = buffer[10];
			VDD_value <<=2;
			VDD_value = VDD_value|((LSB_value>>4) &0x3);
			printf("Channel NO.3  value is %d\r\n",VDD_value);
			break;
	case 4:
			VDD_value = buffer[11];
			VDD_value <<=2;
			VDD_value = VDD_value|((LSB_value>>6) &0x3);
			printf("Channel NO.4 Value is %d\r\n",VDD_value);
			break;
	default : printf("Voltage Channel ERROR!\r\n");
			break;
	}
}
/****************************************************************************
* 名称 : ADT7516_DA
* 功能 : 打印选定端点的输入电压值
* 入口参数 :OutVoltage 输入要输出电压值对应的16进制数据
* 出口参数 :无
****************************************************************************/

void ADT7516_DA(uint8_t Num ,uint8_t OutVoltage)
{
	*pCtrOut_Flag_C=AD_LDAC;
	cmd[0]=OutVoltage;
	switch(Num)
	{
		case 1:	ADT7516_WRITE_REG(0x11,cmd,1);break;
		case 2:	ADT7516_WRITE_REG(0x13,cmd,1);break;
		case 3:	ADT7516_WRITE_REG(0x15,cmd,1);break;
		case 4:	ADT7516_WRITE_REG(0x17,cmd,1);break;
		default : printf("Voltage Channel ERROR!\r\n");	break;
	}
	*pCtrOut_Flag_C &= (0xff&(~AD_LDAC));
	mdelay(500);
	udelay(0x3ff);     
}


void main(void)
{
 	Set_PLL(22,5);  			//配置内核时钟为594M,系统时钟为118.8M
 	Init_EBIU();	
 	ADT7516_SPISS_SELECT();
 	ADT7516_SPI_init();	
 	ADT7516_RST();  
 	ADT7516_CTL();
 	ADT7516_TEST();  							//读取ID号
	while(1)
	{
		ADT7516_READ_REG(0x00,64,databuf);		//读取ADT7516 寄存器
		Printf_VDD(2,databuf);					//打印通道电压值
  		ADT7516_DA(1,0x70);						//通道1输出电压
 	    ADT7516_DA(2,0x80);
  	  	ADT7516_DA(3,0x90);
  		ADT7516_DA(4,0xa0);
	}
}