项目简介
本项目是基于C语言的UART通信系统,构建了主机应用程序与运行在FRDM - KL25Z上的命令处理器间的通信机制。主机应用程序发送命令给命令处理器,处理器响应并在必要时将输出返回给主机程序,且双方传输的消息采用霍夫曼编码算法压缩,优化了吞吐量。
项目的主要特性和功能
- 霍夫曼编码:编译时构建包含霍夫曼编码的表格,利用查找表实现消息编解码,提升传输效率,用特殊字符标识消息传输结束。
- 命令处理:命令处理器支持多种命令,如打印作者姓名、打印指定内存十六进制转储、显示所有命令、以给定频率播放音调、通过TSI滑动播放音调。
- 数据转换:实现霍夫曼编码(ASCII码)与原始字节的转换,保证数据传输时正确表示。
- TSI命令:结合TSI轮询、ADC和DMA,根据用户操作的TSI滑块长度转换为音调频率并播放。
- 测试机制:用CUnit测试框架对霍夫曼模块和ASCII - 字节转换模块的API进行单元测试;编写IPC程序对霍夫曼编码模块和ASCII - 字节转换模块的组合功能手动测试;包含cbfifo测试程序。
安装使用步骤
准备工作
仅通过USB将一个FRDM - KL25Z连接到主机。
部署与构建
- 通过MCUXpresso部署FRDM - KL25Z的二进制文件。
- 在
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】