找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 12941|回復(fù): 13
收起左側(cè)

基于STM32的12位軌對(duì)軌DAC MCP4725驅(qū)動(dòng)程序-項(xiàng)目在用的

  [復(fù)制鏈接]
ID:233200 發(fā)表于 2019-1-9 15:25 | 顯示全部樓層 |閱讀模式
此款DAC芯片是SOP6封裝的12位的軌對(duì)軌片子,正好補(bǔ)償小容量STM32沒有DAC功能的缺陷,IIC接口,外圍電路很簡(jiǎn)單。輸出函數(shù)直接調(diào)用:MCP4725_WriteData_Voltage(u16 Vout) 這個(gè)函數(shù)。補(bǔ)充一下:最大輸出為5V,用到了電平轉(zhuǎn)換。例如:****
頭文件/初始化文件忽略
****
int main(void)
{        
         delay_init();            //延時(shí)函數(shù)初始化         
         MCP4725_Init();   //MCP4725初始化         
         while(1)
        {
   MCP4725_WriteData_Voltage(4095);   //輸出最大   一般要求在100-4000之間
        }
}

制作出來的實(shí)物圖如下:

數(shù)值設(shè)定為2000

數(shù)值設(shè)定為2000

數(shù)值設(shè)定為4000

數(shù)值設(shè)定為4000

數(shù)值設(shè)定為1000

數(shù)值設(shè)定為1000


單片機(jī)源程序如下:
  1. #include "MCP4725.h"
  2. #include "delay.h"
  3. #include "usart.h"       

  4. //初始化IIC接口
  5. void MCP4725_Init(void)
  6. {
  7.         IIC_Init();
  8. }

  9. //使用快速模式寫命令寫DAC寄存器
  10. void MCP4725_WriteData_Voltage(u16 Vout)   //電壓?jiǎn)挝籱V
  11. {
  12.   u8 temp;
  13.         u16 Dn;
  14.         Dn = ( 4096 * Vout) / VREF_5V;
  15.         temp = (0x0F00 & Dn) >> 8;  //12位數(shù)據(jù)
  16.        
  17.         IIC_Start();
  18.         IIC_Send_Byte(0XC2);      //器件尋址,器件代嗎:1100; 地址位A2,A1,A0為 0 , 0 , 1;-> 1100 0010
  19.     IIC_Wait_Ack();         
  20.     IIC_Send_Byte(temp);        
  21.     IIC_Wait_Ack();         
  22.     IIC_Send_Byte(Dn);        //將低8位送到DAC寄存器
  23.         IIC_Wait_Ack();       
  24.     IIC_Stop();//產(chǎn)生一個(gè)停止條件         
  25.         delay_ms(10);       
  26. }

  27. void MCP4725_WriteData_Digital(u16 data)   //12位數(shù)字量
  28. {
  29.   u8 data_H=0,data_L=0;
  30.         data_H = ( 0x0F00 & data) >> 8;
  31.         data_L = 0X00FF & data ;
  32.         IIC_Start();
  33.         IIC_Send_Byte(0XC0);      //器件尋址,器件代嗎:1100; 地址位A2,A1,A0為 0 , 0 , 0;-> 1100 0000
  34.     IIC_Wait_Ack();         
  35.     IIC_Send_Byte(data_H);        
  36.     IIC_Wait_Ack();         
  37.     IIC_Send_Byte(data_L);
  38.         IIC_Wait_Ack();       
  39.     IIC_Stop();//產(chǎn)生一個(gè)停止條件         
  40.         delay_ms(10);       
  41. }
復(fù)制代碼

