GD32F450与GD25Q32 SPI通信实现及应用例程

需积分: 45 88 下载量 59 浏览量 更新于2024-12-21 7 收藏 5KB ZIP 举报
资源摘要信息:"RT-thread+GD32F450+spi+GD25Q32.zip" 1. RT-thread: RT-thread是一个开源的实时操作系统(RTOS),它具有体积小、可裁剪、高效率的特点,适用于嵌入式系统。RT-thread拥有一个完整的软件包生态系统,包括内核、设备驱动、中间件和开发工具,可以灵活地应用于多种硬件平台和应用场景。RT-thread提供了丰富的组件和模块,包括但不限于网络协议栈、文件系统、图形用户界面等。这个软件包中包含了针对GD32F450系列微控制器的底层驱动和使用例程,说明了如何在RT-thread环境下对GD32F450的SPI接口进行操作。 2. GD32F450系列MCU: GD32F450系列是兆易创新(GigaDevice)公司推出的高性能MCU,基于ARM Cortex-M4内核,运行频率最高可达240MHz。该系列MCU具有丰富的外设接口,包括多个串行通讯接口,特别适合用于高速数据处理和复杂算法的应用场景。GD32F450系列MCU广泛应用于工业控制、电机驱动、消费电子等领域。 3. SPI通信协议: SPI(Serial Peripheral Interface)通信协议是一种高速、全双工、同步的串行通信接口,常用于微控制器与各种外围设备之间的通信。SPI接口有四个主要的信号线:SCLK(时钟线)、MOSI(主设备数据输出,从设备数据输入线)、MISO(主设备数据输入,从设备数据输出线)、CS(片选线)。在多设备通信中,每个设备都有独立的CS线以区分不同的从设备。 4. GD25Q32 SPI Flash: GD25Q32是一款32Mb(即4MB)容量的串行NOR Flash存储器,兼容标准的SPI协议。它支持多种命令,包括标准的SPI命令、双/四I/O命令以及四路I/O命令。GD25Q32具有高速的数据读取能力,能够满足现代电子设备对于快速启动和大数据传输的需求。该芯片在嵌入式系统中常被用作程序存储或数据缓存,特别是在需要大容量存储但读写速度要求较高的应用场合。 5. 底层驱动和使用例程: 在软件包中通常会包含针对特定硬件的底层驱动程序,这些程序为硬件提供基本的操作接口,使得开发者能够更方便地控制硬件。底层驱动程序一般包括初始化、读写操作、状态查询等功能。使用例程则是一些简单的程序示例,展示了如何调用底层驱动程序提供的接口来实现具体的功能,比如读写数据到SPI Flash。通过这些例程,开发者可以更快地理解硬件的工作方式,并将其应用到自己的项目中。 结合以上知识点,这个软件包的目标是为开发者提供一套完整的工具,以便在RT-thread操作系统下,对GD32F450系列MCU进行SPI通信,并实现与GD25Q32 SPI Flash的数据交换。开发者可以利用这些工具快速搭建起硬件平台,测试和验证自己的应用,进而开发出稳定的嵌入式软件产品。
2021-04-19 上传
【RT-Thread作品秀】EE-Lab作者:卿俊成 概述随着集成电路的不断发展,电子测量仪器分别向着高性能和微型化不断发展。本作品基于微型化便携式需求,设计一个集成数字电源、信号发生器、示波器的便携式电子测量仪器。 开发环境硬件:ART-Pi开发板、2.8‘SPI TFT屏幕(ILI9341)、AD9833模块、自制扩展板(由于设计失误,无法使用) RT-Thread版本: RT-Thread Nano(V3.1.3) 开发工具及版本:STM32CubeMX(V6.1.0)、HAL库(H7_V1.8.0)、Keil/MDK(V5.33.0.0) RT-Thread使用情况概述本应用使用Nano版RT-Thread,因此只使用了内核部分。 本应用使用信号量作为DMA分批通过SPI刷屏的屏幕数据,在中断中释放信号量,用于分批刷屏的同步。 本应用使用Finsh组件作为无GUI情况下的数据查看方式,及命令行方式对AD9833模块及定时器的操作方式。 硬件框架电脑端通过Putty软件与ART-Pi开发板的Finsh组件通信,实现控制功能。 SPI TFT屏幕模块由开发板的SPI4总线控制,作为波形显示界面。 AD9833信号发生模块由开发板通过模拟SPI控制,作为信号发生器。 信号测试夹用于外部电压输入,作为示波器的源信号。 由于自制扩展板存在问题,不在此介绍,但附上立创eda工程的在线链接:https://oshwhub.com/OneToken/art-pi-ee-tools 软件框架说明Finsh组件通过与电脑端交互,控制TIM15的预装载值,达到通过控制TIM15触发DMA_ADC转换的采样频率,并在显存对应位置打点,实现示波器功能。同时还可以控制AD9833产生频率不同的三角波、正弦、方波。 屏幕的刷新,由DMA1通道0将内部预先分配好的显存数据搬运至SPI移位寄存器,从而发送至ILI9341,实测频率60Mbit的情况下可以完美刷新,实现了高速刷屏的功能。 软件模块说明DMA传输ADC数据框图 通过定时器15触发DMA1通道1将ADC数据循环采集至指定内存处,实现示波器数据采集功能。 SPI通过DMA方式刷屏功能框图 理想情况下的刷屏方式 受到DMA一次传输数据数目uint16_t也就是65535的限制,无法一次性完成显存刷新至屏幕,因此分成三个数据包,依次顺序传输,使用信号量作为同步信号。 最终实现的刷屏方式 演示效果演示视频: 比赛感悟通过本次比赛,极大程度上熟悉了H7系列开发板,特别是大量参考了安富莱提供的教程,了解了H7的多域设计,RAM的分布式设计以及指定存储位置,DMA通信只能用于特定的RAM区和特定的外设之间,若RAM区域使用最高性能的DTM区,则大部分DMA通信都无法使用。在决定使用RT-Thread Nano之前,尝试使用RT-Thread完整版,按照完整版的流程注册SPI设备并且使用时,发现无法驱动SPI液晶屏,使用逻辑分析仪抓取信号也没啥问题,因此才换成RT-Thread Nano。 通过本次的小作品,比较深入的理解了RTOS的作用,特别是用于线程同步时,阻塞下来,等待中断释放信号量的方式,使得分段DMA SPI刷屏也能毫无感知延时的连续刷新。