I2C通信和轮询

时间:2017-11-27 10:54:19

标签: c linux embedded polling i2c

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

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

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

1 个答案:

答案 0 :(得分:0)

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

这是Xilinx的资源。它有一个将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