【芯片应用】DAC8554
文章目录
- 一、简介
- 二、硬件
- 1、芯片引脚
- 2、芯片原理
- 2、电路设计
- 三、软件
- 1、时序图
- 2、片内寄存器
- 3、程序编写
一、简介
性质:数模转换器
生厂商:TI(德州仪器)
分辨率:16位
通道数量:4
相对精度:±4LSB
输出阻抗:1Ω
电源电压(AVDD):2.7V~5.5V
参考电压(VREF):0~AVDD
输出电压:0~VREF
数据手册可点击链接免费下载:DAC8554 Datasheet
二、硬件
1、芯片引脚
序号 | 引脚名称 | 描述 |
---|---|---|
1 | VOUTA | 电压输出通道A |
2 | VOUTB | 电压输出通道B |
3 | VREFH | 正参考电压 |
4 | AVDD | 电源电压 |
5 | VREFL | 负参考电压 |
6 | GND | 地 |
7 | VOUTC | 电压输出通道C |
8 | VOUTD | 电压输出通道D |
9 | SYNC | 低电平时开始传输数据 |
10 | SCLK | 时钟,最高50MHz |
11 | DIN | 数据输入 |
12 | IOVDD | 数字电路电源 |
13 | A0 | 地址设置位 |
14 | A1 | 地址设置位 |
15 | ENABLE | 低电平使能SPI |
16 | LDAC | 加载DAC寄存器,上升沿触发 |
DAC8554提供了两种数据同步更新功能,包括软件和硬件。
软件更新即用LD0/LD1控制更新方式,这时LDAC用不上,永久接地就好了;
硬件更新用LDAC控制,将数据存入缓冲器,随着LDAC从低变高,所有通道将一步更新到位。
2、芯片原理
芯片内部框图
可以看到芯片采用两级缓冲结构(Data Buffer ->DAC Register),这样的结构有4组,分别对应四个通道。从DIN输入的数据首先进入24位移位寄存器,然后进入缓冲器buffer,最后进入DAC寄存器,经过运放处理才得到最终电压。
DAC8554属于开关树形DA转换器,关于它的原理可查看【数电】DAC。
其内部结构如下图所示:
其中电阻串结构如下所示
电阻串顶端接VREF_H,底端接VREF_L,经过65536个电阻R和一个电阻R_DIVIDER分压,且
RDIVIDER=65536∗RR_{DIVIDER}=65536*RRDIVIDER=65536∗R
将分压信号输入给同向放大器,由
VoVi=1+R2R1\frac{Vo}{Vi}=1+\frac{R2}{R1}ViVo=1+R1R2
得到放大器增益为2.
故最终输出电压为:
Vout=2∗(VREFL+(VREFH−VREFL)/265536∗DIN)Vout=2*(V_{REF}L+\frac{(V_{REF}H-V_{REF}L)/2}{65536}*D_{IN})Vout=2∗(VREFL+65536(VREFH−VREFL)/2∗DIN)$$
电阻串电路中,每次只会有一个开关导通!
2、电路设计
(1)正参考电压接5V(由REG195G提供),负参考电压接地
(2)地址位为00
(3)ENABLE永久接地
为什么要接47电阻?
三、软件
1、时序图
采用3线制串行接口,可兼容SPI通讯协议。
将SYNC拉低,写时序开始。
在SCLK每个下降沿,DIN上数据被存入24位移位寄存器。
在24个数据写入过程中,如果SYNC拉高,则数据写入失败,之前写入的数据将丢弃。
从图中可以看出,总线空闲状态下,SCLK为1,故CPOL=1。
从图中可以看出,在第1、3、5个边沿进行数据采样,故CPHA=0。
SPI可采用模式2与DAC8554通讯。
2、片内寄存器
输入移位寄存器一共有24位,其中高8位为控制位,低16位为数据位.
A1/A0:
地址位,可使一个主机最多控制4个DAC8554共16个通道的芯片,写入A1A0的地址必须与硬件设置的地址相同。
LD1/LD0:
加载模式控制,使用指定的 16 位数据值或掉电命令控制每个模拟输出的更新。
LD1 | LD0 | 模式 | 描述 (请结合芯片内部结构框图阅读) |
---|---|---|---|
0 | 0 | 单通道存储模式 | 被选中的DAC通道的缓冲器加载输入移位寄存器中的数据,或者加载掉电模式命令 |
0 | 1 | 单通道更新模式 | 被选中的DAC通道的缓冲器和DAC寄存器加载输入移位寄存器中的数据,或者加载掉电模式命令 |
1 | 0 | 同步更新模式 | 选中通道从移位寄存器中更新数据,同时其他通道从缓冲器中更新之前的数据 |
1 | 1 | 广播更新模式 | 不管地址是否匹配,挂载的所有DAC8554都会响应。若DAC Select1=0,则所有通道更新缓冲器中保存的数据;若DAC Select1=1,则所有通道更新移位寄存器中保存的数据 |
数据存储进缓冲器还不会有对应电压输出,必须加载进入DAC寄存器才会
X:
略
DAC Select1/2:
选择通道,A(00)/B(01)/C(10)/D(11)
PD0:
选择掉电模式。若PD0=1,D15和D14将表示掉电模式:
从表中可以看出,不同的掉电模式有不同的输出阻抗。
3、程序编写
使用SPI模式2与DAC8554通讯,即CPOL=1,CPHA=0。由于DAC8554最高通讯速率为50MHz,故这里设置为30M。
初始化函数
void MX_SPI2_Init(void)
{hspi2.Instance = SPI2;hspi2.Init.Mode = SPI_MODE_MASTER;hspi2.Init.Direction = SPI_DIRECTION_2LINES_TXONLY;hspi2.Init.DataSize = SPI_DATASIZE_8BIT;hspi2.Init.CLKPolarity = SPI_POLARITY_HIGH;hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;hspi2.Init.NSS = SPI_NSS_SOFT;hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;hspi2.Init.TIMode = SPI_TIMODE_DISABLE;hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;hspi2.Init.CRCPolynomial = 0x0;hspi2.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;hspi2.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;hspi2.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;hspi2.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;hspi2.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;hspi2.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE;hspi2.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE;hspi2.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;hspi2.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE;hspi2.Init.IOSwap = SPI_IO_SWAP_DISABLE;if (HAL_SPI_Init(&hspi2) != HAL_OK){Error_Handler();}}
写移位寄存器函数
/**********************************************************************
* 名称 : DAC_Write_Reg
* 功能 : DAC 写数据寄存器函数
* 输入 : Addr -- 地址nCH -- 通道DAC_Code -- DAC内码
* 输出 :无
* 说明 : 无
***********************************************************************/
void DAC_Write_Reg(uint8_t Addr,uint8_t nCH,uint16_t DAC_Code)
{uint8_t CMD = 0x00;uint8_t dac_code[2];//将16位数据存储在数组中dac_code[0]=DAC_Code >> 8;//高位先行dac_code[1]=DAC_Code >> 0;//采用硬件进行数据更新HAL_GPIO_WritePin(GPIOC, LDAC_Pin, GPIO_PIN_RESET); //LDAC = 0(上升沿加载DAC)//1.设置命令 CMD = CMD | (Addr << 6); //设置地址(A1/A0)CMD = CMD | (nCH << 1); //设置输出通道(SEL1/SEL0)//2.写入DAC数据 HAL_GPIO_WritePin(SPI2_SYNC_GPIO_Port, SPI2_SYNC_Pin, GPIO_PIN_RESET);//SYNC = 0,开始写入HAL_SPI_Transmit(&hspi2, &CMD, 1, 1000);HAL_SPI_Transmit(&hspi2, dac_code, 2, 1000);HAL_GPIO_WritePin(SPI2_SYNC_GPIO_Port, SPI2_SYNC_Pin, GPIO_PIN_SET);//SYNC = 1,结束写入HAL_GPIO_WritePin(GPIOC, LDAC_Pin, GPIO_PIN_SET);//LDAC = 1,上升沿完成DAC加载
}
翻译函数
/**********************************************************************
* 名称 : DAC_Translate
* 功能 : 将目标电压翻译为DAC内码,支持分辨率0.076mV
* 输入 : nCH -- 通道Votage -- 电压值
* 输出 :无
* 说明 : 1.输出范围:0 <= Votage <= +VREF2.关于校正系数DAC_Coeff,当DAC输出存在线性误差时可通过校正系数来修正输出值,假如设定值位Vset = 2.5V,实际Vout= 2.485V此时的校正系数为DAC_Coeff = Vset÷ Vout = 1.006f***********************************************************************/
void DAC_Translate(uint8_t nCH,float Votage)
{uint16_t r_Value = 0x0000; //寄存器数据r_Value = (uint16_t)((float)CODE_MAX * Votage * DAC_Coeff / DAC_VREF); //计算DAC内码DAC_Write_Reg(DAC_ADDR,nCH,r_Value);//写入数据
}
【芯片应用】DAC8554相关推荐
- 2022-2028年中国SIP芯片行业市场前景预测及投资战略研究报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国SIP芯片行业市场行业相关概述.中国SI ...
- 人工智能3d建模算法_打破国外垄断,全国产3D芯片为机器人“点睛”
◎ 科技日报记者 崔爽 传统机器人只有"手",只能在固定好的点位上完成既定操作,而新一轮人工智能技术大大推动了机器和人的协作,这也对机器人的灵活性有了更高要求. 要想像人一样测量. ...
- GPU、AI芯片技术市场分析
GPU.AI芯片技术市场分析 市场将高速增长,GPU曙光初现,预计到2024年,国内人工智能技术市场规模将达到172亿美元:全球占比将从2020年12.5%上升到15.6%,是全球市场增长的主要驱动力 ...
- 2002年3月英伟达发布核弹GPU与大算力自动驾驶芯片
2002年3月英伟达发布核弹GPU与大算力自动驾驶芯片 英伟达核弹级GPU:800亿晶体管,20块承载全球互联网流量 2022年3 月 22 日,在英伟达 GTC2022 上,英伟达介绍了 Hoppe ...
- 2022年AI芯片场景
2022年AI芯片场景 随着技术成熟化,AI芯片的应用场景除了在云端及大数据中心,也会随着算力逐渐向边缘端移动,部署于智能家居.智能制造.智慧金融等领 域:同时还将随着智能产品种类日渐丰富,部署于智能 ...
- 芯片初创公司一亿融资可以烧多久
芯片初创公司一亿融资可以烧多久 一个亿融资可以烧多久? 这个问题我分别问了几个芯片公司的创始人. 有说2年的(某中等规模电路,成熟制程的MCU芯片公司):有说1年的(某AI算力芯片公司):有说半年的( ...
- 一站式智能芯片定制技术
一站式智能芯片定制技术 从55nm到5nm先进工艺,拥有创纪录(> 200次流片)和年10万片FinFET晶圆授权量产的骄人业绩,并且成功率高达100%.15年以来,先进工艺产品交付纪录持续行业 ...
- 内存接口芯片,服务器平台,PCIe 芯片
内存接口芯片,服务器平台,PCIe 芯片 澜起科技成立于2004年,是国际领先的数据处理及互连芯片设计公司,致力于为云计算和人工智能领域提供高性能,低功耗的芯片解决方案,目前公司拥有互连类芯片和津逮® ...
- LED芯片,应用品,蓝宝石衬底,集成电路,UV
LED芯片,应用品,蓝宝石衬底,集成电路,UV 三安主要从事全色系超高亮度LED芯片的研发,生产与销售,产品性能稳定,品质优异. 产品覆盖 三安能够提供全波长范围的LED,产品可覆盖全部可见光和不可见 ...
最新文章
- SharePoint 2010 初体验(二)搭建一个简单的三态工作流
- .net测试篇之单元测试/集成测试神器Autofixture
- 从UnitedStack OS 1.0 Preview试用申请问卷调查学习OpenStack
- [Maven问题总结]Maven+Tomcat7
- CSS3学习笔记之loading动画
- 夏普SHARP AR-2818 一体机驱动
- HTML网页设计:导航栏
- u盘数据丢失了怎么恢复?u盘数据恢复,2个方案完成
- Android中ail的作用和使用说明
- 格林公式求圆并的面积及重心
- 手把手教你用keras搭建GAN
- 【NOIP2014】生活大爆炸版石头剪刀布
- win10打开计算机闪屏,Win10打开资源管理器闪屏怎么办?Win10资源管理器闪屏问题的解决方法...
- ROS加强精通过程--禁止 未授权用户上网
- 程序员如何找对象(1)
- 带宽不足会引起php cpu,云服务器的带宽不足会造成的影响
- 常用CASE工具介绍 (csnd.net)
- 提升html5的性能体验系列之一避免切页白屏
- EuroSys'14 会议记录
- 魔兽世界怀旧服十月最新服务器,10月12日魔兽世界经典旧世 怀旧服服务器的开放进展...
热门文章
- 【已解决】WPS/OFFICE中word文件可以打印,excel打印后无响应
- [oeasy]python0072_修改字体前景颜色_foreground_color_font
- 关于如何设置收藏本站和设为首页
- DataX及DataX-Web
- 【0429】散列函数和消息鉴别
- b站怎么改回html播放,b站视频播放器设置页面在哪里?怎么设置熄屏播放?怎么只播放声音?...
- 记录一次错误:Springboot访问前端页面“No mapping for GET”
- Cython 是什么?为什么会有 Cython?
- metaq spring
- JavaWeb 实验 Servlet用户登录验证