【问题标题】:I2C Communications and pollingI2C 通信和轮询
【发布时间】:2017-11-27 10:54:18
【问题描述】:

我正在使用 HummingBoard Pro (Armbian) 进行开发。

我想与使用 I2C 的外围设备交谈。我阅读了数据表,发现它在地址0xff 处提供数据流。 所以我写了一个工具来定期检查数据是否可用并打印出来。

  • 这是驱动程序吗?
  • 如果是驱动程序,它应该像其他程序一样在用户空间运行吗?
  • 是否有替代方法(以避免轮询外围设备)?

【问题讨论】:

  • 您使用的是哪个平台?哪个处理器,哪个操作系统?
  • 这很重要,因为您使用的术语仅与 Linux 编程相关,但在您的问题中不要提及您正在使用 Linux。虽然大多数使用 I2C 的系统都是使用裸机或 RTOS 的微控制器应用程序。
  • 谢谢.. 我运行 top 它使用了 10% 的 cpu。是因为它在用户空间中运行吗?我应该以某种方式在内核空间中移动它吗?

标签: c linux embedded polling i2c


【解决方案1】:

首先,您需要将外围设备添加到 Linux 设备树中,以便您的 Linux 系统知道它在那里。我用 Zynq 7000 处理系统做了一个类似的应用程序。这是假设您的架构允许您的处理器直接与使用 Linux 的外围设备对话。 http://www.wiki.xilinx.com/Linux+I2C+Driver

这是赛灵思资源。它有一个将 i2c 设备添加到设备树以使用 Cadence I2C 驱动程序访问的示例。 Cadence I2C 驱动程序用于许多平台。您应该检查 Humming Bird Pro 驱动程序的兼容性。

我假设您想使用 Linux I2C 设备接口。这是我使用的方法,我认为它是最简单的。我建议您查看此内容以了解软件方面所涉及的内容。 http://rts.lab.asu.edu/web_438/CSE438_598_slides_yhlee/438_6_Linux_I2C_SMBus.pdf

我假设您知道用户空间和内核空间之间的区别以及如何在用户空间应用程序中使用设备驱动程序。如果没有,我建议您查看这些 Xilinx 资源,我认为这些资源在涵盖嵌入式软件设计人员的主题方面做得非常出色。 https://forums.xilinx.com/xlnx/attachments/xlnx/ELINUX/10657/2/drivers-session3-uio-4public.pdf

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2017-07-16
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多