关于树莓派外设接口和连线

2018-08-17 21:06:24 +08:00
cc128  cc128

最近刚开始玩树莓派,买了一些外设传感器。 之前也了解了一下 GPIO 接口,以及 PWM ,I2C, SPI, UART, 1-wire。 然后我以为外设可能都是使用这些总线方式来通信,有对应的针脚。 比如 I2C 设备有数据线和时钟线针脚,SPI 设置有 2 个数据针脚和时钟、片选针脚。

但是拿到外设之后,发现大多数都只有一个数据接口,比如温度湿度的 DHT11,DHT22, 后来了解这些是通过 1-wire 单总线工作的。

然后看到 DS1302 时钟模块一共有 5 个外部接口, 又不属于 I2C,也不属于 SPI。 那么采用什么方式通信? 自定义的方式? 也不知道线应该怎么接,在网上搜了下发现按下面的接法

VCC:接树莓派的 3.3V 输出
GND:接树莓派的 Ground (地)
CLK:接树莓派的 SCLK
DAT:接树莓派的 SDA0
RST:接树莓派的 CE0

avatar

然后我就有点疑问,既然不是 I2C\SPI 那就不需要按照树莓派的针脚定义去接,按道理来说任意的 GPIO 口应该都可以吧??

然后有看到 5110 的屏幕有 8 条线,网上搜索到连接方法如下

dc 13rst 5
sclk 26
din 19
cs 6
vcc 20
bl 21
gnd 0v

所以一样的问题,如果不是标准的 SPI, I2C 这样的设备,是否可以连接任意针脚 (除去电源)?如果不是,要怎么知道如何连接? 因为我下了一些设备资料,里面也没有连接的信息。

小白求教

3937 次点击
所在节点   程序员  程序员
7 条回复
Tetsuchou
Tetsuchou
2018-08-17 22:07:35 +08:00
直接买模块呗 国内也就那几家 df 啊 seeed 那些 有的带 Shield 的连接口都给你分好了 一个模块一个模块直接插 特别小白 而且库都给你写好直接用的
cc128
cc128
2018-08-17 22:50:04 +08:00
@Tetsuchou 恩,这些我知道,我是想能稍微多了解一下。

因为发现很多并不是标准的 SPI ,i2c 接口设备,所以就想知道这些是否任意的 GPIO 接口都可以连接。
weyou
weyou
2018-08-17 23:28:52 +08:00
vcc,gnd 必须对应,其余信号线理论上可以任意接,但相应的程序里也要修改成对应的 pin 脚。
a22271001
a22271001
2018-08-18 01:15:08 +08:00
ds1302 用的是芯片自定义的通讯协议,有能力的话可以查看芯片的 datasheet。芯片的 vcc gnd 肯定是要对应的,其他脚的确可以自定义,但是必须修改源码对应上才能读到时间。
Tyanboot
Tyanboot
2018-08-18 02:24:46 +08:00
I2C 不清楚,不过 SPI 是可以用任意 GPIO 来模拟的,最近用的 PN532,Arduino 上的库有的就是靠模拟实现的 SPI,比如
Adafruit-PN532。

所以你如果用 pi 上自带的 SPI 的话就是硬件 SPI,可以直接用 SPI 寄存器或者库通信,自己随便选 GPIO 的话就意味着你需要手动实现 SPI 了。
smdbh
smdbh
2018-08-18 11:00:30 +08:00
外设的 i2c spi 2 线 3 线的,只是通信线,其余供电 vcc,gnd,和 rst,irq cs 等每个外设都不一样,但一般都可用 gpio 控制。
cc128
2018-08-18 13:49:13 +08:00
@smdbh
@Tyanboot
@a22271001
@weyou

感谢各位,基本了解了。所以可以理解为,其实作为 GPIO 通用接口,可以实现任意的协议通信。无论是时钟线、数据线、还是控制线。 因为其实都是高低电平而已。 只不过像树莓派定义了硬件实现的 SPI ,I2C 这种接口,所以对于这种外设可以直接使用这些针脚,当然也可以用其他 GPIO 口来模拟(比如模拟 I2C,USB,等等)。

而对于一些外设可能是自定义协议,自定义了针脚,那么实际上任意的 GPIO 针脚都可以连接。 因为这些协议都是自己去实现。 如果使用现有的库文件的话,需要修改代码中的针脚定义。

这样了解下来对 GPIO 功能理清更清楚了,之前对 GPIO 接口认识比较局限。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/480863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX