SPI3 (BCM2711 only)
SPI4 (BCM2711 only)
SPI5 (BCM2711 only)
SPI6 (BCM2711 only)
主模式信号名称缩写
标准模式在标准SPI模式下,外设实现标准三线串行协议(SCLK、MOSI和MISO)。 双向模式在双向SPI模式下,实现了相同的SPI标准,只是单线用于数据(MOMI),而不是标准模式下使用的两根线(MISO和MOSI)。在此模式下,MOSI引脚用作MOMI引脚。 低速串行接口 (LoSSI) 模式LoSSI 标准允许向外围设备 (LCD) 发出命令,并在外围设备之间传输数据。LoSSI 命令和参数的长度为 8 位,但使用额外的位来指示字节是命令还是参数/数据。对于数据,此额外位设置为高位,对于命令,此额外位设置为低位。生成的 9 位值序列化到输出。LoSSI 通常与兼容 MIPI DBI 的 C 型 LCD 控制器一起使用。
传输模式
速度CLK 寄存器的时钟分频器 (CDIV) 字段设置 SPI 时钟速度:
如果 CDIV 设置为 0,则除数为 65536。除数必须是 2 的倍数,奇数四舍五入。请注意,由于模拟电气问题(上升时间、驱动强度等),并非所有可能的时钟速率都可用。 芯片选择在 DMA 模式下运行时,与 CS 线的自动断言和取消断言相关的设置和保持时间如下:
SPI软件Linux 驱动程序默认的 Linux 驱动程序是 spi-bcm2835。
…添加到 /boot/firmware/config.txt 文件。SPI2、SPI3、SPI4、SPI5 和 SPI6 也存在类似的叠加。 Speed该驱动程序支持所有速度,甚至是内核时钟的整数除数,尽管如上所述,由于GPIO和连接设备的限制,并非所有这些速度都支持数据传输。根据经验,任何超过 50MHz 的频率都不太可能起作用,但您的里程可能会有所不同。 支持的模式位
双向模式,也称为 3 线模式,由 spi-bcm2835 内核模块支持。请注意,在此模式下,spi_transfer结构的 tx 或 rx 字段必须为 NULL 指针,因为只能进行半双工通信。否则,传输将失败。spidev_test.c 源代码没有正确考虑这一点,因此在 3 线模式下根本无法工作。 支持的每字位数
传输模式所有 SPI 总线都支持中断模式。SPI0 和 SPI3-6 也支持 DMA 传输。 SPI 驱动程序延迟此线程讨论延迟问题。 spidevspidev 为各个 SPI CS 线路提供了基于 ioctl 的用户空间接口。设备树用于指示 CS 线是由内核驱动程序模块驱动还是由 spidev 代表用户管理;不可能同时做这两件事。请注意,Raspberry Pi 自己的内核对使用 Device Tree 来启用 spidev 更加宽松 - 上游内核会打印有关此类使用的警告,并最终可能会完全阻止它。 使用 C 语言中的 spidevLinux 文档中有一个环回测试程序,可以用作起点。请参阅“疑难解答”部分。 使用 Python 中的 spidev有几个 Python 库提供对 spidev 的访问,包括 spidev (pip install spidev - see https://pypi.org/project/spidev/) 和 SPI-Py (https://github.com/lthiery/SPI-Py)。 从 shell 中使用 spidev,例如 bash
其他 SPI 库还有其他用户空间库通过直接操作硬件来提供 SPI 控制:不建议这样做。 故障排除环回测试这可用于测试 SPI 发送和接收。在 MOSI 和 MISO 之间放一根电线。它不测试 CE0 和 CE1。
上面的一些内容是从 elinux SPI 页面复制的,该页面也借用了这里。两者都受 CC-SA 许可证的保护。 通用串行总线 (USB)一般来说,Linux 支持的每个设备都可以与 Raspberry Pi 一起使用,尽管 Raspberry Pi 4 之前的型号存在一些限制。 最大功率输出与所有计算机一样,Raspberry Pi 上的 USB 端口提供有限的电源。USB 设备的问题通常是由电源问题引起的。要排除电量不足是问题的原因,请使用有源集线器将 USB 设备连接到 Raspberry Pi。
树莓派 5Raspberry Pi 5 需要一个高质量的 USB-C 电源,能够在 +5V (15W) 下提供 3A 的电流才能启动。但是,使用这种电源会限制对外设的电流消耗。如果您使用的电源在首次启动时无法在 +5V 下提供 5A 电流,操作系统将警告您外设的电流消耗将限制为 600mA。
树莓派 4Raspberry Pi 4 提供两个 USB 3.0 端口和两个 USB 2.0 端口,它们连接到 VL805 USB 控制器。所有四个端口上的 USB 2.0 线路都连接到 VL805 中的单个 USB 2.0 集线器。这会将 USB 1.1 和 USB 2.0 设备的总可用带宽限制为单个 USB 2.0 端口的带宽。 Raspberry Pi Zero,1、2 和 3Raspberry Pi 1 Model B+、Raspberry Pi 2 和 Raspberry Pi 3 板提供四个 USB 2.0 端口。Raspberry Pi Zero板有一个微型USB On-the-Go(OTG)端口。 已知的 USB 问题与 USB 3.0 集线器的互操作性USB 3.0 集线器在使用全速或低速设备(包括大多数鼠标和键盘)时存在问题。大多数 USB 3.0 集线器硬件中的一个错误意味着 Raspberry Pi 4 之前的型号无法与连接到 USB 3.0 集线器的全速或低速设备通信。 USB 1.1 网络摄像头旧的网络摄像头可能是全速设备。由于这些设备会传输大量数据并产生额外的软件开销,因此无法保证可靠运行。解决方法是尝试以较低的分辨率使用相机。 深奥的 USB 声卡昂贵的发烧级声卡通常使用大量的 USB 带宽。不能保证使用96kHz/192kHz DAC的可靠工作。解决方法是强制输出流为 CD 质量(44.1kHz/48kHz 16 位)会将流带宽降低到可靠水平。 单个 TT USB 集线器USB 2.0 和 3.0 集线器具有一种机制,用于与连接到其下游端口的全速或低速设备通信,称为事务转换器 (TT)。此设备缓冲来自主机的高速请求,并以全速或低速将其传输到下游设备。USB 规范允许两种集线器配置:单 TT(所有端口一个 TT)和多 TT(每个端口一个 TT)。由于硬件限制,如果将过多的全速或低速设备插入单个 TT 集线器,则设备的行为可能不可靠。建议使用多 TT 集线器与多个全速和低速设备连接。作为一种解决方法,将全速和低速设备分布在 Raspberry Pi 自己的 USB 端口和单个 TT 集线器之间。 Raspberry Pi 修订代码每个不同的 Raspberry Pi 模型修订版都有一个唯一的修订版代码。您可以通过运行以下命令来查找 Raspberry Pi 的修订代码:
最后三行显示了硬件类型、修订代码和 Raspberry Pi 的唯一序列号。例如:
注意:所有 Raspberry Pi 计算机都报告了BCM2835,即使是那些具有 BCM2836、BCM2837、BCM2711 和 BCM2712 处理器的计算机也是如此。不应使用此字符串来检测处理器。使用以下信息或 cat /sys/firmware/devicetree/base/model 解码修订版代码。 |