0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在树莓派上启用SPI / I2C

454398 来源:网络整理 作者:网络整理 2019-12-02 10:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Raspberry Pi几乎可以用于任何用途。从家庭媒体中心到自定义的复古游戏设置,可以肯定地说Pi和类似的单板计算机正变得无处不在。

当您开始尝试在Raspberry Pi上使用GPIO引脚时,事情将会变得更多。有趣。我们已经介绍了所有这些引脚的功能,所以现在让我们看看如何在Pi上启用SPI和I2C协议,以及为什么要这么做。

Raspberry Pi上的SPI是什么?

在深入研究之前,让我们简要介绍一下这两种协议的作用。

SPI (或串行外围接口)允许Pi等微控制器与一次可容纳100个外围组件。微控制器充当所有“从属”组件的“主”,并可以与它们进行高速通信。此图概述了一个简单的SPI连接:

《图id =“ attachment_760970” aria- describeby =“ caption-attachment-760970” class =“ wp-caption aligncenter”》

如何在树莓派上启用SPI / I2C

图片来源:Cburnett/wikipedia.org

如果这是您第一次阅读有关SPI看起来似乎很吓人,但要坚持下去! SCLK 是主机设置的时钟速度,它确定设备之间共享信息的速度。

在时钟的每个周期(或“滴答”),两个主机从站发送和接收一位信息。这就是 MOSI (主输出从动输入)和 MISO (主输入从动输出)引脚的作用。

SS 或从选择引脚(在Pi上标记为CE0或CE1)用于告诉从设备在任何给定时间与主设备进行通信(或不与之通信)。在大多数情况下,每个从设备都需要自己的SS引脚,但可以共享SCLK,MOSI和MISO引脚。

某些设备可以通过“菊花链式”共享一个SS引脚,从而保持使用的总引脚数减少到四个,再加上两个用于电源和地。 SPI以极快的速度而闻名,通常用于移位寄存器ADC模拟到数字转换器)以在设备之间传递数据。

增强型初创公司YouTube频道具有易于遵循的SPI入门知识,可以解释协议进一步:

如何在Raspberry Pi上启用SPI

要在Raspberry Pi上启用SPI,请在终端上输入以下内容打开 raspi-config :

sudo raspi-config

导航至接口选项,然后在以下菜单上选择 P4 SPI启用/禁用SPI内核模块的自动加载 。在窗口提示符下选择是。现已启用SPI!

或者,您可以从/boot/config.txt 文件启用SPI。打开终端窗口,然后输入:

sudo nano /boot/config.txt

查找读为#dtparam = spi = on 的行,并删除#符号。不管您以哪种方式启用SPI,都将重新启动Pi并启用SPI。

在Raspberry Pi上使用SPI可以做什么?

尽管有数百个使用许多不同SPI的不同项目,外设,一个不错的入门项目是对自己的RFID读取器进行编程

我们在带ArduinoDIY智能锁和RFID教程中使用了MFRC-522读取器。要获得Raspberry Pi风味的RFID简介,请查看piddlerintheroot的深入的Instructable。

这种设置也不仅仅适用于爱好电子产品。在我们最好的Raspberry Pi项目集合中,我们采用了使用Raspberry Pi和RFID运行的全尺寸MES系统,作为欧洲大规模工厂运营的一部分。

Raspberry Pi上的I2C是什么?

I2C是菲利普斯电子公司(Phillips Electronics)创建的通信协议,该协议在基于微控制器的爱好项目中已得到广泛使用。原因很明显-它仅使用两根线,而不是SPI的最少四根线。用户制作的库也很好地支持它。 Raspberry Pi上有许多旨在与I2C一起使用的组件。虽然它比SPI慢,但对于大多数日常使用而言仍然可以足够快地工作。

与SPI一样,该协议具有 master 设备,例如Pi和从设备设备,例如屏幕,移位寄存器或电机驱动器

