littlebot
Published on 2025-04-18 / 0 Visits
0

【源码】基于C语言的UART通信系统

项目简介

本项目是基于C语言的UART通信系统,构建了主机应用程序与运行在FRDM - KL25Z上的命令处理器间的通信机制。主机应用程序发送命令给命令处理器,处理器响应并在必要时将输出返回给主机程序,且双方传输的消息采用霍夫曼编码算法压缩,优化了吞吐量。

项目的主要特性和功能

  1. 霍夫曼编码:编译时构建包含霍夫曼编码的表格,利用查找表实现消息编解码,提升传输效率,用特殊字符标识消息传输结束。
  2. 命令处理:命令处理器支持多种命令,如打印作者姓名、打印指定内存十六进制转储、显示所有命令、以给定频率播放音调、通过TSI滑动播放音调。
  3. 数据转换:实现霍夫曼编码(ASCII码)与原始字节的转换,保证数据传输时正确表示。
  4. TSI命令:结合TSI轮询、ADC和DMA,根据用户操作的TSI滑块长度转换为音调频率并播放。
  5. 测试机制:用CUnit测试框架对霍夫曼模块和ASCII - 字节转换模块的API进行单元测试;编写IPC程序对霍夫曼编码模块和ASCII - 字节转换模块的组合功能手动测试;包含cbfifo测试程序。

安装使用步骤

准备工作

仅通过USB将一个FRDM - KL25Z连接到主机。

部署与构建

  1. 通过MCUXpresso部署FRDM - KL25Z的二进制文件。
  2. host/目录下运行Makefile构建主机应用程序terminal

运行程序

启动主机应用程序terminal和FRDM - KL25Z,用户即可开始向设备发送命令。terminal运行时自动检测并配置代表已连接FRDM - KL25Z的串口,当前UART0配置如下: | 波特率 | 停止位 | 奇偶校验位 | 数据位 | | ---- | ---- | ---- | ---- | | 115200 | 2 | 0 | 8 |

命令使用

用户按以下命令格式将命令字符串输入到terminal程序中: | 命令描述 | 命令 | 参数描述 | | ---- | ---- | ---- | | 打印作者姓名 | Author | N/A | | 打印请求内存的十六进制转储 | Dump address length | Address:源内存地址;length:要转储的数据长度,必须为十进制或十六进制格式,且不大于128且不小于0。 | | 显示所有命令 | Help | N/A | | 以给定频率播放音调 | Tone freq time | freq:要播放的目标频率;time:播放的秒数。 | | 通过TSI滑动播放音调 | TSI time | time:播放的秒数。 |

注意事项

使用TSI命令时,当出现消息Please input TSI value,用户应在该消息显示时触摸TSI,而非命令即将运行时触摸。在音调播放期间,用户不应持续触摸TSI,直到输入消息再次出现时才可再次触摸。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】