最近,我用C语言编写了许多用于微流控泵的函数,这些泵是通过I2C在覆盆子Pi上控制的。它们工作得很完美。我使用O_RDWR来编写和读取"/dev/i2c-1“。
但是,我仍然想知道这些文件更改是如何在低级别上实现的。如何将生成与这些泵通信的正确位序列的代码传输到PIN?是什么告诉内核将2I2CPIN的状态相应地更改为代码呢?
谢谢!
发布于 2022-09-19 19:02:11
在大多数情况下,软件并不直接负责生成每个单独的逻辑级别更改。相反,它是基于硬件的I2C控制器的组合,由驱动程序从软件管理。
在RPi的情况下,您很可能使用以下驱动程序:https://elixir.bootlin.com/linux/v5.19/source/drivers/i2c/busses/i2c-bcm2835.c
驱动程序控制的硬件块在本参考手册第3部分:https://www.raspberrypi.org/app/uploads/2012/02/BCM2835-ARM-Peripherals.pdf中进行了描述。
(附带说明:对于没有专用硬件可用的情况,内核也知道如何生成软件中的所有逻辑更改。如果您想了解更多这方面的信息,请查看i2c-gpio驱动程序)
https://stackoverflow.com/questions/73775330
复制相似问题