设备之间的第一个连接是 SCL (串行时钟)由主机设置以同步数据传输。第二行是 SDA (串行数据),它在I2C总线上的所有设备之间来回传输数据。

主设备开始与 start通信位和一个7位十六进制地址。这必须与从属设备匹配,以便它们进行通信。这就是用两根导线可以使用的设备数量。

然后,主设备在接收之前指定它是要读取还是写入( R/W )从设备确认或 ACK 。

YouTuber增强型初创企业再次提供了易于理解的I2C深入了解:

如何启用Raspberry Pi上的I2C

还可以通过 raspi-config 菜单在Pi上启用I2C。打开终端并输入:

sudo raspi-config

使用箭头键选择接口选项,然后选择 P5 I2C启用/禁用自动加载I2C内核模块。确认要启用该协议,然后会看到一个确认屏幕。

与SPI一样,您也可以通过修改配置来启用I2C。 txt文件。打开终端并输入:

sudo nano /boot/config.txt

修改# dtparam = i2c_arm = on ,删除#符号。

重新启动您的Pi,I2C即可使用!

您可以在Raspberry Pi上使用I2C做什么?

I2C非常适合需要大量输出的任何项目。 LCD屏幕的典型用途是使用,最多需要16个引脚。 I2C将其减少到只有两个用于通讯,两个用于电源和地。

许多LCD屏幕都附带一个 I2C“背包” ,这使它们的安装更加简单,

TheRaspberryPiGuy上有详细的YouTube教程,介绍如何在Raspberry Pi上通过I2C设置和使用LCD屏幕。

使用SPI和I2C节省引脚!

Raspberry Pi上的SPI和I2C肯定不是完整的业余电子产品初学者,但也没什么可担心的。

