开始发布: SPI子系统, 01_SPI视频概述,02_SPI协议介绍

This commit is contained in:
weidongshan
2022-02-16 16:23:40 +08:00
parent 3b480a253d
commit c7dae5e33c
19 changed files with 221 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
# SPI视频概述 #
# 1. SPI硬件框架
![image-20220216103153006](pic/01_hardware_block.jpg)
## 2. SPI视频涉及的内容
* SPI协议
* SPI驱动程序框架
* SPI总线设备驱动模型
* SPI设备树处理过程
* 简单的SPI设备驱动
* SPI ADC
* SPI OLED
* 内核自带的spi dev驱动
* 复杂的SPI设备驱动
* SPI+FrameBuffer
* SPI控制器驱动程序
* 使用GPIO实现
* 具体芯片的SPI控制器驱动程序分析
* SPI调试工具
* spi-tools
* 高性能QSPI
* 主控芯片用作SPI从设备
录制视频时留意这些知识点:
* SPI3线和SPI4线
* bits_per_word设置8和16会影响到啥
* 硬件片选和软件片选在驱动咋用

View File

@@ -0,0 +1,59 @@
# SPI协议介绍 #
参考资料:
* 《SPI Block Guide V04.01.pdf》
* 《S3C2440A_UserManual_Rev13.pdf》
## 1. SPI硬件知识
### 1.1 硬件连线
![](pic/01_hardware_block.jpg)
引脚含义如下:
| 引脚 | 含义 |
| -------- | ------------------------------------------------------------ |
| DO(MOSI) | Master Output, Slave Input<br />SPI主控用来发出数据SPI从设备用来接收数据 |
| DI(MISO) | Master Input, Slave Output<br />SPI主控用来发出数据SPI从设备用来接收数据 |
| SCK | Serial Clock时钟 |
| CS | Chip Select芯片选择引脚 |
### 1.2 SPI控制器内部结构
这个图等我们看完后面的SPI协议再回过头来讲解
![image-20220216121534549](pic/04_spi_block.png)
## 2. SPI协议
### 2.1 传输示例
假设现在主控芯片要传输一个0x56数据给SPI Flash时序如下
<img src="pic/02_spi_send_byte.png">
首先CS0先拉低选中SPI Flash0x56的二进制就是0b0101 0110因此在每个SCK时钟周期DO输出对应的电平。
SPI Flash会在每个时钟周期的上升沿读取D0上的电平。
### 2.2 SPI模式
在SPI协议中有两个值来确定SPI的模式。
CPOL:表示SPICLK的初始电平0为电平1为高电平
CPHA:表示相位即第一个还是第二个时钟沿采样数据0为第一个时钟沿1为第二个时钟沿
| CPOL | CPHA | 模式 | 含义 |
| :--: | :--: | :--: | :--------------------------------------------: |
| 0 | 0 | 0 | SPICLK初始电平为低电平在第一个时钟沿采样数据 |
| 0 | 1 | 1 | SPICLK初始电平为低电平在第二个时钟沿采样数据 |
| 1 | 0 | 2 | SPICLK初始电平为高电平在第一个时钟沿采样数据 |
| 1 | 1 | 3 | SPICLK初始电平为高电平在第二个时钟沿采样数据 |
我们常用的是模式0和模式3因为它们都是在上升沿采样数据不用去在乎时钟的初始电平是什么只要在上升沿采集数据就行。
极性选什么格式选什么通常去参考外接的模块的芯片手册。比如对于OLED查看它的芯片手册时序部分
<img src="pic/03_spi_protocol.png">
SCLK的初始电平我们并不需要关心只要保证在上升沿采样数据就行。

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB