BF533ADT7516时序底层读写的实现
0赞
发表于 3/3/2012 11:33:54 AM
阅读(2691)
* 名称 : ADT7516_SPISS_SELECT
* 功能 : 控制CPLD内部 使SPISS 选通 ADT7516_SPISS
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void ADT7516_TEST(void)
{
ADT7516_READ_REG(0x7F,1); //读状态 如果返回为1 则表示进入了SPI模式
udelay(0x3ff);
if(databuf[0]==0x01)
{
printf( "\nThe SPI Lock Status has been entered!\n\r" );
}
ADT7516_READ_REG(0x4D,1); //读 device ID 03
udelay(0x3ff);
if(databuf[0]==0x03)
{
printf( "\nThe Device ID is %d\n\r",databuf[0]);
}
}
/****************************************************************************
* 名称 : ADT7516_CTL
* 功能 : 设置各种控制模式 中断允许 AIN2 选通
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void ADT7516_CTL(void)
{
//18H Control configure 1
//C0=1 启动监听模式 C1-C2 00 AIN1 AIN2 选通 C3=0 LDAC 选择C4=0 保留
//C5=0 INT 允许 C6=0 低电平中断 C7=0 工作模式
cmd[0] = 0x21;
ADT7516_WRITE_REG(0x18,cmd,1);
//19H Control configure 2
// C2-C0 采样通道选择 011 选择了 AIN2 C3=0 保留 C4=1 单通道周期
cmd[0] = 0x03;
ADT7516_WRITE_REG(0x19,cmd,1);
// 1A H Control configure 3
// C0=0 采样率为1.4K C1=0 DAC 为8位 C2=0 保留 C3=0 LDAC控制输出、
// C4 =0 内部基准电压 C5=0 DAC A 选通 C5=1 输出为内部温度 C6=0 DAC B输出C6=1 输出外部温度
//C7=0 保留
cmd[0] = 0x08;
ADT7516_WRITE_REG(0x1A,cmd,1);
//1B H DAC CONFIGURE
// C0-C3 = 1 DAC 输出电压范围 0-2*VREF 为0 0-VREF
//C5-C4 LDAC 内部控制时更新方式 (此配置为外部控制)
//C6 C7 =0 保留
cmd[0] = 0x00;
ADT7516_WRITE_REG(0x1B,cmd,1);
// 1C H LDAC CONFIGURE
// C0 C1 C2 C3 为1 S时 内部更新DAC A B C D 的输出 (LDAC内部起作用时)
// C4= 1 DAC A B 输出基准电压为内部 为0 时输出为外部
// C5= 1 DAC C D 输出基准电压为内部 为0 时输出为外部
//D6 D7 =0 保留
cmd[0] = 0x30;
ADT7516_WRITE_REG(0x1c,cmd,1);
//1D H INT MASK
// 中断允许控制 为0 允许中断 AIN2 中断允许
cmd[0] = 0xdf;//df;
ADT7516_WRITE_REG(0x1d,cmd,1);
// 1EH INT MASK 2
// C4 允许VDD中断 其他保留
cmd[0] = 0x10;
ADT7516_WRITE_REG(0x1e,cmd,1);
}
/****************************************************************************
* 名称 : ADT7516_RST
* 功能 : ADT7516 软件控制复位
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void ADT7516_RST(void)
{
cmd[0] = 0x80;
ADT7516_WRITE_REG(0x19,cmd,1);
}
