×
模拟电子 > 模拟电路设计 > 详情

STM8S eForth,将AliExpress的廉价产品转变为互动开发套件!

发布时间:2020-06-28 发布时间:
|

STM8 eForth是一款紧凑,结构化和经过测试的Forth框架,适用于廉价的μC。代码是稳定的:二进制文件和支持可用于一系列STM8设备和低成本电路板,例如 W1209温控器。

支持的Forth功能列表包括空闲和后台任务,中断处理程序,I / O重定向,7S-LED和LCD驱动程序,模拟和数字I / O,在线字符串评估,VOC和单词列表扩展,以及独特的Alias功能。

STM8 eForth基于C.H.Ting博士的STM8EF。作为STC Forth,它编译为机器代码。 该项目使用最新的SDCC工具链和STM8汇编器和链接器来构建Forth内核,C可以与Forth集成用于脚本化应用程序!

该项目支持各种STM8设备和串行接口选项,提供库,在uvisim上使用测试自动化和Travis-CI上的Docker,并享受e4thcom对交互式编程的支持。

 

它是什么

STM8 eForth是用于μC的最小用户友好型Forth系统之一:它将20世纪80年代风格Forth的简约性带到了当今的低成本控制器。该项目为STM8变体提供代码,为选定的低成本目标提供板级支持,以及文档。 STM8 eForth有一个很长的功能列表,但它使用的内存非常少。创新的解决方案,稳定的支持和活跃的社区使得它可以轻松地用于新项目!

GitHub上的代码和二进制文件可以在很多方面使用:

  • 作为中国商品板的替代固件(例如恒温器,DCDC转换器和继电器板);
  • 使用交互式shell构建嵌入式系统(可编写脚本且可扩展);
  • 用于创建具有SPI,I2C或RS232的智能传感器和脚本shell,例如对于RaspberryPi,Arduino或ESP8266;
  • 作为探索STM8架构的交互式环境;
  • 学习Forth  - 它简单而有趣(在下面的文字中找出原因!);
  • ……

 

为什么要买便宜的中国板?

因为它很有趣:廉价的大规模生产的不完美是创造力的游乐场。

W1209长期以来一直是我最喜欢的目标:它是一个相当完整的嵌入式控制板,具有非常优惠的价格用户界面。它的外观和它看起来一样便宜,挑战在于它的不完美之处:设计电路板的人显然没有考虑到连接的应用程序。当然,有很多想法可以让它做它从未打算做的事情。

该项目还存在挑战,例如缺乏通信端口。“传感器连接器”既可以用作2线RS232“总线”,也可以用于传感。如果您需要同时进行传感和通信,该项目还可以通过按键引脚提供全双工3线RS232接口(同时保持按键功能)。插件系统可以轻松测试新想法,例如使用“更新连接器”作为家庭酿造现场总线接口!

 

该项目支持哪些目标板卡呢?

除了STM8S001,STM8S103,STM8S105,STM8S207和STM8L051的通用目标外,目前还支持以下板卡:

  • MINDEV STM8S103F3P6分线板;
  • XH-W1219(2x3 7S-LED,3键,继电器);
  • W1209温控板(3个7S-LED,3个按键,继电器);
  • W1401温控板(3x2 7S-LED,4键,继电器,蜂鸣器);
  • C0135 STM8S103 4 MODBUS继电器板;
  • XH-M194 STM8S105S4定时器,带6个继电器;
  • CN2596带电压表的DC / DC转换器;
  • XH-M188线性电源;

可以根据请求支持更多的电路板,例如:

  • WK1209WK(2x3 7S-LED,蜂鸣器,3键,继电器);
  • XH-W1701(DIP开关,继电器);

Elliot Williams致力于将ESP-14用作装配的物联网(ESP-14模块结合了ESP8266和STM8S003F3P6)。

基于XH-M188的可编程电源和廉价的DC / DC转换器都在进行中。还有几种类型的基于STM8S003F3的电压表已知可以工作。

详细了解以下可能的未来目标。

 

为什么要这样?

再次强调,因为它很有趣!

Forth从具有微小指令集和最小硬件要求的堆栈计算机开始。它适合几个KiB,目标,甚至是低μC,甚至可以用作开发系统。Forth堆栈计算机是标准CPU上的简约VM,但也有硬件实现(例如,用于FPGA,或144核Forth处理器)。VM是快速上下文切换的理想选择,Forth可轻松满足硬实时要求。Forth被用于许多NASA项目并不奇怪。

考虑一下:

  • 与其他编程环境相比,Forth很容易理解;
  • 像Lisp一样,Forth有一个REPL(Read-Evaluate-Print-Loop),可以通过“编辑 - 编译 - 运行 - 调试”(例如Arduino)以不可能的方式进行软件测试;
  • 构建领域特定语言很容易(人们可以对编译器进行编程!);
  • 面向堆栈的“因子分解”方法导致隐式数据流和模块化代码;
  • 解释器编译器,基本的OS功能只适用于4K代码;

一个Forth程序员可以控制所有级别的问题抽象,这是一个独特的优势。在这个世界中,二手解决方案的层层导致不断增长的复杂性(编译器,库,操作系统,驱动程序,框架,IDE ......)。相信“Thinking Forth”会让你成为一个更好的程序员,而不仅仅是嵌入式控制领域!

为什么选择STM8S003F3或STM8S103F3?

