littlebot
Published on 2025-04-01 / 1 Visits
0

【源码】基于C++的串行通信示例项目

项目简介

本项目是一个展示自定义C++串行通信库的示例项目,针对使用Microchip Studio的SAMD21芯片进行了配置。项目提供了多种串行通信方式的库,如UART、SPI、USB,并包含Python脚本用于生成有限状态机代码,同时提供了通用的环形缓冲区模板和高级串行缓冲区类。

项目的主要特性和功能

  1. 多种串行通信库:包含Serial UART、Serial SPI和基于tinyUSB栈的Serial USB库。
  2. 代码生成工具:提供Python脚本用于生成有限状态机代码,有助于简化代码和最大化功能。
  3. 数据存储类:通用的环形缓冲区模板和高级串行缓冲区类,可直接用于数据存储或其他串行功能。
  4. 多状态交互:示例项目支持多种命令交互,如“hello world”、“integer_#”、“square_#!”等,并具备“on”“off”状态切换。
  5. 可扩展性:支持添加新的硬件,可针对不同芯片扩展USB、SPI和UART功能。

安装使用步骤

编译注意事项

本项目使用了C++11特性,如nullptr和作用域枚举。若出现相关编译错误,请在C++编译器中添加-std=c++11标志。

运行示例项目(SAMD21G18A)

  1. 参考必要的数据手册,设置SAMD21和所选的调试器。
  2. 常规示例使用串行CDC USB连接。
  3. 打开波特率为115200的串行终端,并确保连接到正确的端口。
  4. 若连接正确,应能看到指示USB已插入的文本。
  5. 可输入以下命令:
    • hello world (响应 World: hello!
    • integer_# (将 # 替换为ASCII数字)
    • square_#! (将 # 替换为ASCII数字)
    • off (进入“off”状态)
    • echo (将发送到芯片的数据回显在终端上,但停止示例中的常规功能)
  6. 在“off”状态下,发送命令 on 可返回“on”状态。
  7. 若要使用UART功能而非USB功能,请打开 example_state_machine.cpp,取消注释 //#define USING_UART 行。
    • 在SAMD21 Feather M0上,需连接到TX和RX引脚。
    • 默认波特率为115200,若要更改,可打开 example_state_machine.h,将 #define BAUD_RATE 115200 更改为所需的波特率。
  8. 若要在不同芯片上尝试此项目,需在Microchip Studio中基于该芯片创建新的C++项目,将 SerialLibraryExample 子目录下的所有文件添加到新项目中,参考文档了解如何将新芯片添加到库中。同时,打开 example_state_machine.cpp,在 ExampleStateMachine::InitializingStateAction(void) 函数定义中 Util::enterCriticalSection();Util::exitCriticalSection(); 调用之间更改代码,以配置芯片的时钟。

添加新硬件

  1. 在Microchip Studio中为新芯片创建一个新的C++项目。
  2. 参考 main.cpp 包含的头文件,记录其用于新芯片的头文件名称。
  3. 将整个 serial_controllers 目录添加到项目中,并将其添加到C和C++包含路径。
  4. 打开 serial_comm_options.h,添加一个新的宏来定义新芯片,例如 #define OPT_SERCOM_CHIP_NAME 2,确保其编号唯一。

添加USB功能

  1. 打开 tusb_config.h
  2. 找到类似代码块,在 #else 行之前添加为新芯片的配置代码。
  3. 进入 serial_usb 目录下的 hardware 目录,为新芯片添加新的cpp文件并按要求编写内容。

添加SPI和UART通用功能

  1. 进入 serial_common 目录下的 hardware 目录,为新芯片添加新的头文件和cpp文件并按要求编写内容。

添加UART功能

  1. 进入 serial_uart 目录下的 hardware 目录,为新芯片添加新的头文件和cpp文件并按要求编写内容。
  2. 打开 uart_config.h,在相应位置添加为新芯片的配置代码。

添加SPI功能

  1. 进入 serial_spi 目录下的 hardware 目录,为新芯片添加新的头文件和cpp文件并按要求编写内容。
  2. 打开 spi_config.h,在相应位置添加为新芯片的配置代码。

下载地址

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