这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【EFM8BB52单片机】串口监视器小工具(成果展示与视频)

共9条 1/1 1 跳转至

【EFM8BB52单片机】串口监视器小工具(成果展示与视频)

院士
2021-12-12 15:50:39   被打赏 50 分(兑奖)     打赏

串口监视器小工具

串口监视器 监视并联串口线上的通讯命令,用于在项目原型开发或产品老化等测试、监控与统计。功能分为在线模式,离线模式和统计模式。

● 在线模式:将当前的串口数据同步到上位机软件中。在配置过滤器后,对串口命令进行过滤。

● 离线模式:通过红、绿两个指示灯来指示当前串口通讯的状态。或者黄色指示灯的过滤器触发状态。

● 统计模式:此时仅返回串口数据的统计信息,如命令正确条目,失败条目,过滤器命中条目等。

硬件设计:

● RS485模块

● LED指示灯x3,分别代表正确、失败、过滤器命中

● EEPROM,保存过滤器规则

软件设计:

● 支持Modbus-RTU帧格式检查

● 支持命令统计功能

● 支持过滤器的匹配功能

● 支持命令在终端的颜色输出

以上是我计划的DIY项目的设计与开发过程,供大家参考。

开发板原理图下载《EFM8BB52-EK2701A探索套件原理图http://share.eepw.com.cn/share/download/id/389224 

下列将是我在DIY过程的各个步骤的实现了。我会以本帖子的回帖方式,并将帖子索引更新在下方:(点击标题即可进入对应帖子)

1、Simplicity的下载与安装

2、开箱发帖,小巧精致的BB52

3、点灯成功——编译,下载Blinky示例

4、系统框图

5、PCB原理图

6、PCB制板归来

7、RS485通讯  

8、成果展示 

9、演示视频

未完待续...




关键词: 串口     监视器     BB52     Modbus    

院士
2021-12-18 22:40:07     打赏
2楼

开箱发帖,小巧精致的BB52

    大家好,收到SiLabs公司的EFM8BB52开发板已经一周有余。今天才来撰写开箱帖子有些晚。原因有二:其一、这个EFM8BB52的外包装实在简单,仅有一个防静电袋裹一下就发过来了,配一张写有官方logo的卡片——实在简单;其二、计划使用官方的Simplicity Studio IDE for Linux版本,无奈水平有限,几经周折,于前天晚上才将IDE安装完毕并可以下载与调试了。
    下面我们还是欣赏一下主角EFM8BB52开发板吧!






院士
2021-12-23 14:02:35     打赏
3楼

点灯成功——编译,下载Blinky示例

    大家好!今天为大家带来的是Blinky示例实验。此示例的代码量较少,目标也非常明确。主要验证开发板的正常上电与编译环境的运行。

    由原理图可知,板载LED灯连接在P1.4引脚之上,因此,我们需要配置P1.4引脚。

这里,我们直接使用官方SimplicityStudio软件的Blinky工程示例。

    在打开IDE后,选择BB52 Rev01版本,之后,再选择Blinky的Example即可。

    基于Eclipse开发环境下,我们连接好开发板,在左下角的栏目会自动显示jlink的连接状态。之后,点击Build按钮(小锤子图标)进行编译,或者直接点击debug按钮(小蜘蛛图标),即启动编译并下载Hex文件至开发板。稍等一下,开发板常亮的LED灯便开始闪烁了。

    至此,我们便验证了上位机编译环境,调试工具,开发板三者境外正常。之后,便是我们DIY要发挥的天下了。


院士
2021-12-26 09:43:38     打赏
4楼

系统框图

    大家好,我们在上一期完成了Blinky的工程项目,验证了开发板,验证了IDE开发环境,今天给大家带来了我们项目的系统框图及各个部分说明解析。

DSCN5141.jpg

    数据流从左往右运行

    左侧的RS485模块并联接入RS485半双工网络,使用EFM8BB52芯片的Uart2串口外设接收数据帧并进行帧缓存。

    Filter模块对缓存的数据帧进行解析,通过解析获取Modbus-RTU帧各个字段变量的值。再通过匹配规则筛选出符合统计规则的数据帧,传输到下一个模块Execute执行模块 ,否则丢弃该数据帧。

    Execute模块,在对帧进行格式化输出到Uart1,并通过LED灯显示当前执行的状态。
Uart1串口外设与板载USB虚拟串口相连,将经过格式化的数据以ASCII字符的形式上传至PC串口终端。

    IIC外设,与外部EEPROM模块通讯,获取保存的过滤规则。此部分由于时间关系暂不实现,规则全部以预置的方式保存在BB552的Flash中。

    串口工具的系统框图到这里就为大家介绍完成了。谢谢大家。下一期,我将为大家带来为串口工具而设计的MikroBus扩展板的PCB原理图。


院士
2021-12-28 20:49:59     打赏
5楼

PCB原理图

    大家好,在上一期的系统框图介绍下,这一期我们通过原理图将其实现。
    核心板我们肯定使用SiLabs的EFM8BB52了——这个是不是有点废话了!开发板仅给我们提供了一路USB转Uart,其余模块我们需要自行设计了。
    这次我们使用小巧而全面的MikroBus设计接口规范来完成设计。
    MikroBus比较小巧,仅有一张SD卡大小。
    MikroBus接口也比较全,传统的外设其全部囊括。这次依据我们的设计,我们乃至其Uart接口与IIC接口。
    提示一下,Uart接口需要附带一个GPIO引脚控制RS485芯片的方向引脚。
    再提示一下,IIC接口由于其为开漏输入输出的引脚电平设计,需要预留上拉电阻。
    LED灯的设计这里就不多说了。
    下面是我画的PCB原理图,供大家参考。

