版本协议

CC-BY-NC-SA 3.0

标签
标准版
#第七届立创电赛#基于N32G430的USB功率计

创建时间:1年前

描述

<h3><span style="color:#e03e2d;">关于USB-C接口</span></h3> <p><span style="color:#e03e2d;">1)如果输入端是C-C线,输出端使用USB-A接口,那么由于CC1和CC2都是悬空状态,所以充电器或电脑不会有电压输出。如果有这种使用需求,需要在R3和R4位置焊接5.1K电阻用于识别设备。</span></p> <p><span style="color:#e03e2d;">2)如果输入端和输出端都是C-C线,请拆掉R3和R4,否则可能出现异常情况。需要注意的是,因为数据线内部只有一对CC是连接的,连接在功率计时需要注意方向。通常情况下,充电器或电脑的USB-C输出必须连接设备之后才会输出电压,只连接功率计输入端是不工作的。如果输出端连接设备后屏幕仍然无显示,可以将功率计输入或输出端的任意一根旋转180度后插入。</span></p> <h3>0、项目的B站视频</h3> <p><a href="https://www.bilibili.com/video/BV1PN4y1F76v/" target="_blank">https://www.bilibili.com/video/BV1PN4y1F76v/</a></p> <h3>1、项目功能介绍</h3> <p>基于N32G430的USB功率计。</p> <p>用于测量USB设备的电压、电流、功率等。在日常的硬件调试中,通过这个功率计,可以排查设备是否短路、数据线是否接触不良等问题。</p> <p>支持测量VBUS线路的电压、电流、功率,同时可以测量D+和D-的电压</p> <p>输入电压范围4.5~24V,电流范围0~3.27A,推荐用于测量65W及以下功率的充电器或电源适配器。</p> <p>由于输入和输出均为两种接口,所以支持使用CH224受电协议模块旁路修改输入电压。</p> <p>相关模块的开源工程<a href="/XiaoMao/CH224K-Module" target="_blank">https://oshwhub.com/XiaoMao/CH224K-Module</a></p> <h3>2、项目属性</h3> <p>自行设计</p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt">3、开源协议</h3> <p>CC-BY-NC-SA 3.0</p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt">4、硬件部分</h3> <p><span style="color:#e03e2d;">本次设计尽量选用国产芯片</span></p> <p>MCU采用国民技术N32G430K8L7,LQFP32封装。该型号相比STM32F030系列,内核升级到M4F,支持浮点运算,并且具有更高的主频,具有更强的性能。使用了ADC、SPI和I2C外设,内置时钟。预留了SWD接口用于烧录程序,预留了UART接口用于输出调试数据。其中,ADC用于测量DM和DP的电压,SPI用于连接OLED,I2C用于连接INA226。</p> <p><img src="//image.lceda.cn/pullimage/0rUnm9ObtmyYEJKcP2cxXhvE2LEdc8kRJXX1kV5M.png" alt="" width="993" height="588"></p> <p>监测芯片采用德州仪器INA226,最大支持36V输入电压。支持测量电压和电流,并自动计算功率。使用I2C输出测量结果。由于INA226为模拟输入,所以使用一个LDO独立供电,并在靠近电源引脚处使用10uF和100nF的MLCC电容进行滤波。电流采样电阻的阻值为10mΩ,较小的阻值可以尽量降低在这个电阻上产生的压降。较低的温度系数可以保证在电流较大时电阻的阻值变化较小,提高测量的线性度。本次选用的电阻为1%精度、2W功率,温度系数为±70ppm/℃。同时,电流采样电路使用了RC滤波以减小噪声。</p> <p><span style="color:#e03e2d;">在调试过程中,我发现这款芯片可以用TPA626替代,我打算在比赛结束后测试该芯片,如果替代成功,即可实现所有元件均为国产的目标。</span></p> <p><img src="//image.lceda.cn/pullimage/FpPwF7RfHGEhCpLrHMZGoivylOwKHvwqIkZ9vSQY.png" alt="" width="737" height="581"></p> <p>数字电源采用DC-DC方案,为MCU和OLED供电。DC-DC的高效率可以防止高压差时PCB发热,影响测量结果。芯片选用TMI3359,最大支持30V输入电压。采用CD32封装的4.7uH电感,保证电感不会发热。我个人喜欢开关频率较高的DC-DC,这样可以选择较小的电容和电感,减少电路的面积。模拟电源采用LDO方案,为INA226供电。LDO的输出电压波动更小,更适合精密的测量。另外INA226属于低功耗元件,即使压差比较大,也不会发热。芯片选用SE8533,最大支持36V输入电压。输入电容采用耐压50V的MLCC电容。因为MLCC是陶瓷材质电容,会随着电压升高发生一定形变,导致容量降低,所以,MLCC的耐压值一般选用最大输入电压的2~3倍。</p> <p><img src="//image.lceda.cn/pullimage/RAD4DmRli9RVRbyuLTzxUH0zNlaLd0H2h7M8RfTF.png" alt="" width="715" height="646"></p> <p>显示屏使用0.91寸OLED屏,分辨率为128x32,通信协议为SPI。</p> <p><img src="//image.lceda.cn/pullimage/YDNWCRHzKQS9gdqmxaAgjaV8a3QwXvI4Efp9HoAE.png" alt="" width="526" height="536"></p> <p>接口方面,输入端为一个USB-A公头和一个USB-C母头,输出端为一个USB-A母头和一个USB-C母头。使用USB-A可以免去数据线,而两个USB-C则考虑到了PD协议以及使用中可能需要延长线将功率计放置于利于观察的位置。为了可以使用USB-C输出的适配器,功率计的两个USB-C的CC连接在一起,并且预留了5.1K下拉电阻的焊接位置。</p> <p><img src="//image.lceda.cn/pullimage/uRfGYv6590SHALKu2TYevR5fINQLfb42O9hbK1So.png" alt="" width="613" height="660"></p> <p><span style="font-size:18px;"><strong>焊接完成的PCB如下图所示。</strong></span></p> <p><span style="font-size:18px;"><strong>正面</strong></span></p> <p><img src="//image.lceda.cn/pullimage/pRbPhuf02ojrbXjcYZO06mhKgsLKr092WjvbPxMF.jpeg" alt="正面" width="1200" height="960"></p> <p><span style="font-size:18px;"><strong>背面</strong></span></p> <p><img src="//image.lceda.cn/pullimage/iOG4Q3n2a5x9A4lMWYipWyaHy7kOtTaDGn4AiE7n.jpeg" alt="背面" width="1200" height="960"></p> <p><span style="font-size:18px;"><strong>INA226特写</strong></span></p> <p><img src="//image.lceda.cn/pullimage/6hX36FzXSYHFpiZ5xYkCMlndATsNPpnSmMJ7thVr.jpeg" alt="" width="1200" height="960"></p> <p><span style="font-size:18px;"><strong>N32G430特写</strong></span></p> <p><img src="//image.lceda.cn/pullimage/AipWivIzCQYr3WBvL2k5iqdfCErU1l3UNYAWkNHR.jpeg" alt="" width="1200" height="960"></p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt">5、软件部分</h3> <p>系统外设主要使用了SPI、I2C和ADC。其中,I2C用于INA226的通信,SPI用于OLED的通信,ADC用于采集D+和D-的电压。</p> <p>本次软件开发使用Nations.N32G430_Library.1.0.0</p> <p>外设的使用参考了其中的examples</p> <p>1)在进行编程之前,需要先根据已经确定的参数计算INA226的Calibration Register值。根据规格书上的计算公式,已知的变量只有采样电阻Rshunt=10mΩ。而Current_LSB在计算电流时会使用到,为了方便计算,我将Current_LSB定为一个整数。65W充电协议的常见输出为20V3.25A,只需要取比3.25更大的值作为上限即可。由于分母为2^15,所以这里取电流上限为3.2768A,Current_LSB即为0.1mA。同时计算得到CAL的值为5120,在初始化时将该值填入0x05寄存器即可。</p> <p><img src="//image.lceda.cn/pullimage/OLZ1RquJDS9r8wtWeljMUJ0ELoMSotBKBRhD7Tqs.png" alt="" width="1103" height="275"></p> <p>2)程序的流程图如下</p> <p><img src="//image.lceda.cn/pullimage/s2j6xAxee8ObAt2rJIP0KKsYp57sQGxhoqYW2bHt.png" alt="" width="625" height="921"></p> <p>3)初始化阶段,由于程序不需要大量运算,所以未开启PLL功能,降低了系统的总功耗。同时,RCC也仅开起了ADC、SPI、I2C和GPIO部分。在初始化时,部分参数使用了宏定义以方便修改。在调试过程中,我遇到了SPI不能用的问题,经过排查,我发现在初始化SPI时,即使没有用到硬件NSS,也需要将NSS寄存器置高才可以正常使用SPI。</p> <p><img src="//image.lceda.cn/pullimage/ju6N66myIMPnEM7rZPHoeEwEjzijSb1dCRDTBFFP.png" alt="" width="453" height="448"></p> <p>4)读取测量结果并进行计算。</p> <p>在读取功率寄存器后会自动开始新一轮测量,所以最后读取功率寄存器。</p> <p>由于DM和DP电压保留一位小数即可,并不需要很精确的测量结果,所以基准电压直接取电源电压3.3V。将除数为2的整数次幂的除法转化为移位可以提高运行效率。</p> <p>在输出端没有接任何负载的情况下,由于±1误差的存在,可能读取到负的电流值。为了避免这种情况发生,当电流的符号位为1时直接将电流和功率都视为0。</p> <p>电压的LSB为固定值1.25mV,电流的LSB根据计算得到0.1mA,功率的LSB固定为电流的25倍,即2.5mW。将读取到的数据与LSB相乘即可得到最终的测量结果。</p> <p><img src="//image.lceda.cn/pullimage/kaJZJNOVk93jWewHKNqOHOpXCwQMdhB9oB4JWOu2.png" alt="" width="482" height="273"></p> <p>5)将测量结果转化为方便显示的格式。</p> <p>由于INA226的精度较高,参考屏幕分辨率和字符大小,电压和电流保留3位小数,功率保留两位小数的情况下可以得到较好的显示效果。</p> <p>在测量范围中,测量结果可能会用到十位也可能不会,为了防止字符移动位置,采用右对齐的方式进行排列。</p> <p>使用求余和除法将测量结果的每一位拆分成单个数字。当十位是0时,使用空格替代这个0起到消隐的效果。</p> <p>在数字的字体中,将空格填充到数字9的后面,即第10行,只要将需要显示空格的数字替换为10即可。</p> <p><img src="//image.lceda.cn/pullimage/6n5AIodHw3vtCv4pmem8tliS4PTqfm3TWFS2yfaj.png" alt="" width="720" height="242"></p> <p><img src="//image.lceda.cn/pullimage/tZIK5sXKFO8CFxZyoeN2q6PdYCABFNPsgt75e10m.png" alt="" width="265" height="868"></p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt">6、BOM清单</h3> <p><img src="//image.lceda.cn/pullimage/Me4sjMGY5N6GMEgj8BenxSDH8PbQvMtIJhl6gTX3.png" alt="" width="565" height="500"></p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt">7、大赛LOGO验证</h3> <p><img src="https://image.lceda.cn/pullimage/AqgL6WHm9bDyCDDB0OCxXE2bVLPJmvpAxwuVLXNz.jpeg" alt="" width="1200" height="960"></p> <h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt">8、演示您的项目并录制成视频上传</h3> <p><span style="font-size:18px;"><strong>正常工作效果展示</strong></span></p> <p><span style="font-size:18px;"><strong><img src="//image.lceda.cn/pullimage/jfKqcEswMhyMpk5dXhe8tMwsDeBob1vYDd8W7Qcu.jpeg" alt="" width="1200" height="960"></strong></span></p> <p><span style="font-size:18px;"><strong><img src="//image.lceda.cn/pullimage/DmkvUBFd34u7ipX8PTRskoAbP7vv83bzXJwSXn1c.jpeg" alt="" width="1200" height="960"></strong></span></p> <p><span style="font-size:18px;"><strong>当电子负载为USB接口时,使用CH224模块</strong></span><span style="font-size:18px;"><strong>旁路修改输入电压接线方式</strong></span></p> <p><span style="font-size:18px;"><strong><img src="//image.lceda.cn/pullimage/UuC1q0Q1dnpWrgjXZr51ay1ZWAVMIChfvZXfq0RV.jpeg" alt="" width="1200" height="900"></strong></span></p> <p><strong><span style="font-size:18px;">20V输入展示</span></strong></p> <p><span style="font-size:18px;"><strong><img src="//image.lceda.cn/pullimage/85i2D3rZqwW5eqUCdjrzSbqrFTcDF9lzNGLWz5Mg.jpeg" alt="" width="1200" height="960"></strong></span></p> <p><span style="font-size:18px;"><strong>详细演示见视频</strong></span></p> <p><span style="font-size:18px;"><strong>9.参赛感想</strong></span></p> <p>本次参加立创大赛以及国民技术训练营使我收获颇多。本次参赛从元件选型,到电路设计、PCB设计、焊接、编写程序以及调试都是我自己完成的。通过这次参赛,我不但锻炼了自己的设计能力,还收获了一个日常生活中能用到的小工具。感谢立创为我提供了这样的比赛环境</p>
  • studio_video_1663516034934.mp4

  • studio_video_1663515771172.mp4

  • studio_video_1663515548238.mp4

