【ESP32入门学习 一 】SPI主机

ESP32有四个SPI外设,包含SPI0、SPI1、HSPI和VSPI。

ESP32有四个SPI外设,包含SPI0、SPI1、HSPI和VSPI。SPI0完全专用于Flash高速缓存,ESP32用于将SPI闪存设备映射到内存中。SPI1是与SPI0连接到相同的硬件线路上,用于写入闪存芯片。HSPI和VSPI是用户自由使用的。SPI1、HSPI和VSPI都有三个芯片选择线(CS),允许它们作为主机驱动多达三个SPI设备。

SPI主机驱动

SPI主机驱动允许用户与SPI从机自由通信,包含多线程编程环境也是一样。它完全透明地处理DMA传输来读取和写入数据,并使用自动处理同一SPI主机与总线上不同SPI从机进行通信。

注:暂时驱动中只实现了HSPI和VSPI。

全双工模式下,SPI同时发送和接收,总长度 = command_bits  +  address_bits  +  trans_conf.length 。 trans_conf.rx_length指示的是接收到buff中的数据长度。

半双工模式下,SPI单独发送和接收。发送长度为 trans_conf.length ,接收长度为 trans_conf.rx_length 

因为不是每个SPI设备都有命令和地址位,所以在配置中,command_bits0时,没有命令位;address_bits0时,没有地址位。

当 rx_buffer = NULL时(或者SPI_USE_RXDATA 没有设置时),不执行接收操作;当 tx_buffer = NULL时(或者SPI_USE_TXDATA 没有设置时),跳过发送操作。

GPIO矩阵和 IO复用

SPI接口有两种IO方式,一种是IO复用功能,另外一种是GPIO矩阵,因为GPIO的输入延迟比较高,IO复用引脚可以实现80MHz速率,而GPIO矩阵只能达到40MHz。

attachments-2020-09-4O4prjvS5f5b22ed62d01.png

 

我们该如何使用spi_master 驱动呢?

1、定义 bus_config 和 dev_config 结构体,指定使用的SPI和IO口,不用的信号引脚设置为-1,以及设置时钟速率等

attachments-2020-09-VZsHwKoP5f5b232ae02a3.png


  • 发表于 2020-09-11 10:16
  • 阅读 ( 161 )
  • 分类:默认分类

0 条评论

请先 登录 后评论
淡若清风
淡若清风

35 篇文章

作家榜 »

  1. 淡若清风 35 文章
  2. 杨杨 2 文章
  3. seaky 0 文章
  4. 15139236712 0 文章
  5. selectcc 0 文章
  6. 温志亮 0 文章
  7. jamesfan007 0 文章
  8. Gavin 0 文章