当前位置: 首页 > news >正文

用ip的网站要备案吗山东东营市东营区

用ip的网站要备案吗,山东东营市东营区,低价格的网站建设公司,自媒体网站建设文章目录前言一、参考官方驱动API1.1:基础API1.2:参数结构体二、功能函数操作逻辑梳理2.1:系统初始化逻辑:2.2:ADC配置初始化2.3:ADC通道配置2.4:原始数据获取2.5:校准函数三、HAL层…

文章目录

  • 前言
  • 一、参考官方驱动API
    • 1.1:基础API
    • 1.2:参数结构体
  • 二、功能函数操作逻辑梳理
    • 2.1:系统初始化逻辑:
    • 2.2:ADC配置初始化
    • 2.3:ADC通道配置
    • 2.4:原始数据获取
    • 2.5:校准函数
  • 三、HAL层函数定义
  • 四、HAL层函数验证
    • 4.1:验证方法论
    • 4.2:验证过程
      • 4.2.1:时钟使能(0x401800F0-bit0)
      • 4.2.2:通道使能(0x4018C000)
      • 4.2.2:时钟源分频(0x4018C000-bit30-28)
      • 4.2.3:功能函数验证(0x4018C044)
  • 总结


前言

本文详细记录了Zephyr下ADC驱动开发中硬件抽象层(HAL)的设计与实现过程。HAL层作为连接底层硬件与上层驱动的重要桥梁,其设计质量直接影响驱动的稳定性和可移植性。文档包含HAL层接口设计、功能函数实现、验证方法及结果分析等内容。

一、参考官方驱动API

1.1:基础API

typedef int (*adc_api_channel_setup)(const struct device *dev,const struct adc_channel_cfg *channel_cfg);typedef int (*adc_api_read)(const struct device *dev,const struct adc_sequence *sequence);

重要说明:ADC驱动API有两个功能函数,为保证与官方统一,传入的参数与我们在HAL层头文件定义的结构体相同

  • 通道初始化:adc_api_channel_setup(),需要传入的结构体adc_channel_cfg
  • 数据读取:adc_api_read(),需要传入的结构体adc_sequence

1.2:参数结构体

struct adc_channel_cfg {enum adc_gain gain;           // 增益选择enum adc_reference reference; // 参考电压选择uint16_t acquisition_time;    // 采样时间uint8_t channel_id : 5;       // 通道ID (0-31)uint8_t differential : 1;     // 差分模式标志// 可选字段(根据CONFIG_ADC_CONFIGURABLE_INPUTS)uint8_t input_positive;       // 正输入uint8_t input_negative;       // 负输入(差分模式)
};
struct adc_sequence {const struct adc_sequence_options *options; // 序列选项uint32_t channels;                          // 通道位掩码void *buffer;                               // 数据缓冲区size_t buffer_size;                         // 缓冲区大小uint8_t resolution;                         // 分辨率uint8_t oversampling;                       // 过采样bool calibrate;                             // 校准标志
};

说明:

  • adc_channel_cfg:我们在HAL层需要定义的channel_cfg结构体,仅需考虑acquisition_time和channel_id即可,但需要额外定义结构体,来获取其他参数。
  • adc_sequence:同理在HAL层需要定义的adc_sequence结构体,仅需考虑channels即可,但需要额外定义结构体,来获取其他参数。

二、功能函数操作逻辑梳理

2.1:系统初始化逻辑:

  • 门控clock使能
  • 门控clock复位
  • ADC总线时钟使能
  • Timer使能(中断,延时)

2.2:ADC配置初始化

  • 配置对应GPIO引脚为ADC功能
  • 时钟源选择
  • 时钟分频
  • 必须功能:clean,首次抓换延迟
  • 校准函数
  • 配置ACQ采样时间持续寄存器

2.3:ADC通道配置

  • 根据通道名称,配置对应GPIO引脚
  • 模式选择:暂提供nolmal,单次,连续三种
  • 若为连续模式:配置第11:8位采样时间间隔
  • 启动通道

2.4:原始数据获取

  • 根据指定通道获取数据

2.5:校准函数

  • 校准数据误差,可使用默认值

三、HAL层函数定义

根据针对性的功能函数梳理,我们可以裁剪出以下HAL层函数:

