2022-05-31 22:53:29 -04:00
|
|
|
|
SPI 特性
|
|
|
|
|
============
|
|
|
|
|
|
|
|
|
|
.. _spi_master_features:
|
|
|
|
|
|
|
|
|
|
SPI 主机
|
|
|
|
|
----------
|
|
|
|
|
|
|
|
|
|
.. _spi_bus_lock:
|
|
|
|
|
|
|
|
|
|
SPI 总线锁
|
|
|
|
|
^^^^^^^^^^^^
|
|
|
|
|
|
|
|
|
|
为了多路复用来自不同驱动的不同设备,包括 SPI 主机、SPI Flash 等驱动,每个 SPI 总线上都有一个 SPI 总线锁。驱动程序可以通过对锁的仲裁,将设备连接到总线上。
|
|
|
|
|
|
|
|
|
|
每个总线锁都已初始化并注册了后台服务 (BG)。所有请求在总线上进行传输的设备都应等到 BG 被成功禁用后再开始传输。
|
|
|
|
|
|
|
|
|
|
- 在 SPI1 总线上,BG 为高速缓存。总线锁可以在设备操作开始前禁用高速缓存,并在设备释放锁后再次启用它。SPI1 上的任何设备都无法使用 ISR,因为当高速缓存被禁用时,让出当前任务的执行权是没有意义的。
|
|
|
|
|
|
|
|
|
|
.. only:: esp32
|
|
|
|
|
|
|
|
|
|
在 SPI1 总线上使用 SPI 主机驱动程序时,存在一些限制。请参见 :ref:`spi_master_on_spi1_bus`。
|
|
|
|
|
|
|
|
|
|
.. only:: not esp32
|
|
|
|
|
|
|
|
|
|
SPI 主机驱动程序暂不支持 SPI1 总线。只有 SPI Flash 驱动程序可以连接到该总线。
|
|
|
|
|
|
|
|
|
|
- 对于其他总线,驱动程序可以将其 ISR 注册为 BG。当一个设备任务要求独占总线时,总线锁将阻塞该任务,同时禁用 ISR,并在 ISR 被成功禁用后,解除对该任务的阻塞。当任务释放锁时,如果 ISR 中还有待处理的事务,锁也将尝试恢复 ISR。
|