你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】DAC 无法输出满量程电压的分析解决

[复制链接]
STMCU小助手 发布时间:2022-2-22 20:44
问题:) W: R& U3 M9 k
该问题由某客户提出,发生在 STM32L100RBT6 器件上。据其工程师讲述:在使用 STM32L100 的 DAC1时,为了能够输出满量程,客户工程师将 DAC 的 Output Buffer 关闭,当 DAC 的输出值为 0x000 时,可以正常输出 0V,但是当 DAC 的输出值为 0xFFF 时,输出电压却只有 0.67V。客户工程师甚是不解。, {- h7 H- _" ]- V
  k. Q& y3 l* D6 Y: j% C8 K
调研:
; M: ]6 X+ M5 W使用 STM32L-Discovery(板载 STM32L152RBT6)对客户的问题进行确认。客户使用 DAC1,检查 DAC1 所对应的 PA4 在 STM32L-Discovery 中的使用情况,发现其用于驱动 LCD,于是将 LCD 拆下。撰写一个最基本的单通道 DAC1 的电压输出程序,使用万用表对其进行测量,得到以下结果:! D% f2 I/ ~! h; e" D: n# N
2 v3 g' V2 p4 R. r0 N
LVKJ4(VOG3)}C${B2QVXD.png
9 t) f- R) N$ T; m/ L& w) i8 Q/ q, H: {: Q2 Q* a
   STM32L152RBT6 为 64pin 的封装,在其数据手册我们可以看到:对于 64pin 以及更少管脚的封装中,芯片没有 Vref+和 Vref-两个引脚,Vref+在内部连接到 VDDA,而 Vref-在内部连接到 VSSA。所以,VDDA即为STM32L152RBT6 的 DAC 参考电压,测量其值得到 2.996V。
3 ~9 U7 g+ A+ q/ o# L, n  B" \% y9 F
3 h! _3 f+ i/ ]" D9 `) q   从数据表格,我们可以看出,当打开 Output Buffer 的时候,电压数据完全正常,但是关闭了 Output Buffer 之后,电压输出不正常了,达不到满量程。或许在电路上还有疏漏的地方。再重新仔细查看STM32L-Discovery 的电路图,发现 PA4 还肩负着另一个重任——测量 Idd。检查电路,PA4 与 Idd 的测量电路使用 SB2 进行连接,所以必须把 SB2 断开,使其彻底悬空。
& \- @, c+ v0 u( w5 a
+ I- ^  T* l6 q   将 STM32L-Discovery 板子上的 SB2 断开,在 Output Buffer 关闭的情况下,再次测量,发现可以满量程输出了。
. h0 {9 W# g0 [; c" V: z- x/ M, _) |
   所以对于所以对于客户所遇到的情况,对其板子上的 DAC 是否带着负载表示怀疑。拜访时与客户软件工程师和硬件工程师沟通,发现客户软件工程师在项目中使用了 DAC1,而 DAC1 所连接的 PA4 在外部电路中接着三极管驱动继电器的电路,故其输出电压不正常。其硬件工程师说 PA4 并不是悬空的,是作为普通 I/O 口使用,而 DAC2 对应的 PA5 才是悬空的。于是软件工程师修改其程序,使用 DAC2,DAC 终于工作正常了。
/ p0 ~  x9 Q! t9 [% s4 w   
! F2 q  C, {8 o9 `1 P
( K5 ]) D& U: V结论:% Y: H! |7 z  }9 f. D1 d
   软件工程师与硬件工程师沟通不畅,导致软件工程师错误地使用了 DAC,DAC 上面有较小负载,导致DAC 无法正常输出电压。
8 s9 t. N( O/ U4 z( \! p; z   : Y; K) Y& o6 C% L" }' ~4 s
处理:7 U! }0 F5 B) o: `: Q
   使用正确的 DAC 外设,并注意 DAC 所驱动的负载情况。
! l( T& u+ c* r. @4 |# U+ a3 E- J6 E7 E   
! ~4 z- c0 E, ]8 @& }/ o建议:
1 {( a1 x' O# j% Q, r* k1. 在使用 STM32 的 DAC 时,需要对输出负载进行评估。" T* j: k, H; ?  t' z
2. 我们看一下不使用与使用 Output Buffer 驱动的负载的对比图:# n1 Y- u: I4 r4 O- ~
   # O$ v: b" |/ ?4 r9 J
UI6)AB{4V`KJVVC`5C0]Z_6.png
7 ^" K) @2 V: O. Z& L4 s2 g% m2 J1 V  F0 e: l
可以看到,当不使用 Output Buffer 时,由于其驱动能力较弱,外部所驱动的负载必须要大于等于1.5Mohm,当用户的 DAC 电路中,DAC 所使用的引脚直接驱动一个较小的负载时,其电压输出值就可能会比期望的值低。而使用 Output Buffer 的情况下,由于增加了驱动能力,所以外部所驱动的负载只需要大于等于 5Kohm 即可。3 J% T5 y9 F! d
3. Output Buffer 虽然可以在不使用外部运放的情况下直接驱动外部负载,但是其并非轨对轨输出,需注意。
( R  P4 P% }. ]* d7 o  x6 {4. 若是用户需要满量程地输出电压,建议将 Output Buffer 关闭,在外部使用一个轨对轨的运放接成电压跟随器电路进行驱动即可。% C' G; Q, c! U# [
5. 另外,现在的项目系统越来越复杂,软件工程师和硬件工程师的分工也越来越明确,但是还是需要一个有效的沟通方式,比如,硬件工程师在设计好电压图之后,可以建立一张 Excel 表格用来描述各个 I/O 口的使用情况,转交给软件工程师使用。8 U, c% I# B$ K1 K
2 E4 N  p4 A+ x7 C6 j; |5 \- h
赞 收藏 评论0 发布时间:2022-2-22 20:44

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版