在开始潜水之前,它会遵循我们的Raspberry Pi入门指南学习基础知识是一个好主意。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1906

    浏览量

    102439
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1566

    浏览量

    131943
  • 树莓派
    +关注

    关注

    122

    文章

    2086

    浏览量

    110918
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Adafruit TCA9548A 1-to-8 I2C 多路复用器:解决 I2C 设备地址冲突的利器

    Adafruit TCA9548A 1-to-8 I2C 多路复用器:解决 I2C 设备地址冲突的利器 在电子设计中,当我们遇到需要连接多个具有相同 I2C 地址的设备时,常常会陷入困境。不过
    的头像 发表于 05-11 12:05 299次阅读

    I2C 为什么只要两根线就能搞定通信?

    到目前为止,我们已经讨论了SPI通信和UART通信的基础知识,现在让我们讨论本系列的最后一个协议,即集成电路间协议(I2C)。如果您曾经构建过使用OLED显示器、气压传感器或陀螺仪/加速度计模块
    的头像 发表于 01-04 09:14 2189次阅读
    <b class='flag-5'>I2C</b> 为什么只要两根线就能搞定通信?

    基于FPGA的I2C控制模块设计

    I2C_WRITE_WDATA.v模块实现I2C写时序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的头像 发表于 12-26 09:48 6435次阅读
    基于FPGA的<b class='flag-5'>I2C</b>控制模块设计

    何在CW32 MCU上优化I2C通信

    在嵌入式系统中,CW32 MCU的I2C接口通常用于与各种外设(如EEPROM、传感器等)进行数据通信。为了实现高效、稳定的I2C通信,必须考虑频率调节和数据完整性的问题。本文将聚焦于如何在CW32
    发表于 11-27 06:25

    SPII2C、UART三种串行总线的区别与对比

    1)概念定义 SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS:意为IC之间总线) UART(Universal
    发表于 11-20 07:19

    SPII2CI2S、UART:通信协议解释

            在嵌入式开发中,最常用的几种通信接口无非就是SPII2CI2S、UART。名字看起来差不多,但应用场景和特性却大不相同。为什么都叫串行通信,结构却不一样?为什么有的能传音频,有的
    的头像 发表于 11-18 10:53 809次阅读

    SPII2CI2S、UART:通信协议对比表

    在嵌入式开发中,最常用的几种通信接口无非就是SPII2CI2S、UART。名字看起来差不多,但应用场景和特性却大不相同。很多初学者容易混淆:为什么都叫串行通信,结构却不一样?为什么有的能传音频
    的头像 发表于 11-17 10:53 2275次阅读
    <b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>、<b class='flag-5'>I2</b>S、UART:通信协议对比表

    AT32F403A 移植RT-thread时SPI DMA和I2C DMA 冲突怎么解决?

    开发板:AT-START-F403A V1.1 我使用官方标准版RT-Thread BSP里的工程时,通过ENV工具启用SPII2C ,但是启用
    发表于 10-10 06:14

    深入剖析I2C协议

    I2C是由Philips开发的简单的双向两线总线,在深入浅出理解SPI协议中,我们区分了单工,半双工,全双工协议数据流向的区别,根据特征,I2C协议属于半双工协议(即同一时刻,数据单向流动)。此外
    的头像 发表于 08-21 15:10 4054次阅读
    深入剖析<b class='flag-5'>I2C</b>协议

    何在树莓派上安装Ubuntu MATE ?

    ,而非GNOME。在本文中,我将介绍如何轻松地在树莓派上安装它。UbuntuMATE官方支持树莓派,因此每发布一个新版本,都会为树莓派发布一个镜像。该镜像可刷入S
    的头像 发表于 08-12 18:56 3557次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>树莓</b><b class='flag-5'>派上</b>安装Ubuntu MATE ?

    技能+1!如何在树莓派上使用C++控制GPIO?

    在使用树莓派时,你会发现Python和Scratch是许多任务(包括GPIO编程)中最常用的编程语言。但你知道吗,你也可以使用C++进行GPIO编程,而且这样做还有不少好处。借助WiringPi
    的头像 发表于 08-06 15:33 4607次阅读
    技能+1!如<b class='flag-5'>何在</b><b class='flag-5'>树莓</b><b class='flag-5'>派上</b>使用<b class='flag-5'>C</b>++控制GPIO?

    何在树莓派上设置并使用VNC?远程访问完整指南!

    为什么要在树莓派上使用VNC?使用VNC与树莓派的主要优势在于其提供的灵活性。我们可以在“无头模式”(无物理显示器)下运行树莓派,同时仍能完全访问其图形用户界面(GUI)。这减少了对额
    的头像 发表于 07-26 20:42 6314次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>树莓</b><b class='flag-5'>派上</b>设置并使用VNC?远程访问完整指南!

    C++ 与 Python:树莓派上哪种语言更优?

    Python是树莓派上的首选编程语言,我们的大部分教程都使用它。然而,C++在物联网项目中同样广受欢迎且功能强大。那么,在树莓派项目中选择哪种语言更合适呢?Python因其简洁性、丰富
    的头像 发表于 07-24 15:32 1221次阅读
    <b class='flag-5'>C</b>++ 与 Python:<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>哪种语言更优?

    何在树莓派上安装并运行 Arduino 集成开发环境!

    ,我们将介绍如何在树莓派上安装并运行ArduinoIDE。所需物品要在树莓派上运行ArduinoIDE,你需要以下组件:配备适当电源的
    的头像 发表于 07-01 17:41 4706次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>树莓</b><b class='flag-5'>派上</b>安装并运行 Arduino 集成开发环境!

    第十八章 I2C通信测试

    本章介绍了I2C协议,其物理层用SDA和SCL双线,支持多设备:协议层含起始/停止信号、应答机制等。还讲解W55MH32的I2C外设及初始化,并进行了通信测试代码的分析。
    的头像 发表于 06-19 17:07 1569次阅读
    第十八章 <b class='flag-5'>I2C</b>通信测试