CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
无匹配项 共计114个匹配页面

驱动架构

GR551x外设驱动软件架构分为硬件抽象层(Hardware Abstraction Layer,HAL)驱动和底层(Low Layer,LL)驱动(下文简称为HAL驱动和LL驱动),驱动架构如图 1所示。

图 1 GR551x驱动架构

HAL层与LL层在软件架构上是相互关联的,HAL内部对寄存器的访问需要调用LL层的API。通常情况下,开发者需要使用HAL层的API来实现相应的功能。而对于HAL层无法覆盖的特殊功能,开发者可调用LL层接口快速封装所需的API接口来实现。

HAL驱动

HAL驱动将各个外设最常用的功能封装为一系列简单易用的API接口,开发者可利用这些接口轻松实现底层外设硬件与上层应用程序的交互。

HAL驱动主要具有以下特点:

  • 驱动API可兼容同系列的芯片,部分芯片的特殊功能通过扩展API实现。
  • 提供三种API编程模式:轮询、中断、DMA(Direct Memory Access)。
  • API完全可重入,可在RTOS实时操作系统中使用。
  • 多实例支持。同一API可在同一外设的多个实例(如I2C0、I2C1)中调用。
  • 可在外设初始化/反初始化API中调用用户回调函数,以实现GPIO(General Purpose Input/Output)、中断、DMA的初始化/反初始化。
  • 可在外设中断事件或错误中调用回调函数,通知用户相应事件被触发。
  • 支持锁机制,可实现共享资源的安全访问。
  • 驱动中的轮询处理采用超时机制实现,可避免程序死循环。

LL驱动

LL驱动通过内联函数的方式封装了各个外设寄存器的原子操作。因此,LL驱动比HAL驱动更加接近硬件,提供全面覆盖外设功能的API函数接口。开发者可使用LL驱动对HAL驱动无法覆盖到的外设功能进行配置。对于性能要求苛刻或存储空间不足的应用场景,开发者可直接使用LL驱动。

LL驱动主要具有以下特点:

  • 采用内联函数实现,无函数调用开销。
  • 屏蔽了寄存器操作,可移植性高,易于复用。
  • 功能覆盖全面。

扫描关注

打开微信,使用“扫一扫”即可关注。