一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3431|回复: 4
收起左侧

[STM8/STM32] [开源项目]OpenDPS(3) 升级DPS5005

[复制链接]
发表于 2017-3-8 22:29 | 显示全部楼层 |阅读模式
本帖最后由 winterpigz 于 2017-3-9 11:06 编辑

整理自【https://johan.kanflo.com/upgrading-your-dps5005/感谢原作者的努力
以下内容使用linux工具进行开发和下载
注释:该固件目前不支持恒流模式
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

这是第三篇关于破解DPS5005的文章。 第一部分涉及DPS5005的逆向工程, 第二部分涉及OpenDPS的设计。


虽然本文针对5005,但它应该可以扩展到整个DPS系列,我目前只有在两个5005上进心了测试。 在开始之前是免责条款 - 出厂固件将无法恢复 。由于STM32上启用了读出保护,我无法提取原固件,我同时也没有它的源码。所以 如果您的DPS无法工作 ,我将不承担任何责任 。 OK,让我们开始吧。 需要的部件有DPS5005,STLink(淘宝版的就行)和一些排线。 您可以将排线焊接到DPS上,也可以使用插头和杜邦线进行下载。


拆机

首先需要从半封闭的外壳上拆下PCB。 使用小的平头螺丝刀将PCB从扣片上松开。


小心不要破坏保持卡扣。 我们需要固定前面板和按建。

Teardown-225x300.jpg

用AWG26的线连接SWO和UART端口。外壳空间有限, 建议不要焊接引脚。我在电缆的一端用了杜邦线壳,以将它们连接到STLink和FTDI。 注意:电缆要从从显示屏侧连入。

上:SWO,下:UART

SWO-pinout-300x200.jpg

如果你不想焊接(并且不想远程控制功能)(而且有一只“铁手”),你可以用三个杜邦公母线连到STLink克隆,然后用手联着排线和DPS进行下载。

Debugger-connected-300x200.jpg


编译OpenDPS

干完了这个,你应该安装OpenOCD和ARM GCC工具链。 Launchpad的GCC是一个很好的起点。 OpenOCD就不同。 MacOS的用户可以在这里找到OpenOCD (它安装为/ Applications / GNU ARM Eclipse / OpenOCD / 0.10.0-201610281609-dev / bin / openocd)。 有了这些工具,您就可以进行下一步了。

git clone --recursive git@github.com:kanflo/opendps.git
cd opendps
make -C libopencm3
make -C opendps


下载

接下来,您需要解锁STM32的闪存,然后再下载固件(这将完全擦除原内容)

cd openocd/scripts


openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg


如果连接成功,您将收到以“Info:stm32f1x.cpu:hardware has 6 breakpoints,4 watchpoints”结尾的几行输出。

打开另一个终端窗口:

telnet localhost 4444


敲入:

reset halt

flash erase_address unlock 0x08000000 0x10000


你可能会看到以下的错误:

Device Security Bit Set

stm32f1x.cpu: target state: halted

target halted due to breakpoint, current mode: Thread

xPSR: 0x61000000 pc: 0x2000003a msp: 0x20000800

stm32x device protected


faiLED erasing sectors 0 to 63


不要急。 重新启动OpenOCD,重启DPS电源,然后重试。 这一次你应该看到:

erased address 0x08000000 (length 65536) in 0.094533s (677.012 KiB/s)


下载固件:

cd opendps/opendps
make flash


最后两行应为:

** Verified OK **

** Resetting Target **


你的DPS5005现在已经变为一个OpenDPS 5005。

OpenDPS-300x200.jpg


如果在任何步骤事情不顺利,请随时在原网站留言。

如果你完成到这部,你应该可以使用OpenDPS作为独立的设备,也可以通过串行端口或ESP8266通过wifi控制它。


简明用户手册

当您打开OpenDPS电源时,将显示当前的电压和过流设置,电源输出缺省被关闭。 按ON / OFF将打开电源输出,显示屏现在将显示测量的输出电压和测量的电流。 如果屏幕闪烁了一次然后返回显示电压/电流设置,模块进入过流保护状态。再次按ON / OFF关闭电源输出。

按SET按钮进入编辑模式。 按V和A按钮在电压和电流设置之间移动。 按下旋钮可侧向移动,旋转旋钮更改数值。 再次按SET退出编辑模式。

