找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

Arduino學(xué)習(xí)18-連接TM8211(PT8211)廉價(jià)16bit音頻DAC

[復(fù)制鏈接]
ID:114115 發(fā)表于 2016-4-18 03:45 | 顯示全部樓層 |閱讀模式
首先說一下DAC和PWM的關(guān)系:
  • DAC是通過電阻分壓+開關(guān)組合直接湊出想要的電壓,輸出是直流恒定電壓量,比如1024級的DAC,輸出512,就是0.5個VCC直流。
  • PWM是通過振蕩占空比得到想要電壓,比如比如1024級的PWM,輸出512,就是50%時間高電平VCC,50%時間低電平0。產(chǎn)生能量剛好是0.5個VCC一樣的能量。

  • LED調(diào)光,電機(jī)調(diào)速,更適合使用PWM。
  • 產(chǎn)生模擬音頻,產(chǎn)生指定直流電壓,控制儀表等更適合使用DAC


TM8211(PT8211)是一片輸出分辨率有16bit(65536級電壓值),兩通道輸出的DAC。非常廉價(jià),淘寶零售價(jià)大概在0.4元一片左右,而專門用做數(shù)字DAC的芯片比如TLC5615(10bit),MAX515(10bit)之類的都需要2元以上甚至更高
medium_563dc751e604c74df9d762372fce26d4.jpg
下面是轉(zhuǎn)載的介紹:
TM8211是兩路16位數(shù)模轉(zhuǎn)換集成電路,可廣泛應(yīng)用于數(shù)字音頻、多媒體系統(tǒng)。芯片采用CMOS工藝設(shè)計(jì),內(nèi)部電路結(jié)構(gòu)基于R-2R電阻網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì),并在全電源電壓范圍內(nèi)實(shí)現(xiàn)16bit的動態(tài)范圍。 TM8211可通過采用數(shù)字串行總線數(shù)據(jù)輸入,采用快速R-2R網(wǎng)絡(luò)結(jié)構(gòu)來支持8X的過采樣音頻信號處理。TM8211 支持較寬范圍的采樣頻率,并與PT8211、TDA1311兼容,輸入采用LSBJ (Least Significant Bit Justified ) 格式, 數(shù)字編碼格式采用MSB在前的補(bǔ)碼格式。 TM8211 采用8-pin SOP or DIP封裝。

此音頻DAC比起數(shù)字DAC輸出電壓范圍不夠?qū)拸V,線性不如數(shù)字DAC好。抖動也比較大。不過價(jià)格低廉,在要求低的時候可以當(dāng)做普通數(shù)字DAC使用。

硬件連接:
根據(jù)官方PDF的標(biāo)準(zhǔn)電路,隨便找三個arduino的IO口接BCK/WS/DIN即可。
161844xejhhdd7me1kd67c.png

軟件編寫:
  1.     //定義引腳,可以自行修改引腳對應(yīng)
  2.     int BCK = 10, WS = 9, DIN = 8;
  3.     unsigned int cnt = 0;
  4.      
  5.     //TM8211驅(qū)動函數(shù),
  6.     void TM8211(unsigned int wr_dat8211)
  7.     {
  8.         for(int i = 16; i > 0; i--)
  9.         {
  10.             digitalWrite(BCK, LOW);
  11.             digitalWrite(DIN, (wr_dat8211 >> i) & 0x01);
  12.             digitalWrite(BCK, HIGH);
  13.         }
  14.     }
  15.      
  16.     void setup()
  17.     {
  18.         //所有引腳都是輸出方式
  19.         pinMode(BCK, OUTPUT);
  20.         pinMode(WS, OUTPUT);
  21.         pinMode(DIN, OUTPUT);
  22.     }
  23.      
  24.     void loop()
  25.     {
  26.         //cnt是DA值
  27.         if(cnt > 0xFFF0)
  28.         {
  29.             cnt = 0;
  30.         }
  31.         //WS是通道選擇,這段代碼是兩個通道LCH/RCH同時輸出cnt,也可以分開LCH/RCH控制的,具體看pdf
  32.         digitalWrite(WS, LOW);
  33.         TM8211(cnt);
  34.         digitalWrite(WS, HIGH);
  35.         digitalWrite(WS, LOW);
  36.         delay(1);
  37.         cnt += 0x0F;    //每次輸出增加16個等級
  38.     }
復(fù)制代碼

代碼輸出的是一個鋸齒波,輸出電平0x0000-0xFFFF。1毫秒上升0x0F個等級
接一個LED在輸出端即可看到漸亮效果。

由于LED亮起電壓1.8v,本例是0-5v掃描,在0-1.8v掃描時候可能看不到LED亮起,請留意,這不是程序問題,是正常現(xiàn)象
回復(fù)

使用道具 舉報(bào)

ID:183188 發(fā)表于 2017-3-24 22:34 | 顯示全部樓層
樓主的這個程序能使PT8211輸出0~5V嗎?我調(diào)試的時候發(fā)現(xiàn)PT8211只能輸出1.22V到3.7V。(電源電壓=5V)
波形如下:
{I6DPKGS5ARCR5`G{%}SKI2.jpg


問了廠家,他們說5V供電的時候是輸出1.25V~3.75V這個范圍。

如果樓主能輸出0~5V,請教是怎么實(shí)現(xiàn)的?
回復(fù)

使用道具 舉報(bào)

ID:183796 發(fā)表于 2017-3-27 14:07 | 顯示全部樓層
我的最愛
回復(fù)

使用道具 舉報(bào)

ID:230361 發(fā)表于 2017-9-8 10:28 | 顯示全部樓層
怎么沒有找到相關(guān)的時序圖的資料啊
回復(fù)

使用道具 舉報(bào)

ID:187624 發(fā)表于 2019-6-26 15:29 | 顯示全部樓層
請問這個有源代碼么?
回復(fù)

使用道具 舉報(bào)

ID:585672 發(fā)表于 2020-3-17 14:30 | 顯示全部樓層
為什么我寫單通道,但是兩個通道同時輸出!怎么可以單通道輸出,求告知謝謝!
回復(fù)

使用道具 舉報(bào)

ID:688905 發(fā)表于 2023-3-19 21:25 來自手機(jī) | 顯示全部樓層
取名困難戶 發(fā)表于 2020-3-17 14:30
為什么我寫單通道,但是兩個通道同時輸出!怎么可以單通道輸出,求告知謝謝!

這里好像有相關(guān)參考信息:搜索文章"利用16位或者24位音頻DA制作高精度數(shù)控電源的設(shè)想"
回復(fù)

使用道具 舉報(bào)

ID:688905 發(fā)表于 2023-3-19 21:27 來自手機(jī) | 顯示全部樓層
zhihong0105 發(fā)表于 2017-3-24 22:34
樓主的這個程序能使PT8211輸出0~5V嗎?我調(diào)試的時候發(fā)現(xiàn)PT8211只能輸出1.22V到3.7V。(電源電壓=5V)
波形 ...

如果供電低于5v,輸出電壓范圍會是多少呢?
回復(fù)

使用道具 舉報(bào)

ID:705187 發(fā)表于 2023-4-11 22:30 來自手機(jī) | 顯示全部樓層
兩個通道同時輸出的時候電壓會降低是什么原因,原來最高可以輸出3.8。但是兩個通道同時輸出最高后兩個通道都只有2.5v
回復(fù)

使用道具 舉報(bào)

ID:1088263 發(fā)表于 2023-7-12 21:16 | 顯示全部樓層
大佬 Arduino驅(qū)動Wii攝像頭的電器板能分享一下嘛,我去打板
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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