最近刚开始玩树莓派,买了一些外设传感器。 之前也了解了一下 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
然后我就有点疑问,既然不是 I2C\SPI 那就不需要按照树莓派的针脚定义去接,按道理来说任意的 GPIO 口应该都可以吧??
然后有看到 5110 的屏幕有 8 条线,网上搜索到连接方法如下
dc 13rst 5
sclk 26
din 19
cs 6
vcc 20
bl 21
gnd 0v
所以一样的问题,如果不是标准的 SPI, I2C 这样的设备,是否可以连接任意针脚 (除去电源)?如果不是,要怎么知道如何连接? 因为我下了一些设备资料,里面也没有连接的信息。
小白求教
1
Tetsuchou 2018-08-17 22:07:35 +08:00 via iPhone
直接买模块呗 国内也就那几家 df 啊 seeed 那些 有的带 Shield 的连接口都给你分好了 一个模块一个模块直接插 特别小白 而且库都给你写好直接用的
|
2
cc128 OP |
3
weyou 2018-08-17 23:28:52 +08:00 via Android
vcc,gnd 必须对应,其余信号线理论上可以任意接,但相应的程序里也要修改成对应的 pin 脚。
|
4
a22271001 2018-08-18 01:15:08 +08:00 via Android
ds1302 用的是芯片自定义的通讯协议,有能力的话可以查看芯片的 datasheet。芯片的 vcc gnd 肯定是要对应的,其他脚的确可以自定义,但是必须修改源码对应上才能读到时间。
|
5
Tyanboot 2018-08-18 02:24:46 +08:00 via Android 1
I2C 不清楚,不过 SPI 是可以用任意 GPIO 来模拟的,最近用的 PN532,Arduino 上的库有的就是靠模拟实现的 SPI,比如
Adafruit-PN532。 所以你如果用 pi 上自带的 SPI 的话就是硬件 SPI,可以直接用 SPI 寄存器或者库通信,自己随便选 GPIO 的话就意味着你需要手动实现 SPI 了。 |
6
smdbh 2018-08-18 11:00:30 +08:00
外设的 i2c spi 2 线 3 线的,只是通信线,其余供电 vcc,gnd,和 rst,irq cs 等每个外设都不一样,但一般都可用 gpio 控制。
|
7
cc128 OP @smdbh
@Tyanboot @a22271001 @weyou 感谢各位,基本了解了。所以可以理解为,其实作为 GPIO 通用接口,可以实现任意的协议通信。无论是时钟线、数据线、还是控制线。 因为其实都是高低电平而已。 只不过像树莓派定义了硬件实现的 SPI ,I2C 这种接口,所以对于这种外设可以直接使用这些针脚,当然也可以用其他 GPIO 口来模拟(比如模拟 I2C,USB,等等)。 而对于一些外设可能是自定义协议,自定义了针脚,那么实际上任意的 GPIO 针脚都可以连接。 因为这些协议都是自己去实现。 如果使用现有的库文件的话,需要修改代码中的针脚定义。 这样了解下来对 GPIO 功能理清更清楚了,之前对 GPIO 接口认识比较局限。 |