文档

Sheet_1

PCB_#第七届立创电赛#基于N32G430的USB功率计

BOM

ID Name Designator Footprint Quantity
1 0.1u C1,C2,C3,C4,C5,C6,C14,C17,C18 C0402 9
2 10u C7,C10 C1206 2
3 22u C8 C0805 1
4 27p C9 C0402 1
5 10u C11,C13 C0603 2
6 1u C12,C19,C20 C0402 3
7 2.2u C15,C16 C0402 2
8 HDR-M-2.54_1x6 J1 HDR-6X1/2.54 1
9 4.7u L1 L3521 1
10 QT1306P22B OLED1 QT1306P22B 1
11 10k R1,R2,R5,R6 R0402 4
12 5.1k/NC R3,R4 R0402 2
13 100k R7 R0402 1
14 47k R8 R0402 1
15 15k R9 R0402 1
16 0.01 R10 R2512 1
17 10 R11,R12 R0402 2
18 560k R13 R0402 1
19 N32G430K8L7 U1 LQFP-32 1
20 TMI3359 U2 SOT26 1
21 SE8533-LF U3 SOT23 1
22 INA226AIDGST U4 VSSOP-10 1
23 USB-A USB1 USB-AM 1
24 USB-A USB2 USB-A-FEMALE 1
25 GT-USB-7010E USB3,USB4 USB-C-SMD_16P 2