//结构体初始化,将寄存器结构体指针指向基地址
void hal_kadc_module_init(void); 
//时钟源选择与分频
void hal_kadc_clk_div_config(enum adc_ch_clk inclk,uint16_t div_clk);
//校准
void kadc_hal_calibrate(uint32_t pre,bool use_data_en,bool use_mod,bool use_en,uint32_t cal_data);
//采样维持时间
void kadc_hal_acq_time_config(uint32_t acq_time);
//模式配置
void kadc_hal_mode_config(uint16_t channel_id,enum kadc_ch_mode mode,uint16_t continue_mod_time_n);
//通道使能
void kadc_hal_enable(uint16_t channel_id,enum kadc_ch_en en);
//数据获取
uint32_t kadc_hal_get_data(uint16_t channel_id);

四、HAL层函数验证

4.1:验证方法论

在完成HAL层函数的编写,我们不急于马上进行驱动开发,为保证减少驱动层BUG的出现,应先对HAL层进行验证,确认每条函数是否正确将寄存器置位。
常用的验证方法:

  • 应用层:main.c验证函数,且打印函数调用前后的寄存器信息
  • 驱动层:编写Shell指令进行函数验证,且打印函数调用前后的寄存器信息

4.2:验证过程

4.2.1:时钟使能(0x401800F0-bit0)

  • 置位前:
    在这里插入图片描述
  • 置位后:(01)
    在这里插入图片描述
    说明:bit0为使能位,可以验证得时钟使能函数操作正确!

4.2.2:通道使能(0x4018C000)

  • 通道1置位后:(02)
    在这里插入图片描述
    说明:bit1为通道1使能位,各通道对应各bit,可以验证得通道使能函数操作正确!

4.2.2:时钟源分频(0x4018C000-bit30-28)

  • 分频系数:3(30)
    在这里插入图片描述
    说明:bit30:28为分频系数位,可以验证得分频函数操作正确!

4.2.3:功能函数验证(0x4018C044)

  • 3.3V通电状态:
    在这里插入图片描述
    说明:根据寄存器信息,当前ADC捕获值为4084,即当前电压为4084*3.3/4096=3.29V,功能正常!

  • 浮空状态
    在这里插入图片描述
    说明:根据寄存器信息,当前ADC捕获值为1412,即当前电压为1412*3.3/4096=1.13V,功能不正常!待确认。

总结

硬件抽象层(HAL)作为连接底层硬件与上层应用的桥梁,需实现标准化接口与硬件无关性设计。针对ADC模块开发时,需封装设备初始化、通道配置、采样触发、数据读取等基础功能。本文介绍了ADC驱动开发下HAL层开发的思路与验证手段,为后续驱动层开发减少了BUG的出现和调试的困难。

http://www.dtcms.com/a/437732.html

相关文章:

  • 一元购网站建设方案书公司网页设计的公司
  • 企业网站备案网站备案 假通信地址
  • 计算机网络网站建设的实训总结厦门外贸商城网站建设
  • 想学做网站免费建设互动的网站
  • 网站 做百度推广有没有效果怎么样网站百度收录怎么做
  • 湖南省建设资源人才网站google play三件套
  • 虚拟主机如何搭建网站asp.net 手机网站模板
  • 手机网站返回跳转页面代码一个人免费观看视频播放
  • 国内空间站网站如何在国外推广
  • 南京做网站的客户电话育贤网站建设
  • ajax网站开发技术做门名片设计网站
  • 网站的三要素惠州做棋牌网站建设找哪家效益快
  • 计算机专业有哪些谷歌网站关键词优化
  • 怎么样做一家卖东西的网站明企科技网站建设系统
  • 深圳网站域名在线设计网站海报
  • 企业网站能提供哪些服务私人可以搭建服务器吗?
  • 武清网站建设360免费建站搜索引擎收录吗
  • 做网站推广好做吗网站建设的原则有哪些方面
  • 网站建设方案策划书ppt模板下载动画设计属于什么专业类别
  • 企业网站的需求是什么免费服务器购买
  • 网站建设免责申明书河北邢台房价多少钱一平方
  • 网站制作哪个公司好wordpress链接伪静态
  • 个人可以备案网站的内容单页企业网站模板
  • 中国在数码网站注册域名好>石家庄百度推广电话
  • wordpress 关联seo顾问服务公司
  • 深圳专业网站建设公wordpress登录前后菜单
  • 做网站都需要具备什么做博客网站怎么赚钱
  • 一个后台管理多个网站南宁建网站
  • 设计网站名字wordpress付费发布
  • 太原网站制作陕西网络公司