久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4021|回復: 3
打印 上一主題 下一主題
收起左側

STM32F407配置AD5624R芯片源程序與中文資料

[復制鏈接]
跳轉到指定樓層
樓主
  關于此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中文資料

產品聚焦
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。

單片機源程序如下:
  1. #include "AD5624.h"

  2. /*
  3. *@name:         AD5624_Init
  4. *@function:dac芯片初始化
  5. *@parameter: 無
  6. */

  7. /* 短暫延時 */
  8. void AD5624R_delay(){
  9.          u8 i=20;
  10.          while(i>0){
  11.                  i--;
  12.          }
  13. }

  14. void AD5624_Init(void){
  15.         GPIO_InitTypeDef  GPIO_InitStructure;

  16.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//使能GPIOB時鐘

  17.         //GPIOC7 片選
  18.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//PB14
  19.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//輸出
  20.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出
  21.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  22.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  23.         GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化

  24.         AD5624_CS = 1;
  25.         SPI1_Init();                                                                                   //初始化SPI
  26.         SPI1_SetSpeed(SPI_BaudRatePrescaler_4);                                //設置為21M時鐘,高速模式
  27.         AD5664_InternalRefSetUp(INSETREFVOL_SETUP,DAC_C);        //開啟內部基準電壓源
  28.         AD5664_PowerDown(MODE_NORMAL,DAC_C);                                //上電
  29. }

  30. // Vout = (5*D)/65535
  31. /*
  32. *@name:         AD5268_SetVal
  33. *@function:設置輸出電壓
  34. *@parameter:
  35. *                        @cmd:命令
  36. *                        @addr:輸出地址
  37. *                        @data:電壓值(最大值為4095)
  38. */
  39. void AD5268_SetVal(u8 cmd,u8 addr,u16 data){
  40.         u8 size1=0,size2=0,size3=0;
  41.         AD5624_CS = 0;
  42.         size1 = (cmd<<3)|addr;
  43.         size2 = (data>>8)&0xff;
  44.         size3 =  (data&0xff)<<4;
  45.         //拉低片選
  46.         SPI1_ReadWriteByte(size1);
  47.         SPI1_ReadWriteByte(size2);
  48.         SPI1_ReadWriteByte(size3);
  49.         AD5624R_delay();
  50.         AD5624_CS = 1;
  51.         AD5624R_delay();
  52.        
  53. }

  54. //寫入寄存器
  55. void AD5624R_WriteToInputReg(u16 DACValue,u16 addr){
  56.         u8 size1=0,size2=0,size3=0;
  57.         size1 = ((DAC_WRITE_REG)<<3)|addr;
  58.         size2 = (DACValue>>8)&0xff;
  59.         size3 =  (DACValue&0xff)<<4;
  60.         AD5624_CS = 0;
  61.         SPI1_ReadWriteByte(size1);
  62.         SPI1_ReadWriteByte(size2);
  63.         SPI1_ReadWriteByte(size3);
  64.         AD5624R_delay();
  65.         AD5624_CS = 1;
  66.         AD5624R_delay();
  67. }

  68. //更新dac
  69. void AD5624R_UpdataDac(u8 addr){
  70.         u8 size1=0,size2=0,size3=0;
  71.         size1 = ((DAC_WRITE_UPDATAALL_REG)<<3)|addr;
  72.         AD5624_CS = 0;
  73.         SPI1_ReadWriteByte(size1);
  74.         SPI1_ReadWriteByte(size2);
  75.         SPI1_ReadWriteByte(size3);
  76.         AD5624R_delay();
  77.         AD5624_CS = 1;
  78.         AD5624R_delay();
  79. }

  80. //寫入寄存器并更新所有adc
  81. void AD5664_WriteToInputRegAndUpdateDACs(u16 DACValue,u16 addr){
  82.         u8 size1=0,size2=0,size3=0;
  83.         size1 = ((DAC_WRITE_UPDATAALL_REG)<<3)|(addr);
  84.         size2 = (DACValue>>8)&0xff;
  85.         size3 =  (DACValue&0xff)<<4;
  86.         AD5624_CS = 0;
  87.         SPI1_ReadWriteByte(size1);
  88.         SPI1_ReadWriteByte(size2);
  89.         SPI1_ReadWriteByte(size3);
  90.         AD5624R_delay();
  91.         AD5624_CS = 1;
  92.         AD5624R_delay();
  93. }

  94. //寫入寄存器并更新指定adc
  95. void AD5664_WriteToInputRegDAC(u16 DACValue,u16 addr){
  96.         u8 size1=0,size2=0,size3=0;
  97.         size1 = ((DAC_WRITE_UPDATA_REG)<<3)|addr;
  98.         size2 = (DACValue>>8)&0xff;
  99.         size3 =  (DACValue&0xff)<<4;
  100.         AD5624_CS = 0;
  101.         SPI1_ReadWriteByte(size1);
  102.         SPI1_ReadWriteByte(size2);
  103.         SPI1_ReadWriteByte(size3);
  104.         AD5624R_delay();
  105.         AD5624_CS = 1;
  106.         AD5624R_delay();

  107. }

  108. //上電/掉電√
  109. void AD5664_PowerDown(u8 mode,u16 addr){
  110.         u8 size1=0,size2=0,size3=0;
  111.         size1 = ((DAC_POWER)<<3)|addr;
  112.         size3 = (mode<<4)|addr;
  113.        
  114.         AD5624_CS = 0;
  115.         SPI1_ReadWriteByte(size1);
  116.         SPI1_ReadWriteByte(size2);
  117.         SPI1_ReadWriteByte(size3);
  118.         AD5624R_delay();
  119.         AD5624_CS = 1;
  120.         AD5624R_delay();

  121. }

  122. //復位
  123. void AD5664_Reset(u16 addr,u8 mode){
  124.         u8 size1=0,size2=0,size3=0;
  125.         size1 = ((DAC_RESET)<<3)|addr;
  126.         size3 |= mode;
  127.         AD5624_CS = 0;
  128.         SPI1_ReadWriteByte(size1);
  129.         SPI1_ReadWriteByte(size2);
  130.         SPI1_ReadWriteByte(size3);
  131.         AD5624R_delay();
  132.         AD5624_CS = 1;
  133.         AD5624R_delay();

  134. }

  135. //DAC寄存器設置
  136. void AD5664_LDACRegSetUp(u16 addr){
  137.         u8 size1=0,size2=0,size3=0;
  138.         size1 = ((DAC_SET_REG)<<3)|addr;
  139.         size3 = addr;
  140.         AD5624_CS = 0;
  141.         SPI1_ReadWriteByte(size1);
  142.         SPI1_ReadWriteByte(size2);
  143.         SPI1_ReadWriteByte(size3);
  144.         AD5624R_delay();
  145.         AD5624_CS = 1;
  146.         AD5624R_delay();

  147. }

  148. //內部基準電壓源設置(開啟/關閉)√
  149. void AD5664_InternalRefSetUp(u8 mode,u16 addr){
  150.         u8 size1=0,size2=0,size3=0;
  151.         size1 = ((DAC_INSIDE_REFVOL)<<3)|addr;
  152.         size3 |= mode;
  153.         AD5624_CS = 0;
  154.         SPI1_ReadWriteByte(size1);
  155.         SPI1_ReadWriteByte(size2);
  156. ……………………

  157. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
AD5624R.zip (907.18 KB, 下載次數: 80)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:896590 發表于 2021-3-26 13:50 | 只看該作者
非常感謝分享,學習了。好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:360598 發表于 2021-9-3 14:00 | 只看該作者
AD5624和AD5624R區別在內置電壓源,該程序是否可應用于
AD5624,謝謝
回復

使用道具 舉報

地板
ID:441828 發表于 2023-1-7 21:13 | 只看該作者
非常感謝分享,學習了。好資料,51黑有你更精彩!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区三区中文字幕 | 99re视频在线观看 | 久久99精品久久久久久 | 国产精品久久久久久久久图文区 | 超碰在线影院 | 国产高清区 | 中文字幕亚洲视频 | 国产一级黄色网 | 午夜影院官网 | 草久久久 | 午夜一区二区三区在线观看 | 国产精品美女久久久久久免费 | 色婷婷在线视频 | 国产一区二区久久 | 亚洲精品乱码久久久久久按摩 | 一区二区视屏 | 97操操 | 狠狠的干狠狠的操 | 99re在线视频 | 视频1区2区 | 亚洲激情av | 99riav国产一区二区三区 | 欧美综合一区二区 | 久久伊人精品一区二区三区 | 福利社午夜影院 | 91网在线观看 | 日韩精品一区二区三区中文字幕 | 日韩一二区 | 日韩在线视频一区 | 天天干夜夜操 | 亚洲欧美国产精品一区二区 | 九九热免费视频在线观看 | 手机看片1 | 欧美视频在线播放 | 色资源在线 | 黑人一级黄色大片 | 91精品国产综合久久久久蜜臀 | 欧美日韩国产精品激情在线播放 | 午夜精品久久久久久久久久久久久 | 欧美成人一级 | 一区视频在线免费观看 |