kaiyun官方注册
您所在的位置: 首页> EDA与制造> 解决方案> 了解和使用no-OS及平台驱动程序

了解和使用no-OS及平台驱动程序

2022-04-12
作者:ADI公司高级软件工程师 Mahesh Phalke
来源:ADI公司

快速发展的技术需要软件支持(固件驱动程序和代码示例)来简化设计导入过程。本文介绍如何利用no-OS(无操作系统)驱动程序和平台驱动程序来构建ADI公司精密模数转换器和数模转换器的应用固件,这些器件在速度、功耗、尺寸和分辨率方面提供高水平的性能。

ADI公司提供基于no-OS驱动程序的嵌入式固件示例来支持精密变换器。no-OS驱动程序负责器件配置、转换器数据采集、执行校准等,而基于no-OS驱动程序的固件示例则便于将数据传输到主机进行显示、存储和进一步处理。

no-OS和平台驱动程序简介

顾名思义,no-OS驱动程序设计用于通用(或无特定)操作系统。该名称还意味着这些驱动程序可以用在没有任何OS支持的裸机(BareMetal)系统上。no-OS驱动程序旨在为给定精密转换器的数字接口访问提供高级API。no-OS驱动程序使用器件的这些API接口访问、配置、读取、写入数据,而无需知道寄存器地址(存储器映射)及其内容。

no-OS驱动程序利用平台驱动程序层来支持跨多个硬件/软件平台复用相同的no-OS驱动程序,使固件高度可移植。平台驱动程序层的使用将no-OS驱动程序隔绝开来,后者无需知道平台特定接口(如SPI、I2C、GPIO等)的低级细节,因此no-OS驱动程序不需要修改就能跨多个平台复用。

1.jpg

精密转换器的no-OS驱动程序代码通常包含在两个以C编程语言编写的源文件中:adxxxx.c和adxxxx.h,其中xxxx代表器件名称(例如AD7606、AD7124等)。器件头文件(adxxxx.h)包含器件特定结构、枚举、寄存器地址和位掩码的公共编程接口,将此文件包含到所需的源文件中便可使用这些公开访问接口。器件源文件(adxxxx.c)包含接口的实现,用于初始化和移除器件、读/写器件寄存器、从器件读取数据、获取/设置器件特定参数等。

典型的no-OS驱动程序围绕一组常见功能来构建:

►器件特定寄存器地址、位掩码宏、器件配置枚举、读/写器件特定参数(如过采样、增益、基准电压等)的结构的声明。

►通过no-OS驱动程序的器件初始化/移除函数以及器件特定的初始化和驱动程序结构与描述符初始化物理器件/解除器件初始化。

►使用器件寄存器读/写函数访问器件存储器映射或寄存器详细信息,例如adxxxx_read_register()或adxxxx_write_register()。

no-OS驱动程序代码使用

使用器件特定地址、位掩码、参数配置枚举和结构:

如前所述,adxxxx.h头文件包含所有器件特定枚举和结构的声明,这些枚举和结构被传递到器件特定的函数或API以配置或访问器件参数。具体情况如图3所示。

图3中显示的adxxxx_config结构允许用户选择多路复用器通道并为其设置过采样率。此结构的成员(afe_mux_channel和oversampling)是存在于同一头文件中的枚举,其包含这两个字段的所有可能值的数字常量,用户可以选择。

adxxxx.c文件中定义的adxxxx_set_adc_config()函数通过配置结构获取用户传递的配置/参数,并进一步调用adxxxx_spi_reg_write()函数,通过数字接口(在上例中是SPI)将数据写入ADXXXX_REG_CONFIG器件寄存器。

使用no-OS驱动程序结构和初始化函数初始化器件:

2.jpg

用户可以通过no-OS驱动程序器件特定的adxxx_read/write()函数访问器件寄存器内容(例如产品ID、暂存区值、OSR等)。

大多数情况下,用户不会直接使用寄存器访问函数。器件特定的函数通过这些寄存器访问函数(如adxxxx_spi_reg_read/write())来调用。如果可能,建议使用器件配置和状态API来访问器件存储器映射,而不要使用直接寄存器访问函数,因为这样能确保器件驱动程序结构与器件中的配置保持同步。

平台驱动程序

平台驱动程序是包装平台特定API的硬件抽象层(HAL)之一。它们由no-OS器件驱动程序或用户应用程序代码调用,使后者可以独立于底层硬件和软件平台。平台驱动程序包装了平台特定的低级硬件功能,例如SPI/I2C初始化和读/写、GPIO初始化和读/写、UART初始化和接收/发送、用户特定的延迟、中断等。

3.jpg

4.jpg

5.jpg

6.jpg

作者简介

Mahesh Phalke是ADI公司位于印度班加罗尔的精密转换器技术软件部门的高级软件工程师。2011年毕业于瀑内大学,获电子工程学士学位。

AETweidian.jpg

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。
Baidu
map