原理图.PNG



院士
2022-01-09 08:55:43     打赏
6楼

PCB制板归来 

    大家好!沉寂了几天,工作实在是有些忙了。今天分享的是基于MikroBus的PCB功能板的制作与焊接成果展示。PCB原理图在上一帖中已经做了分享,绘制完成后就交由嘉立创打板了。
免费的,所以慢了一些。普通的绿油白字。

DSCN5144.jpg    焊接完成了——我承认我焊接的有点丑

DSCN5146.jpg

DSCN5145.jpg

    两者已经合体在一起了。接下来就要运行我的代码了。



院士
2022-01-17 02:19:34     打赏
7楼

RS485通讯

      本次使用了MikroBus的接口,因此,Uart1的引脚使用了P2.2与P2.3两个引脚。RS485芯片的使能引脚使用了P2.4引脚。

      Uart1外设有自己的外设时钟,因此,可以使用官方的外设库来初始化。不过,由于官方的示例全部使用的P0.4与P0.5引脚——坦白讲,挺让我不理解的。所以在实现的过程中,走了N多的弯路。这点体验超级差。

    下面附上我的源代码供大家参考。

extern void
PORTS_2_enter_DefaultMode_from_RESET (void)
{
  // $[P2 - Port 2 Pin Latch]
  // [P2 - Port 2 Pin Latch]$

  // $[P2MDOUT - Port 2 Output Mode]
  /***********************************************************************
   - P2.0 output is open-drain
   - P2.1 output is open-drain
   - P2.2 output is open-drain
   - P2.3 output is push-pull
   - P2.4 output is push-pull
   - P2.5 output is open-drain
   - P2.6 output is open-drain
   ***********************************************************************/
  P2MDOUT = P2MDOUT_B0__OPEN_DRAIN | P2MDOUT_B1__OPEN_DRAIN
      | P2MDOUT_B2__PUSH_PULL | P2MDOUT_B3__OPEN_DRAIN | P2MDOUT_B4__PUSH_PULL
      | P2MDOUT_B5__OPEN_DRAIN | P2MDOUT_B6__OPEN_DRAIN;
  // [P2MDOUT - Port 2 Output Mode]$

  // $[P2MDIN - Port 2 Input Mode]
  SFRPAGE = 0x20;
  P2MDIN = P2MDIN_B0__DIGITAL | P2MDIN_B1__DIGITAL | P2MDIN_B2__DIGITAL
      | P2MDIN_B3__DIGITAL | P2MDIN_B4__DIGITAL | P2MDIN_B5__DIGITAL
      | P2MDIN_B6__DIGITAL | P2MDIN_B7__DIGITAL;
  // [P2MDIN - Port 2 Input Mode]$

  // $[P2SKIP - Port 2 Skip]
  /***********************************************************************
   - P2.0 pin is not skipped by the crossbar
   - P2.1 pin is not skipped by the crossbar
   - P2.2 pin is skipped by the crossbar
   - P2.3 pin is skipped by the crossbar
   ***********************************************************************/
  SFRPAGE = 0x20;
  P2SKIP = P2SKIP_B0__SKIPPED | P2SKIP_B1__SKIPPED | P2SKIP_B2__NOT_SKIPPED
      | P2SKIP_B3__NOT_SKIPPED | P2SKIP_B4__SKIPPED | P2SKIP_B5__SKIPPED
      | P2SKIP_B6__SKIPPED | P2SKIP_B7__SKIPPED;
  // [P2SKIP - Port 2 Skip]$

  // $[P2MASK - Port 2 Mask]
  // [P2MASK - Port 2 Mask]$

  // $[P2MAT - Port 2 Match]
  // [P2MAT - Port 2 Match]$

}




  UART1_initRxFifo(UART1_RXTHRSH_ZERO, UART1_RXTIMEOUT_16, UART1_RXFIFOINT_ENABLE);
  UART1_enableRxFifoInt(true);
  UART1_enableRxInt(true);

  UART1_init (24500000, 115200, UART1_DATALEN_8, UART1_STOPLEN_SHORT,
              UART1_FEATURE_DISABLE, UART1_PARITY_SPACE, UART1_RX_ENABLE,
              UART1_RX_CROSSBAR, UART1_MULTIPROC_DISABLE);




院士
2022-01-17 02:28:29     打赏
8楼

成果展示

    大家好,今天我给大家演示的基于EFM8BB52开发板设计的串口监控工具。从项目名称中,大家应该也能想到这是监测串口数据帧的工具。主要监测Modbus-RTU帧格式的正确与统计结果。

    本次由于时间关系我们仅完成了Modbus-RTU帧格式的CRC校验的功能。

    我们使用串口助手分别模拟正确帧与错误帧。

    我们先看错误帧的发送。我们手动将CRC校验填充错误的格式。可以看到BB52返回了Error字样的监测结果。同时,板载的LED灯也变成了红色。

    我们再使用串口助手发送正确的Modbus-RTU帧,可以看到BB52返回了OK字样的监测结果。同时,板载的LED灯也变成了绿色。

    程序源代码已经上传到论坛,大家可以关注我的帖子。

result01.jpg



院士
2022-01-17 02:37:09     打赏
9楼

共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]