台式计算机主板是否具有GPIO?如果这样做,如何读取或写入它们


21

我已经在台式计算机主板上见过几次像微控制器的GPIO引脚这样的引脚,我想知道,首先,它们真的是GPIO吗?如果是,是否可以读取或写入它们?


2
它们与主板的数据表上的内容相同。除此之外,这个问题只是在猜测。

1
@OlinLathrop好的,如果可以,我该如何与他们交流?操作系统是否为此目的内置了API?还是有用于编程语言的API?

2
“像微控制器的GPIO引脚一样的引脚”它们的“相似度”如何?所有的针脚看起来都一样。–
Eugene Sh。

我没有遇到台式计算机上的GPIO引脚,大多数情况下看起来像是外围扩展(USB接头,音频接头等)或LED的开关和输出的输入。如果这是一个普遍的功能,那么Internet上不会出现有关如何将串行端口的DTR用作GPIO或并行端口的建议。我想说这个问题不属于这里。

2
x86 CPU通常没有GPIO引脚,每个引脚都直接连接到特定的片上外设,而没有MCU上常见的PIO多路复用。但是,类似GPIO的功能通常是架构的一部分,并由主板上的(通常是内存映射)外围设备处理,芯片组通常会具有一些低级总线(用于传感器的SPI和I2C)以及可用的GPIO,其确切性质取决于所使用的主板和芯片组/架构。
crasic

Answers:


15

普通PC在“打算用作通用引脚”的意义上没有GPIO。PC主板上的连接器(无论是内部接头连接器还是外部端口)均设计用于特定功能。但是,其中一些可以用于您自己的目的。

PC具有的最接近GPIO的东西可能是并行打印机端口,该端口具有许多数据线和握手线。这些线路有点像GPIO引脚,但是您在方向上灵活性较差。http://retired.beyondlogic.org/spp/parallel.htm

串行端口上的握手线也可以用作常规IO,尽管它们的电压电平很奇怪。

并行和串行端口不像以前那样普遍,但是如果货比三家,找到带有它们的主板仍然很容易。

您也许还可以重新调整用于LED外壳,按钮等的输入和输出的用途,但是我想细节将非常特定于特定系统。

PC使用名为SMBUS的基于I2C的总线来实现各种管理功能。我敢肯定,我曾见过有人通过焊接导线将自己的I2C设备安装到该总线上的报道,但我现在找不到链接。

视频端口上还有另一个I2C总线,用于监控显示器。是否可以对其进行软件访问取决于您所使用的操作系统和视频硬件http://www.instructables.com/id/Worlds-Cheapest-I2C-I-Squared-C-Adapter/step5/Software-and-项目/

当然,还有USB。现在有便宜的带有USB接口的微控制器,您可以用来连接它。


2

我认为主板是否具有GPIO的问题非常取决于型号和制造商。有些可能,有些则没有。

例如,在我的华硕台式机主板上,它包含一个Nuvoton NCT6775,用于风扇控制和温度读取。可通过(供应商自定义)BIOS和Windows桌面实用程序进行访问。我需要运行Asus的软件才能使风扇控制正常工作,这意味着PWM风扇控制由软件完成。在Linux安装中,我需要通过此内核模块和pwmconfig 手动进行设置。

如果查看Nuvoton NCT677xF数据表,您会发现用于控制PWM,读取温度和电压以及通过SMBus的GPIO的通用硬件。两者都配备给您一个不错的开始,使其工作。理论上,您可以将此芯片组用于GPIO功能。

但是我不会碰它。您不知道与之连接的硬件,除非您想深入研究非常特定的主板型号并对其进行反向工程(例如,布局,引脚分配等)。接头也未断开。

最重要的是,如果您的应用程序需要使用数年,那么主板型号也应如此。如果没有,那么绑定非常特定的主板硬件不是一个好主意。


2

我知道这是一个较旧的话题,但是无论如何...

经过编程的BIOS代码,我可以说每个主板都有GPIO,并且它们在用户地址空间中完全可用,并且端口地址通常非常靠近并行端口。我已经使用标准并行端口驱动程序为自定义主板制作了自定义驱动程序,我要做的就是修改地址号,但是我事先知道了该号。

可以使用吗?好吧,这取决于对BIOS进行编程的人员。必须将所有GPIO的状态设置为预编译,可以很容易地将所有未使用的GPIO设置为禁用。

如果GPIO未使用且未设置,其默认状态是什么?很有可能只是浮动的(大多数都是三态的,所以祝你好运)。

GPIO是否具有上拉/下拉?谁知道EE是否添加了一个。

是否有任何未使用的GPIO的痕迹?我对此表示怀疑,但是,一切皆有可能。

简而言之,您必须幸运地以一种可以使用它的方式设置了未使用的GPIO。就像arduino(但没有真正的默认值)一样,请考虑“ INPUT / OUTPUT / TRI”。它必须在主板上有可用的走线,希望该走线具有要焊接的引脚或焊盘。然后,如果您知道GPIO的地址位置,则可以轻松使用标准的用户空间驱动程序。


0

PC通常具有i2c接口,您可以找到用于i2c的IO扩展器芯片,例如TI TCA9535DBR。

因此,您可以根据自己的速度要求间接执行此操作。如果您使用的是PC,那么准确的计时要求还是很棘手的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.