關于此dac芯片的一些配置,添加到工程里稍微改改頭文件就可以拿來用,里面配置的比較粗糙,有待細化。
AD5624R/AD5644R/AD5664R均屬于nanoDAC®系列,分別是低功耗、四通道、12/14/16位緩沖電壓輸出DAC,采用2.7 V至5.5 V單電源供電,通過設計保證單調性。
AD5624R/AD5644R/AD5664R均內置一個片內基準電壓源。AD56x4R-3內置一個1.25 V、5 ppm/°C基準電壓源,滿量程輸出范圍可達到2.5 V;AD56x4R-5內置一個2.5 V、 5 ppm/°C基準電壓源,滿量程輸出范圍可達到5 V。上電時,片內基準電壓源關閉,因而可以用外部基準電壓源。所有器件均可以采用2.7 V至5.5 V單電源供電。內部基準電壓源通過軟件寫操作來使能。
上述器件內置一個上電復位電路,確保DAC上電后輸出0 V并保持該電平,直到執行一次有效的寫操作為止。此外還具有各通道獨立關斷特性,在關斷模式下,器件在5 V時的功耗降至480 nA,并提供軟件可選的輸出負載。在正常工作模式下,該器件具有低功耗特性,非常適合便攜式電池供電設備。
AD5624R/AD5644R/AD5664R采用多功能三線式串行接口,能夠以最高50 MHz的時鐘速率工作,并與標準SPI、QSPI™、MICROWIRE™、DSP接口標準兼容。它內置片內精密輸出放大器,能夠實現軌到軌輸出擺幅。
AD5624中文資料
51hei.png (88.6 KB, 下載次數: 63)
下載附件
2020-11-27 22:16 上傳
產品聚焦
1. 四通道、12/14/16位DAC。
2. 1.25 V/2.5 V、5 ppm/ºC片內基準電壓源。
3. 提供3 mm × 3 mm、10引腳MSOP和10引腳LFCSP_WD 兩種封裝。
4. 低功耗:3 V時典型功耗為1.32 mW,5 V時為2.2 mW。
單片機源程序如下:
- #include "AD5624.h"
- /*
- *@name: AD5624_Init
- *@function:dac芯片初始化
- *@parameter: 無
- */
-
- /* 短暫延時 */
- void AD5624R_delay(){
- u8 i=20;
- while(i>0){
- i--;
- }
- }
-
- void AD5624_Init(void){
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//使能GPIOB時鐘
- //GPIOC7 片選
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//PB14
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//輸出
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
- GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化
- AD5624_CS = 1;
- SPI1_Init(); //初始化SPI
- SPI1_SetSpeed(SPI_BaudRatePrescaler_4); //設置為21M時鐘,高速模式
- AD5664_InternalRefSetUp(INSETREFVOL_SETUP,DAC_C); //開啟內部基準電壓源
- AD5664_PowerDown(MODE_NORMAL,DAC_C); //上電
- }
- // Vout = (5*D)/65535
- /*
- *@name: AD5268_SetVal
- *@function:設置輸出電壓
- *@parameter:
- * @cmd:命令
- * @addr:輸出地址
- * @data:電壓值(最大值為4095)
- */
- void AD5268_SetVal(u8 cmd,u8 addr,u16 data){
- u8 size1=0,size2=0,size3=0;
- AD5624_CS = 0;
- size1 = (cmd<<3)|addr;
- size2 = (data>>8)&0xff;
- size3 = (data&0xff)<<4;
- //拉低片選
- SPI1_ReadWriteByte(size1);
- SPI1_ReadWriteByte(size2);
- SPI1_ReadWriteByte(size3);
- AD5624R_delay();
- AD5624_CS = 1;
- AD5624R_delay();
-
- }
- //寫入寄存器
- void AD5624R_WriteToInputReg(u16 DACValue,u16 addr){
- u8 size1=0,size2=0,size3=0;
- size1 = ((DAC_WRITE_REG)<<3)|addr;
- size2 = (DACValue>>8)&0xff;
- size3 = (DACValue&0xff)<<4;
- AD5624_CS = 0;
- SPI1_ReadWriteByte(size1);
- SPI1_ReadWriteByte(size2);
- SPI1_ReadWriteByte(size3);
- AD5624R_delay();
- AD5624_CS = 1;
- AD5624R_delay();
- }
- //更新dac
- void AD5624R_UpdataDac(u8 addr){
- u8 size1=0,size2=0,size3=0;
- size1 = ((DAC_WRITE_UPDATAALL_REG)<<3)|addr;
- AD5624_CS = 0;
- SPI1_ReadWriteByte(size1);
- SPI1_ReadWriteByte(size2);
- SPI1_ReadWriteByte(size3);
- AD5624R_delay();
- AD5624_CS = 1;
- AD5624R_delay();
- }
- //寫入寄存器并更新所有adc
- void AD5664_WriteToInputRegAndUpdateDACs(u16 DACValue,u16 addr){
- u8 size1=0,size2=0,size3=0;
- size1 = ((DAC_WRITE_UPDATAALL_REG)<<3)|(addr);
- size2 = (DACValue>>8)&0xff;
- size3 = (DACValue&0xff)<<4;
- AD5624_CS = 0;
- SPI1_ReadWriteByte(size1);
- SPI1_ReadWriteByte(size2);
- SPI1_ReadWriteByte(size3);
- AD5624R_delay();
- AD5624_CS = 1;
- AD5624R_delay();
- }
- //寫入寄存器并更新指定adc
- void AD5664_WriteToInputRegDAC(u16 DACValue,u16 addr){
- u8 size1=0,size2=0,size3=0;
- size1 = ((DAC_WRITE_UPDATA_REG)<<3)|addr;
- size2 = (DACValue>>8)&0xff;
- size3 = (DACValue&0xff)<<4;
- AD5624_CS = 0;
- SPI1_ReadWriteByte(size1);
- SPI1_ReadWriteByte(size2);
- SPI1_ReadWriteByte(size3);
- AD5624R_delay();
- AD5624_CS = 1;
- AD5624R_delay();
- }
- //上電/掉電√
- void AD5664_PowerDown(u8 mode,u16 addr){
- u8 size1=0,size2=0,size3=0;
- size1 = ((DAC_POWER)<<3)|addr;
- size3 = (mode<<4)|addr;
-
- AD5624_CS = 0;
- SPI1_ReadWriteByte(size1);
- SPI1_ReadWriteByte(size2);
- SPI1_ReadWriteByte(size3);
- AD5624R_delay();
- AD5624_CS = 1;
- AD5624R_delay();
- }
- //復位
- void AD5664_Reset(u16 addr,u8 mode){
- u8 size1=0,size2=0,size3=0;
- size1 = ((DAC_RESET)<<3)|addr;
- size3 |= mode;
- AD5624_CS = 0;
- SPI1_ReadWriteByte(size1);
- SPI1_ReadWriteByte(size2);
- SPI1_ReadWriteByte(size3);
- AD5624R_delay();
- AD5624_CS = 1;
- AD5624R_delay();
- }
- //DAC寄存器設置
- void AD5664_LDACRegSetUp(u16 addr){
- u8 size1=0,size2=0,size3=0;
- size1 = ((DAC_SET_REG)<<3)|addr;
- size3 = addr;
- AD5624_CS = 0;
- SPI1_ReadWriteByte(size1);
- SPI1_ReadWriteByte(size2);
- SPI1_ReadWriteByte(size3);
- AD5624R_delay();
- AD5624_CS = 1;
- AD5624R_delay();
- }
- //內部基準電壓源設置(開啟/關閉)√
- void AD5664_InternalRefSetUp(u8 mode,u16 addr){
- u8 size1=0,size2=0,size3=0;
- size1 = ((DAC_INSIDE_REFVOL)<<3)|addr;
- size3 |= mode;
- AD5624_CS = 0;
- SPI1_ReadWriteByte(size1);
- SPI1_ReadWriteByte(size2);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
AD5624R.zip
(907.18 KB, 下載次數: 80)
2020-11-27 09:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|