V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cc128
V2EX  ›  程序员

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

  •  
  •   cc128 · 2018-08-17 21:06:24 +08:00 · 3920 次点击
    这是一个创建于 2291 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近刚开始玩树莓派,买了一些外设传感器。 之前也了解了一下 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 这样的设备,是否可以连接任意针脚 (除去电源)?如果不是,要怎么知道如何连接? 因为我下了一些设备资料,里面也没有连接的信息。

    小白求教

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

    因为发现很多并不是标准的 SPI ,i2c 接口设备,所以就想知道这些是否任意的 GPIO 接口都可以连接。
    weyou
        3
    weyou  
       2018-08-17 23:28:52 +08:00 via Android
    vcc,gnd 必须对应,其余信号线理论上可以任意接,但相应的程序里也要修改成对应的 pin 脚。
    a22271001
        4
    a22271001  
       2018-08-18 01:15:08 +08:00 via Android
    ds1302 用的是芯片自定义的通讯协议,有能力的话可以查看芯片的 datasheet。芯片的 vcc gnd 肯定是要对应的,其他脚的确可以自定义,但是必须修改源码对应上才能读到时间。
    Tyanboot
        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 了。
    smdbh
        6
    smdbh  
       2018-08-18 11:00:30 +08:00
    外设的 i2c spi 2 线 3 线的,只是通信线,其余供电 vcc,gnd,和 rst,irq cs 等每个外设都不一样,但一般都可用 gpio 控制。
    cc128
        7
    cc128  
    OP
       2018-08-18 13:49:13 +08:00
    @smdbh
    @Tyanboot
    @a22271001
    @weyou

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

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

    这样了解下来对 GPIO 功能理清更清楚了,之前对 GPIO 接口认识比较局限。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4490 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:09 · PVG 09:09 · LAX 17:09 · JFK 20:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.