|
關(guān)于此dac芯片的一些配置,添加到工程里稍微改改頭文件就可以拿來用,里面配置的比較粗糙,有待細(xì)化。
AD5624R/AD5644R/AD5664R均屬于nanoDAC®系列,分別是低功耗、四通道、12/14/16位緩沖電壓輸出DAC,采用2.7 V至5.5 V單電源供電,通過設(shè)計(jì)保證單調(diào)性。
AD5624R/AD5644R/AD5664R均內(nèi)置一個(gè)片內(nèi)基準(zhǔn)電壓源。AD56x4R-3內(nèi)置一個(gè)1.25 V、5 ppm/°C基準(zhǔn)電壓源,滿量程輸出范圍可達(dá)到2.5 V;AD56x4R-5內(nèi)置一個(gè)2.5 V、 5 ppm/°C基準(zhǔn)電壓源,滿量程輸出范圍可達(dá)到5 V。上電時(shí),片內(nèi)基準(zhǔn)電壓源關(guān)閉,因而可以用外部基準(zhǔn)電壓源。所有器件均可以采用2.7 V至5.5 V單電源供電。內(nèi)部基準(zhǔn)電壓源通過軟件寫操作來使能。
上述器件內(nèi)置一個(gè)上電復(fù)位電路,確保DAC上電后輸出0 V并保持該電平,直到執(zhí)行一次有效的寫操作為止。此外還具有各通道獨(dú)立關(guān)斷特性,在關(guān)斷模式下,器件在5 V時(shí)的功耗降至480 nA,并提供軟件可選的輸出負(fù)載。在正常工作模式下,該器件具有低功耗特性,非常適合便攜式電池供電設(shè)備。
AD5624R/AD5644R/AD5664R采用多功能三線式串行接口,能夠以最高50 MHz的時(shí)鐘速率工作,并與標(biāo)準(zhǔn)SPI、QSPI™、MICROWIRE™、DSP接口標(biāo)準(zhǔn)兼容。它內(nèi)置片內(nèi)精密輸出放大器,能夠?qū)崿F(xiàn)軌到軌輸出擺幅。
AD5624中文資料
51hei.png (88.6 KB, 下載次數(shù): 63)
下載附件
2020-11-27 22:16 上傳
產(chǎn)品聚焦
1. 四通道、12/14/16位DAC。
2. 1.25 V/2.5 V、5 ppm/ºC片內(nèi)基準(zhǔn)電壓源。
3. 提供3 mm × 3 mm、10引腳MSOP和10引腳LFCSP_WD 兩種封裝。
4. 低功耗:3 V時(shí)典型功耗為1.32 mW,5 V時(shí)為2.2 mW。
單片機(jī)源程序如下:
- #include "AD5624.h"
- /*
- *@name: AD5624_Init
- *@function:dac芯片初始化
- *@parameter: 無
- */
-
- /* 短暫延時(shí) */
- 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時(shí)鐘
- //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); //設(shè)置為21M時(shí)鐘,高速模式
- AD5664_InternalRefSetUp(INSETREFVOL_SETUP,DAC_C); //開啟內(nèi)部基準(zhǔn)電壓源
- AD5664_PowerDown(MODE_NORMAL,DAC_C); //上電
- }
- // Vout = (5*D)/65535
- /*
- *@name: AD5268_SetVal
- *@function:設(shè)置輸出電壓
- *@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();
- }
- //復(fù)位
- 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寄存器設(shè)置
- 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();
- }
- //內(nèi)部基準(zhǔn)電壓源設(shè)置(開啟/關(guān)閉)√
- 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);
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
AD5624R.zip
(907.18 KB, 下載次數(shù): 80)
2020-11-27 09:43 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|