极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 39367|回复: 5

Arduino学习笔记A18 - Arduino连接TM8211(PT8211)廉价16bit音频DAC

[复制链接]
发表于 2015-6-30 15:31:18 | 显示全部楼层 |阅读模式
Arduino连接TM8211(PT8211)廉价16bit音频DAC


首先说一下DAC和PWM的关系:
  • DAC是通过电阻分压+开关组合直接凑出想要的电压,输出是直流恒定电压量,比如1024级的DAC,输出512,就是0.5个VCC直流。
  • PWM是通过振荡占空比得到想要电压,比如比如1024级的PWM,输出512,就是50%时间高电平VCC,50%时间低电平0。产生能量刚好是0.5个VCC一样的能量。

  • LED调光,电机调速,更适合使用PWM。
  • 产生模拟音频,产生指定直流电压,控制仪表等更适合使用DAC


TM8211(PT8211)是一片输出分辨率有16bit(65536级电压值),两通道输出的DAC。非常廉价,淘宝零售价大概在0.4元一片左右,而专门用做数字DAC的芯片比如TLC5615(10bit),MAX515(10bit)之类的都需要2元以上甚至更高

下面是转载的介绍:
TM8211是两路16位数模转换集成电路,可广泛应用于数字音频、多媒体系统。芯片采用CMOS工艺设计,内部电路结构基于R-2R电阻网络结构设计,并在全电源电压范围内实现16bit的动态范围。 TM8211可通过采用数字串行总线数据输入,采用快速R-2R网络结构来支持8X的过采样音频信号处理。TM8211 支持较宽范围的采样频率,并与PT8211、TDA1311兼容,输入采用LSBJ (Least Significant Bit Justified ) 格式, 数字编码格式采用MSB在前的补码格式。 TM8211 采用8-pin SOP or DIP封装。

此音频DAC比起数字DAC输出电压范围不够宽广,线性不如数字DAC好。抖动也比较大。不过价格低廉,在要求低的时候可以当做普通数字DAC使用。

硬件连接:
根据官方PDF的标准电路,随便找三个arduino的IO口接BCK/WS/DIN即可。


软件编写:
  1. //定义引脚,可以自行修改引脚对应
  2. int BCK = 10, WS = 9, DIN = 8;
  3. unsigned int cnt = 0;

  4. //TM8211驱动函数,
  5. void TM8211(unsigned int wr_dat8211)
  6. {
  7.     for(int i = 16; i > 0; i--)
  8.     {
  9.         digitalWrite(BCK, LOW);
  10.         digitalWrite(DIN, (wr_dat8211 >> i) & 0x01);
  11.         digitalWrite(BCK, HIGH);
  12.     }
  13. }

  14. void setup()
  15. {
  16.     //所有引脚都是输出方式
  17.     pinMode(BCK, OUTPUT);
  18.     pinMode(WS, OUTPUT);
  19.     pinMode(DIN, OUTPUT);
  20. }

  21. void loop()
  22. {
  23.     //cnt是DA值
  24.     if(cnt > 0xFFF0)
  25.     {
  26.         cnt = 0;
  27.     }
  28.     //WS是通道选择,这段代码是两个通道LCH/RCH同时输出cnt,也可以分开LCH/RCH控制的,具体看pdf
  29.     digitalWrite(WS, LOW);
  30.     TM8211(cnt);
  31.     digitalWrite(WS, HIGH);
  32.     digitalWrite(WS, LOW);
  33.     delay(1);
  34.     cnt += 0x0F;    //每次输出增加16个等级
  35. }
复制代码


代码输出的是一个锯齿波,输出电平0x0000-0xFFFF。1毫秒上升0x0F个等级
接一个LED在输出端即可看到渐亮效果。

由于LED亮起电压1.8v,本例是0-5v扫描,在0-1.8v扫描时候可能看不到LED亮起,请留意,这不是程序问题,是正常现象

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-6-30 16:14:06 | 显示全部楼层
多谢分享。。。好东西
回复 支持 反对

使用道具 举报

发表于 2015-7-1 17:58:43 | 显示全部楼层
好东西!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2017-2-1 13:30:48 | 显示全部楼层
虽然还没有接到到这个应用,直接说来就是看不懂还是要感谢指导
回复 支持 反对

使用道具 举报

发表于 2017-11-3 15:33:47 | 显示全部楼层
我试试能不能通过单片机输出一个PWM的正弦信号,然后通过8211输出一条比较光滑的正弦波. 之前用PWM方式输出正弦波还得外接RC低通滤波电路.
回复 支持 反对

使用道具 举报

发表于 2017-11-3 21:49:21 | 显示全部楼层
手头没有8211,找了个TLC5615, 测试完了,第一次用DAC芯片. 看见光滑的波形,好激动~!  谢谢大神的教程!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 07:18 , Processed in 0.056004 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表