4.1 KiB
文档说明 Explanation
此文档翻译自FAQ.md
This document was translated from FAQ.md
最后修改时间:2020年6月8日
Last modified time: June 8, 2020
常见问题
问题1:是否可以从芯片中读取代码(或EEPROM)存储器?
从设计上讲,这是STC的引导加载程序协议无法实现的。 STC将此视为安全功能。目前没有已知的解决方法。有关更多详细信息和讨论,请参见问题7。
问题2:哪些串行接口已通过stcgal测试过?
stcgal应该可以与波特率为16550的UART兼容。 但是,如今,基于USB模拟的UART是典型的情况。 以下是已通过stcgal成功测试的USB模拟UART接口芯片:
- FT232系列(操作系统:Linux,Windows)
- CH340 / CH341(操作系统:Windows,Linux需要内核4.10)
- PL2303(操作系统:Windows,Linux)
- CP2102(操作系统:Windows,Linux,macOS)
已知不起作用的接口:
- Raspberry Pi Mini UART(缺少奇偶校验支持,请启用PL011 UART)
问题3:stcgal 启动失败同时显示 module 'serial' has no attribute 'PARITY_NONE'
等类似信息
PyPI软件包“ serial”(数据序列库)和PyPI软件包“ pyserial”(stcgal所需的串行端口访问库)之间存在模块名称冲突。
您必须卸载'serial'软件包(pip3 uninstall serial
)并重新安装'pyserial'(pip3 install --force-reinstall pyserial
)才能解决此问题。
目前没有其他已知的解决方案。
问题4:stcgal无法识别MCU,并停留在“Waiting for MCU”中
有许多问题可能导致此症状:
- 电气问题和错误连接。确保正确连接了RX / TX,GND和VCC。 如果您不使用自动复位功能,还应确保仅在stcgal启动后才接通电源,因为引导加载程序仅在上电复位时被调用。
- 通过I / O引脚供电。 即使未连接VCC,也可以通过I / O引脚(例如RX / TX)为MCU供电。 在这种情况下,上电复位逻辑不起作用。请参阅下一个问题。
- erial接口不兼容。由于各种原因,一些基于USB的UART与STC MCU的兼容性很差。
您可以尝试使用选项
-l 1200
将握手波特率从标准2400波特降低到1200波特,在某些情况下可以解决这些问题。
问题5:如何避免MCU从I/O引脚供电?
可以采取各种补救措施来避免MCU从I/O引脚供电。
- 您可以尝试在MCU VCC和GND之间连接一个电阻(<1k),以使注入的电源短路,并希望将电压降至欠压值以下。
- 另一种选择是在可能注入功率的I / O线上插入串联电阻。例如,在RX / TX线上尝试一个类似1k的值。
- 还有另一种可能性是切换GND而不是VCC。 在大多数情况下,这应该是一个相当可靠的解决方案。
问题6:RC频率调整失败
首先,请确保指定的频率使用正确的单位。频率以kHz为单位指定,安全范围约为5000 kHz-30000 kHz。 此外,频率调整使用UART时钟作为时钟参考,因此UART不兼容或时钟不准确也会导致频率调整问题。如果可能的话, 尝试另一个UART芯片。
问题7:波特率切换失败或闪存编程失败
特别是在高编程波特率,例如, 115200波特。尝试降低波特率,或使用默认的19200波特率。 某些USB UART也会由于时序不正确而引起问题,这可能会导致各种问题。
问题8:如何使用自动重置功能?
标准自动重置功能的工作原理与Arduino类似。 DTR是低电平有效信号,在stcgal启动时置位500 ms,然后在其余的编程序列中置为无效。 在标准USB UART上,这将导致500 ms的低脉冲,然后是高相位。 stcgal作者推荐以下电路:
VCC --o o-- MCU GND
| |
.-. |
| | 1k |
| | |
'_' |
| |
| ||-+
DTR --o --||<- BS170/BSS138
||-| (N-CH MOSFET)
|
|
GND ---------o
该电路使用一个N沟道MOSFET作为开关来切换MCU的GND。 VCC直接连接。这避免了寄生供电问题。上拉电阻可确保在DTR输入悬空时接通MCU。