所有資料51hei提供下載:
MCP4725驅(qū)動(dòng).7z (183.37 KB, 下載次數(shù): 489)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:143694 發(fā)表于 2020-11-7 22:06 | 顯示全部樓層
我的調(diào)通了,地址是0xC0,
說來也不容易啊,賣家給的地址是 0x60 或0x61,怎么試驗(yàn)都不行,
后來我自動(dòng)累加地址試驗(yàn)串口輸出觀察地址和示波器上的電壓
(最后需要注意的是 兩個(gè)地方需要改地址)

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:18570 發(fā)表于 2019-3-17 13:25 | 顯示全部樓層
大哥,工程不完整啊,搞不好啊,能不能幫幫我
回復(fù)

使用道具 舉報(bào)

ID:233200 發(fā)表于 2019-3-20 10:16 | 顯示全部樓層
zhouhuyin 發(fā)表于 2019-3-17 13:25
大哥,工程不完整啊,搞不好啊,能不能幫幫我

抱歉哦,由于這是公司的項(xiàng)目,產(chǎn)品在專利審查期,暫且不能外放。你可以把這個(gè)文件移植到正點(diǎn)原子的任意一個(gè)工程里面,調(diào)用那個(gè)函數(shù)就行了
回復(fù)

使用道具 舉報(bào)

ID:511461 發(fā)表于 2019-8-4 10:11 | 顯示全部樓層
VREF_5V是4760是什么意思?4760是5V電壓的DAC值嗎
回復(fù)

使用道具 舉報(bào)

ID:511461 發(fā)表于 2019-8-4 11:34 | 顯示全部樓層
樓主,我用了你的程序,MCP4725_WriteData_Voltage(2000),用萬用表測(cè)得的電壓是1.61V,但是我把2000改為3724,測(cè)得的電壓還是1.61V,不知道哪里出問題了,樓主能指點(diǎn)一下嗎

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:653629 發(fā)表于 2019-12-1 22:51 | 顯示全部樓層
aaaaaa。 發(fā)表于 2019-8-4 11:34
樓主,我用了你的程序,MCP4725_WriteData_Voltage(2000),用萬用表測(cè)得的電壓是1.61V,但是我把2000改為 ...

你的A0是接的地,而樓主的A0接的是高,地址不對(duì)。
回復(fù)

使用道具 舉報(bào)

ID:383537 發(fā)表于 2020-1-16 23:35 | 顯示全部樓層
樓主,3v3供電的測(cè)試沒問題,用5v給MCP4725供電,用數(shù)字方式寫4095時(shí)得到的電壓只有2.7v

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:738489 發(fā)表于 2020-5-6 15:46 | 顯示全部樓層
太感謝了,已經(jīng)做出來了
回復(fù)

使用道具 舉報(bào)

ID:859394 發(fā)表于 2020-12-18 08:05 | 顯示全部樓層
張小帥1126 發(fā)表于 2020-11-7 22:06
我的調(diào)通了,地址是0xC0,
說來也不容易啊,賣家給的地址是 0x60 或0x61,怎么試驗(yàn)都不行,
后來我自動(dòng)累 ...

能分享一下您的程序嗎
回復(fù)

使用道具 舉報(bào)

ID:184706 發(fā)表于 2021-4-21 18:58 | 顯示全部樓層
這個(gè)東西真是不錯(cuò),也很便宜
回復(fù)

使用道具 舉報(bào)

ID:858964 發(fā)表于 2021-4-28 17:03 | 顯示全部樓層
張小帥1126 發(fā)表于 2020-11-7 22:06
我的調(diào)通了,地址是0xC0,
說來也不容易啊,賣家給的地址是 0x60 或0x61,怎么試驗(yàn)都不行,
后來我自動(dòng)累 ...

賣家給的地址 0x60 ,
0x60=0110 0000,
左移1位得1100 0000=0xCO
回復(fù)

使用道具 舉報(bào)

ID:805866 發(fā)表于 2021-6-26 17:10 | 顯示全部樓層
感謝分享。補(bǔ)充STM32的DAC,非常實(shí)用
回復(fù)

使用道具 舉報(bào)

ID:953049 發(fā)表于 2021-7-14 15:30 | 顯示全部樓層
有MSP的歷程嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表