按住旋钮两秒钟以锁定键,再次长按可解锁。 长按SET键将反转显示。

当您的OpenDPS启动时,它将等待来自连接的ESP8266的WiFi连接,并且WiFi图标将在1Hz闪烁。 如果没有WiFi连接,则WiFi图标将在10秒后关闭。 如果连接WiFi时出错,则WiFi图标将以4Hz闪烁。

远程串行控制

如果将电线焊接到UART端口,可以连接FTDI适配器并使用dpsctl.py工具连接模块:

dpsctl.py -d /dev/tty.usb.yourdevice --ping


TFT应闪烁一次作为视觉指示。 如果得到如下错误“:超时与设备通话”,需要检查RX/TX和GNDs是否连接正确。

端口也可以在系统环境变量中设置

export DPSIF=/dev/tty.usb.yourdevice

设置DPSIF变量后,可以试试将输出电压设置为3.3V:

dpsctl.py --voltage 3300

打开模块输出:

dpsctl.py --power on

读入测量值:

% dpsctl.py --status

V_in : 7.71 V

V_set : 3.30 V

V_out : 3.32 V (on)

I_lim : 0.100 A


I_out : 0.040 A


如果你只需要串行控制,可以通过WIFI = 0编译开关 禁用WIFI,如下所示

make clean ; make WIFI=0 flash


远程Wifi控制

任何带UARTESP8266板都可以用来进行wifi控制。 连接GND,RX和TX,编译和下载esp8266-proxy(不要忘记设置您的WiFi密码),就可以了。

git clone https://github.com/kanflo/esp-open-rtos.git

cd esp-open-rtos

git submodule init

git submodule update

git checkout -b netif remotes/origin/sdk_system_get_netif

export EOR_ROOT=`pwd`

echo '#define WIFI_SSID "my ssid"' > include/private_ssid_config.h

echo '#define WIFI_PASS "my secret password"' >> include/private_ssid_config.h

cd /path/to/esp8266-proxy


make && make flash


OpenDPS连接到无线网络后,可以使用'scan'命令找到它的IP地址:

% dpsctl.py --scan

172.16.3.203


1 OpenDPS device found



接下来ping:

% dpsctl.py -d 172.16.3.203 --ping


TFT应闪烁一次作为视觉指示。 如果您收到“错误:超时与设备172.16.3.203交谈”,需要检查RX/TX和GNDs是否连接正确。

dpsctl.py命令wifi和串行端口使用方式相同。


遗憾的是,您无法用OpenDPS为ESP8266供电。 SWO端口旁边的VDD引脚连接到U4(在TFT下),一个MD7133H 3.3V稳压器,它只提供30mA(没错三十毫安)。 此外,该稳压器由U3(在背面,螺钉端子旁边)供电,这是一个XL7005A提供400mA @ 5V,这对于ESP8266可能不够用。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


That’s it, have fun hacking your DPS5005!







发表于 2017-3-9 08:28 | 显示全部楼层
我是感觉,原机自带的程序也不怎么样.
发表于 2017-3-9 14:57 | 显示全部楼层
Hacking the DPS5005
OpenDPS Design
Upgrading your DPS5005
  1. System Overview
  2. The following modules are used in OpenDPS:

  3. event – uses a ring buffer for storing events from the interrupt context to be handled in the application context. Events are button presses, received bytes on the UART and over current protection triggers
  4. hw – the hardware abstraction (ADC, GPIO, …)
  5. ili9631c – the TFT driver
  6. opendps – main application
  7. past – for storing persistent parameters in flash
  8. protocol – helper for the serial protocol to instrument the OpenDPS device
  9. pwrctl – power control, the DAC and calculations to convert ADC readings to eg. current draw
  10. ringbuf – a ringbuffer implementation
  11. spi_driver – just that
  12. tft – TFT utility functions
  13. tick systick handler with 1ms resolution
  14. uframe – framing of serial protocol spoken
  15. ui – handle the user interface
复制代码
发表于 2017-3-10 12:50 | 显示全部楼层
多谢分享,顶起来
发表于 2022-3-6 18:27 | 显示全部楼层
论坛里都是高人

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-27 22:58 , Processed in 0.075212 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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