例程集合

1 min read 联合编程

例程集合

注意:这里的所有例程,MCU 部分可以直接使用。而自定义 CPLD 部分不能直接使用 Quartus 编译,必须先创建本地 CPLD 工程再添加逻辑代码。

一、Uart 样例

1. Uart 的 Dma 中断的使用

展示如何在串口中使用 DMA 进行收发。实现方式为:DMA 发送 + DMA-TC 中断。适用于不太精确的发送完成定位;若需精确定位(如 485 通信),建议使用 UART-TC 中断替换。

二、ADC 样例

1. ADC 添加到 CPLD 工程

展示在自定义 CPLD 中加入 ADC 逻辑的过程。注意:若打开样例工程,需将 Quartus 中的 alta_sim.v 替换为本地路径下的文件。

2. ADC 循环采集多 channel

开启 DMA 循环不间断读取多个 ADC 通道值。数据以覆盖方式存入 adc_table 数组。本样例展示了在 platformio.ini 中开启 ip_name = analog_ip 的用法。

3. ADC + LED 控制 (CPLD)

在 CPLD 中合并 ADC 逻辑与 LED 控制逻辑。通过 VE 定义,实现 MCU GPIO 控制一个 LED,同时 CPLD 逻辑控制另一个 LED 闪烁。

三、USB 样例

  • cdc+msc+hid+midi 样例:四种功能全集成,基于 407 工程。
  • 双串口 CDC 样例:枚举出两个虚拟串口。
  • 单串口 CDC / U 盘 (MSC) 样例:基础 USB 功能展示。
  • 103 工程 USB 样例:在 48PIN 的 103 芯片上使用 tinyUSB。

四、SPI 样例

1. SPI 一般使用 (spi-comm)

展示不带 CPLD 的 SPI 封装函数使用。提供 SPI_SendExt (纯发送) 和 SPI_SendAndRecvExt (一个片选周期内先发后收) 两个核心函数。

五、MCU+CPLD 样例

  • GPIO 控制 CPLD 逻辑:展示 MCU GPIO 信号输入 CPLD 后控制 LED 闪烁。
  • MCU 读写 CPLD 寄存器:展示 MCU 通过 AHB 和 APB 总线读写 CPLD 内部寄存器的最简逻辑。
  • CPLD 实现 UartTx:用逻辑实现串口发送外设,并与 MCU 交互。
  • CPLD 配合 DMA 读取:展示 CPLD 如何实现流控,配合 MCU DMA 正常接收数据。
  • ADC + SPI_FULL 集成:在 100PIN 开发板上同时集成 ADC 和 SPI 逻辑,通过地址区分使能。

六、其他样例

  • FreeRTOS 整合:包含 SDK、FreeRTOS 以及异步 Log 输出线程的完整工程。
  • C++ 调用样例:展示在 AG32 工程中调用 C++ 代码的方法。
  • Bootloader 升级:串口近端升级专题样例。
这篇文档有帮助吗?