spi
PI电路设计
SPI(Serial Peripheral lnterface--串行外设接口)总线系统是一种同步串行外设接口,它可以使处理器与各种外围设备以串行方式进行通信以交换信息。
![](https://img-blog.csdnimg.cn/img_convert/99e1ea0cd2e6f6420bfe5afa2b4adf7b.jpeg)
> MOSI - 主设备数据输出,从设备数据输入
> MISO - 主设备数据输入,从设备数据输出
SCLK - 时钟信号,由主设备产生
SS - 从设备使能信号,由主设备控制,SS是控制芯片是否被选中,只有片选信号使能操作才有效。
![](https://img-blog.csdnimg.cn/img_convert/85b9a6282311e6ad0380225d0855fbc3.jpeg)
通过不同的SS线,控制不同的从设备
ESP32 集成了四个SPI外设。
SPI0 和 SPI1 在内部用于访问 ESP32 附加的闪存,因此目前不对用户开放。它们通过仲裁器共享一条信号总线。
SPI2 和 SPI3 是通用 SPI 控制器,有时分别称为 HSPI 和 VSPI。它们对用户开放。SPI2 和 SPI3 具有具有相同名称的独立信号总线。每条总线有三条CS线,可驱动多达三个SPI从站。
SPI主控驱动的概念是将多个设备连接到一条总线(共享一个 ESP32SPI外围设备)。只要每个设备仅由一个任务访问,驱动程序就是线程安全的。但是,如果多个任务尝试访问同一 SPI 设备,则驱动程序不是线程安全的。在这种情况下,建议:
重构应用程序,以便每个应用程序SPI外设一次只能由单个任务访问。
使用 xSemaphoreCreateMutex 在共享设备周围添加互斥锁。
代码解析:
![](https://img-blog.csdnimg.cn/img_convert/127c0137a4197faafa9542ebde690aa2.png)