低端“STM8S超值系列”STM8μC非常便宜(爱好数量不到0.40美元,$ 0.20 @ 100pcs)。这就是为什么它们出现在许多便宜的小工具中:

  • 一个简单的STM8S103F3P6分线板成本约为0.80美元;
  • W1209温控器(STM8S003F3P6,继电器,3位显示,3键)成本低于1.50美元;
  • 可修复的DC / DC转换器售价约为1.60美元;

当然,您可以使用您已经知道的内容(例如PIC,AVR,MSP430或MCS51),但是学习使用新的架构是很有趣的。此外,STM8速度相当快,外设类似于STM32。就个人而言,我喜欢将这种低端芯片转变为功能强大的交互式嵌入式控制设备的挑战。

闪存STM8μC需要什么?

所需要的只是一个ST-LINK V2兼容编程器(2美元),以及一个用于交互式开发的TTL电平的串行接口(例如,价格为0.60美元的CH340加密狗)。现成的二进制文件位于GitHub发布页面上,但是为了构建自己的STM8EF配置,您需要开源SDCC工具链。

项目Wiki中有一个关于STM8S编程的页面,其中包括第一步说明,工具安装提示,STCC8 SDCC详细信息以及STM8编程网站的链接,这些内容很有帮助。

 

支持哪些功能?

目前支持以下功能:

  • 串行Forth控制台(如果需要使用单个GPIO);
  • 具有固定周期时间(例如5ms)的INPUT-PROCESS-OUTPUT代码的后台任务
  • 中断处理程序可以用Forth编写(SAVEC,IRET);
  • 创建DOES>用于编写定义单词;
  • DO LEAVE+循环结构的循环/循环(也是FOR NEXT);
  • 带有'?KEY'的向量I / O,EMIT提供类似操作系统的功能;
  • 用于二进制大小缩减的可配置词汇子集;

扩展词汇:

1)STM8 ADC控制:ADC! ADC @

2)板键,输出,LED:OUT OUT!

3)EEPROM,FLASH锁定/解锁:LOCK ULOCK LOCKF ULOCKF

4)原生位访问B!

5)倒序字节顺序16位寄存器访问:2C @ 2C!

6)编译到闪存:NVR RAM RESET'BOOT

7)ASCII文件传输:FILE HAND

  • 优化的子程序线程代码(STC),具有相对寻址,文字CPU指令,BRANCH和EXIT;
  • 支持具有7Seg-LED UI的电路板:在后台任务中,123。转到7Seg-LED显示屏,?KEY读取板键;

将来可能会支持更多功能(例如SPI,I2C)。

 

什么是背景任务?

基本的单用户Forth系统(如eForth)在您启动应用程序之前是交互式的。然后他们运行应用程序直到你停止它。

此实现提供了一个(1)并发线程的多任务处理,可以通过将变量BG设置为“应用程序字”来启动。然后该单词在后台定期运行,而Forth控制台允许更改参数,例如,用于调整控制器!

如果您熟悉Arduino,背景词类似于循环体()。不同的是,循环代码以固定的时间间隔执行,并且前台中有一个交互式控制台。当然,您也可以交互式地测试您的后台任务或其组成的单词。

 

怎样才能发现合适的电路板?

来自通常的中国市场站点的许多XH-Mxxx或XH-Wxxxx标记的板是基于STM8S003F3P6的。其中一些非常便宜,其他一些在10美元到20美元范围内,但有一些有趣的功能(例如XH-M114,XH-M117,XH-M128,XH-M129,XH-M158,XH-M194,XH-M196,XH- M203,XH-M205,XH-M207,XH-M241,XH-M602,XH-M603,XH-M604 ...)

像(XH-)W1209这样的SmartClima板可能会起作用。 价格特别低的原因大概是复制产品。 从产品图片来看,至少以下板材是基于STM8的:XH-W1210,XH-W1219,XH-W1301,XH-W1302,XH-W1304,XH-W1308,XH-W1313,XH-W1403,XH-W1403,XH -W1411,XH-W1501,XH-W1503,XH-W1504,XH-W1505,XH-W1601,XH-W1701,XH-W1702,XH-W1711,XH-W2100,XH-W2101,XH-W3001和XH-W3002。

最好是在接头上可以轻松访问串行端口引脚,但这仅适用于一小部分电路板。 STM8EF现在为所有具有至少一个空闲GPIO的电路板提供支持(例如,ICP标头上的PD1 / SWIM)。 甚至可以与其他功能共享通信端口。

有些电路板,比如便宜的4位电压表,不是很好的目标,因为它们缺少“品牌”或通用的“模块名称”,这使得它们很难识别:当你根据描述单独订购某些东西时,没有办法知道你会的得到什么。

 

Windows作为开发平台怎么样?

工具链作为Docker镜像:它在Travis-CI中运行,因此将代码签入GitHub存储库将构建您的二进制文件。

有一个Python 2.7上传器,可以模拟e4thcom终端的依赖关系解析并包含文件功能。使用STM8 eForth二进制文件也可以使用Windows HyperTerminal。

根据文档,在Windows上运行构建工具链也应该是可行的:

SDCC适用于Windows;

GNU make适用于Windows,但它并不是真正需要的,因为它可以用简单的CMD脚本替换;

STM8FLASH可以用mingw-w64-i686编译,但你也可以使用其他工具来闪存目标μC;


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
什么是BJT?BJT的功能及作用