附件

附件名 下载
studio_video_1663516034934.mp4
studio_video_1663515771172.mp4
studio_video_1663515548238.mp4
N32G430_USBTester.hex

成员

评论(11)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
立创电赛 回复
<p>板子上记得打立创电赛logo哦</p>
小茅 回复
<p>@lcds 板子上是有的,这个缩略图上没有</p>
立创电赛 回复
<p>记得上传完善一下文档哈··</p>
小茅 回复
<p>已经完成了</p>
raindropm 回复
<p>请教下大佬,我也是两个A口,两个C口,请问如果我A口用的是5PIN的,含一条CC线,和C口其中一条CC线相接,那么是不是就不需要考虑5.1K电阻了?</p>
小茅 回复
<p>A口输出的充电头,为了兼容普通A口设备,是不会出现不接CC就不输出的问题的。CC预留5.1k下拉是为了C转A,C口输出的充电头必须检测到CC下拉才会输出,两个CC分别对应正反面。如果有C转A的需求,则需要预留这个电阻,如果没有这种需求,就不需要了。</p>
raindropm 回复
<p>好像明白了,我这样接应该没问题吧,无论输入输出A或C,CC总能通的,就不需要5.1K电阻对吧<br><img src="//image.lceda.cn/pullimage/42SVwHNrmMQYQiUdI6YnGOK240C49UG5KSHqPioJ.png" alt="屏幕截图 2022-09-20 144638.png"></p>
小茅 回复
<p>主要是C口充电头作为输入的时候,要保证输出端的CC和设备的CC连接上,如果设备没有CC的话不下拉是没有电的</p>
raindropm 回复
<p>明白了,感谢!</p>
a904837093 回复
<p>请问应该如何烧录程序呢?</p>
小茅 回复
<p>通过SWD接口烧录</p>
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow