0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

驱动开发时钟API的使用

麦辣鸡腿堡 ? 来源:嵌入式Linux充电站 ? 作者:Vincent ? 2023-09-27 14:30 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

时钟API的使用

对于一般的驱动开发(非clock驱动),我们只需要在dts中配置时钟,然后在驱动调用通用的时钟API接口即可。

1、设备树中配置时钟

mmc0:mmc0@0x12345678{
  compatible = "xx,xx-mmc0";
  ......
  clocks = < &peri PERI_MCI0 >;//指定mmc0的时钟来自PERI_MCI0,PERI_MCI0的父时钟是peri
  clocks-names = "mmc0"; //时钟名,调用devm_clk_get获取时钟时,可以传入该名字
        ......
 };

以mmc的设备节点为例,上述mmc0指定了时钟来自PERI_MCI0,PERI_MCI0的父时钟是peri,并将所指定的时钟给它命名为"mmc0"。

2、驱动中使用API接口

简单的使用:

/* 1、获取时钟 */
host- >clk = devm_clk_get(&pdev- >dev, NULL); //或者devm_clk_get(&pdev- >dev, "mmc0")
 if (IS_ERR(host- >clk)) {
  dev_err(dev, "failed to find clock sourcen");
  ret = PTR_ERR(host- >clk);
  goto probe_out_free_dev;
 }

/* 2、使能时钟 */
ret = clk_prepare_enable(host- >clk);
if (ret) {
 dev_err(dev, "failed to enable clock source.n");
 goto probe_out_free_dev;
}

probe_out_free_dev:
 kfree(host);

在驱动中操作时钟,第一步需要获取struct clk指针句柄,后续都通过该指针进行操作,例如:设置频率:

ret = clk_set_rate(host- >clk, 300000);

获得频率:

ret = clk_get_rate(host- >clk);

注意:devm_clk_get()的两个参数是二选一,可以都传入,也可以只传入一个参数。

i2c、mmc等这些外设驱动,通常只需要使能门控即可,因为这些外设并不是时钟源,它们只有开关。如果直接调用clk_ser_rate函数设置频率,clk_set_rate会向上传递,即设置它的父时钟频率。例如在该例子中直接调用clk_set_rate函数,最终设置的是时钟源peri的频率。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11536

    浏览量

    214922
  • API
    API
    +关注

    关注

    2

    文章

    1715

    浏览量

    64524
  • 开发
    +关注

    关注

    0

    文章

    373

    浏览量

    41648
  • 时钟
    +关注

    关注

    11

    文章

    1909

    浏览量

    133482
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    OpenHarmony 应用开发SDK、API 与基础工具

    一、整体说明 ArkTS 语言是鸿蒙系统主推的应用开发语言。因此鸿蒙系统提供给开发者的 API 绝大部分也是 ArkTS 语言的。 鸿蒙系统提供的 API 范围非常全面,包括应用服务、
    发表于 09-19 15:45

    分析API都有哪些特点

    。因此,理解好的API特性是至关重要的。那么什么是好的API呢? API一词似乎是对软件开发人员的一种Rorschach Test。Web开发
    发表于 09-28 17:38 ?11次下载

    Android开发手册—API函数详解

    Android开发手册—API函数详解
    发表于 10-17 09:01 ?13次下载
    Android<b class='flag-5'>开发</b>手册—<b class='flag-5'>API</b>函数详解

    基于Android开发手册—API函数详解

    基于Android开发手册—API函数详解
    发表于 10-24 09:06 ?18次下载
    基于Android<b class='flag-5'>开发</b>手册—<b class='flag-5'>API</b>函数详解

    《Linux设备驱动开发详解》第10章、中断与时钟PDF免费下载

    《Linux设备驱动开发详解》第10章、中断与时钟
    发表于 10-27 11:29 ?0次下载
    《Linux设备<b class='flag-5'>驱动</b><b class='flag-5'>开发</b>详解》第10章、中断与<b class='flag-5'>时钟</b>PDF免费下载

    TI网络开发套件v2.21 API 参考指南

    本参考指南NDK主要编程API参考指南。它旨在帮助开发网络应用程序,并描述由堆栈库提供的各种API函数。
    发表于 04-13 16:35 ?3次下载
    TI网络<b class='flag-5'>开发</b>套件v2.21 <b class='flag-5'>API</b> 参考指南

    用于 Linux 管理 API 手册的 PTP 时钟管理器

    用于 Linux 管理 API 手册的 PTP 时钟管理器
    发表于 02-02 18:44 ?1次下载
    用于 Linux 管理 <b class='flag-5'>API</b> 手册的 PTP <b class='flag-5'>时钟</b>管理器

    API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

    API托管、API运维、API变现,助力企业数字化转型。 API和微服务已经成为核心的数字化变革驱动引擎,数字企业RD始终围绕着
    的头像 发表于 02-17 19:05 ?1395次阅读

    API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

    华为云API Arts是API全生命周期一体化协作平台,支持开发者一站式高效实现API设计、API开发
    的头像 发表于 03-01 15:45 ?1069次阅读
    <b class='flag-5'>API</b>+DevOps:华为云<b class='flag-5'>API</b> Arts一体化平台,端到端呵护您的<b class='flag-5'>API</b>

    用于 Linux 管理 API 手册的 PTP 时钟管理器

    用于 Linux 管理 API 手册的 PTP 时钟管理器
    发表于 07-04 18:31 ?1次下载
    用于 Linux 管理 <b class='flag-5'>API</b> 手册的 PTP <b class='flag-5'>时钟</b>管理器

    基于Java的接口快速开发框架——magic-api

    magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象
    发表于 07-19 11:42 ?1462次阅读
    基于Java的接口快速<b class='flag-5'>开发</b>框架——magic-<b class='flag-5'>api</b>

    华纳云:使用 WireMock 在开发和测试中模拟 API 服务

    在本地开发和测试期间,经常会遇到您的应用依赖于远程 API 的情况。网络问题、速率限制,甚至 API 提供商的停机都可能阻碍您的进度。这会严重影响您的工作效率并使测试更具挑战性。这就
    的头像 发表于 10-25 16:46 ?994次阅读

    api驱动的云服务是什么意思?

    API驱动的云服务是指利用API技术来驱动和提供云服务的模式。在这种模式下,云服务提供商会公开一系列的API接口,允许
    的头像 发表于 11-14 10:06 ?625次阅读

    迅为RK3568开发驱动指南GPIO子系统GPIO子系统API函数的引入

    迅为RK3568开发驱动指南GPIO子系统GPIO子系统API函数的引入
    的头像 发表于 05-29 14:05 ?526次阅读
    迅为RK3568<b class='flag-5'>开发</b>板<b class='flag-5'>驱动</b>指南GPIO子系统GPIO子系统<b class='flag-5'>API</b>函数的引入

    设计优先方法论实践:SmartBear API Hub +ReadyAPI组合使用,构建高效的API开发

    设计优先是一种在编写代码和执行测试之前,优先设计API接口的开发方式,能够帮助提升团队协作效率、加快开发进度、减少Bug和返工,并改善用户体验。如何实现?——将该与SmartBear API
    的头像 发表于 06-05 16:03 ?235次阅读
    设计优先方法论实践:SmartBear <b class='flag-5'>API</b> Hub +ReadyAPI组合使用,构建高效的<b class='flag-5'>API</b><b class='flag-5'>开发</b>流