准备用来研究一下串口相关知识,基本思路如下:
1 初衷
STM32中的串口通信,初看起来非常简单,特别是不需要RTS和CTS的情况下. 使用HAL库代码,简单的几行就可以搞定,但最近我在编写一个小型的串口调度器软件的时候,就碰到了问题,虽然解决了,但其中有若干问题值得探讨,比如串口通讯的三种模式:轮询, 中断及DMA方式,这三种方式在与其它设备或上位机进行通信时优缺点何在; 丢帧时如何处理,这些问题都值得探讨. 另外在RTOS环境下, UART作为独占资源,应该如何对它进行共享,这也是一个非常值得关注的问题.
所以准备花点时间,好好研究,并做为一个专题与广大开发人员一起讨论一下.
2 主要工作
本人现在使用QT写了一个简单的串口调度器, 准备作为今后串口调试的通用上位机程序, 基本界面如下
在开发板这一端, 准备尝试三种不同的通信模式,检测各自的优点及缺点,并与上位机通信,检查最终的效果.
封装一个简单的通信协议,基于HAL库. 对数据进行封装, 组成特定的通信帧,简化通信过程. 该部分的难点在于,不同的MCU系列中断及DMA设置可能会有差异, 从而带来封装的难度. 目前的想法是建立一个专用的配置文件CONFIG, 通过修改该配置文件来达到硬件无关的特性.
3 预期效果
借此机会一方面完善正在设计的上位机程序;另一方面希望对串口通信有更深入的理解,特别是专用协议的设计,对本人来说是一大挑战,希望能取得突破.
学习研究过程发文共享并讨论.
|