这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » [学习笔记]STM32C031芯片串口的Modbus特性

共11条 1/2 1 2 跳转至

[学习笔记]STM32C031芯片串口的Modbus特性

院士
2024-02-23 17:26:48     打赏

Modbus应用层协议,在工业控制领域里面应用最广。一个普通的带串口的MCU即可支持,传统的8位51单片机也可以轻松实现。我们今天的主角STM32C031,这颗新推出的芯片,对Modbus有新的理解。让我带大家看看C031芯片如何全方位支持这应用范围最广的协议吧!

串口,还是那个串口

在阅读STM32C031的产品手册时,看到其串口的特性里面有一个“Modbus Communication”的支持。

uart_modbus_01.png

通过上图,可以看到仅Usart1串口外设支持这个特性。这是不是意味着使用STM32C031芯片在实现Modbus协议的时候可以更加简单、可靠。带着疑问,打开技术手册继续了解具体的功能特性。

硬件适配的优势

翻看技术手册对应章节“24.5.11 USART modbus communivation”,官方的描述如下:

USART为Modbus/RTU和Modbus/ASCII的实现提供了基本的支持协议。Modbus/RTU是一种半双工的帧传输协议,而协议中的地址识别、帧完整性控制和功能码解释则须在软件中实现,但是STM32C031通过硬件实现了帧尾判定检测,不再需要软件,其它资源的参与。这个特性降低了Modbus协议的软件实现复杂度,也节省了之前要额外使用的其它硬件资源,如Timer。

Modbus/RTU支持

在RTU模式下,帧结束以接收信号“空闲”识别超过2个字符。 该功能通过可编程超时功能实现。超时函数和中断必须通过USART_CR2寄存器中的RTOEN位和USART_CR1寄存器中的RTOIE来使能。 对应于2个字符时间(例如22个bit时间)的超时值则需要在RTO寄存器中配置。 当接收信号在这段时间内空闲时,在接收到最后一个停止位之后,会产生一个中断,通知软件当前的帧接收处于空闲状态,此次帧传输完成。

Modbus/ASCII支持

在ASCII模式下,帧结束由特定的(CR/LF)字符序列识别。USART使用字符匹配函数来管理这个机制。通过在ADD[7:0]字段中编写LF ASCII码并激活字符匹配中断(CMIE = 1),当收到LF时通知软件,软件也可以在DMA缓冲区中检查CR/LF字符序列。

小结

这几年的项目开发中,大部分数据传输协议都使用了Modbus协议。其简单实现,便于调试,兼容性高,项目应用效果优秀,非常令我满意。ST公司新推出的STM32C031系列在帧尾检测上大大的助力,让Modbus协议更易部署,也让MCU有更多资源处理业务逻辑,提高算力。





关键词: STM32C031     Modbus     协议     笔记    

高工
2024-02-23 22:00:17     打赏
2楼

厉害了老板 搞个STM32系列的学习板块带带兄弟们


高工
2024-02-24 09:17:36     打赏
3楼

现在芯片的功能这么高级了啊


院士
2024-02-25 08:44:24     打赏
4楼

芯片倒是不高级,但更贴进市场,满足应用了。


专家
2024-02-25 08:45:44     打赏
5楼

感谢楼主分享


高工
2024-02-25 17:31:08     打赏
6楼

现在芯片的功能这么高级了啊


专家
2024-02-25 19:38:57     打赏
7楼

感谢分享


高工
2024-02-28 09:08:02     打赏
8楼

谢谢分享


工程师
2024-02-29 15:18:27     打赏
9楼

学习了


高工
2024-02-29 15:27:15     打赏
10楼

学习


共11条 1/2 1 2 跳转至

回复

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