多功能调试测试助手-精密电压源AD5791
时间:10-02
整理:3721RD
点击:
多功能调试测试助手-精密电压源AD5791
环境说明:CubeSuites+
环境说明:CubeSuites+
- 文件:
- AD5791.c AD5791.h
- 函数:
- AD57XX_Init(AD5791);
- void AD57XX_SetRegisterValue(unsigned char registerAddress, unsigned long registerValue) unsigned char SPI_Write(unsigned char* data,unsigned char bytesNumber)void AD57XX_SetDacValue(unsigned long value)
- 细列:
- unsigned char AD57XX_Init(char deviceVersion){
- unsigned char status = 0;
- unsigned int i;
-
- AD5791_CLR_H; //清零
- AD5791_LDAC_H; //不加载输出
- AD5791_RESET_L; //复位AD5791
-
- for(i=0;i<2000;i++)
- {NOP();}
-
- AD5791_RESET_H;
-
- for(i=0;i<2000;i++)
- {NOP();}
-
- switch(deviceVersion)
- {
- case AD5760:
- deviceBitNumber = 16;
- break;
- case AD5780:
- deviceBitNumber = 18;
- break;
- case AD5781:
- deviceBitNumber = 18;
- break;
- case AD5790:
- deviceBitNumber = 20;
- break;
- case AD5791:
- deviceBitNumber = 20;
- break;
- }
- AD57XX_SetRegisterValue(AD57XX_REG_CTRL,AD57XX_CTRL_RBUF|AD57XX_CTRL_BIN2SC|AD57XX_CTRL_SDODIS|AD57XX_CTRL_LINCOMP(AD57XX_LINCOMP_12V_SPAN));
- //配置AD5791控制寄存器:不用内部放大器A1,偏移二进制编码 (*直接关系输出值*)
- return(status);
- }
- //设置寄存器值
- //unsigned char registerAddress:寄存器地址
- //unsigned long registerValue:寄存器配置值
- void AD57XX_SetRegisterValue(unsigned char registerAddress, unsigned long registerValue)
- {
- unsigned char writeCommand[3] = {0, 0, 0};
- unsigned long spiWord = 0;
- spiWord = AD57XX_RW_(0) |
- AD57XX_ADDR_REG(registerAddress) |
- registerValue;
- writeCommand[0] = (spiWord & 0xFF0000) >> 16;
- writeCommand[1] = (spiWord & 0x00FF00) >> 8;
- writeCommand[2] = (spiWord & 0x0000FF);
- SPI_Write( writeCommand, 3);
- }
- //同步串行通讯写
- unsigned char SPI_Write(unsigned char* data,unsigned char bytesNumber)
- {
- unsigned char i=0,j=0;
-
- AD5791_SYNC_L;
- for(j=0;j<bytesNumber;j++)
- {
- for(i=0;i<8;i++)
- {
- if ((data[j]&0x80)==0x80)
- {AD5791_SDIN_H;}
- else
- {AD5791_SDIN_L;}
-
- AD5791_SCLK_L;
- NOP(); NOP(); NOP(); NOP(); NOP();NOP(); NOP(); NOP(); NOP(); NOP();
- AD5791_SCLK_H;
- NOP(); NOP(); NOP(); NOP(); NOP();NOP(); NOP(); NOP(); NOP(); NOP();
-
- data[j]<<=1;
- }
- }
- AD5791_SYNC_H;
- }
