SPI学习笔记(1)
来源:互联网 发布:c语言 大括号 是什么 编辑:程序博客网 时间:2024/05/22 07:48
最近在进行SPI学习,再次记录学习笔记。
四根信号线:
MOSI master output,slave input
MISO master input,slave output
SCLK clock from master
CS chip select
这种命名比那些SDI、SDO好理解多了。
1、上升沿发送,下降沿接收,高位先发送;
2、上升沿到来的时候,MOSI上的电平将被发送到从设备的寄存器中;
3、下降沿到来的时候,MISO上的电平将被接收到主设备的寄存器中;
4、SPI为全双工,主机和从机同时发送、同时接收;
5、假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。
6、那么第一个上升沿来的时候数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序。
7、例子:
假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将分步对spi的8个时钟周期的数据情况演示一遍:假设上升沿发送数据
如下表所示,x代表SBUFF寄存器中的空位,即:高位数据发送出去后,后面的位前移后空出的低位。
上升沿到来时,主机和从机SBUFF寄存器中的高位分别发送到MOSI和MISO上,在下降沿到来时,分别进入从机和主机SBUFF的低位。
网上的这个表格在后两列MISO和MOSI的上升沿和下降沿使用了两行,我认为不便于理解,我把表格合并为一行,即每到上升沿发送一次数据。
脉冲
主机SBUFF
从机SBUFF
MISO
MOSI
0
10101010
01010101
0
0
1↑
0101010x
1010101x
0
1
1↓
01010100
10101011
2↑
1010100x
0101011x
1
0
2↓
10101001
01010110
3↑
0101001x
1010110x
0
1
3↓
01010010
10101101
4↑
1010010x
0101101x
1
0
4↓
10100101
01011010
5↑
0100101x
1011010x
0
1
5↓
01001010
10110101
6↑
1001010x
0110101x
1
0
6↓
10010101
01101010
7↑
0010101x
1101010x
0
1
7↓
00101010
11010101
8↑
0101010x
1010101x
1
0
8↓
01010101
10101010
阅读全文
0 0
- SPI学习笔记(1)
- (学习笔记) SPI通信协议
- STM32 SPI学习笔记!
- STM32 SPI 学习笔记
- SPI协议学习笔记
- STM32-SPI实验学习笔记
- SPI总线协议学习笔记
- STM32的SPI学习笔记
- (学习笔记)stm32f429固件库之SPI读写FLASH
- Linux系统SPI驱动学习笔记(一)
- Linux系统SPI驱动学习笔记(二)
- Linux系统SPI驱动学习笔记(一)
- Linux系统SPI驱动学习笔记(二)
- Linux系统SPI驱动学习笔记(一)
- Linux系统SPI驱动学习笔记(二)
- SPI通信协议(SPI总线)学习
- SPI通信协议(SPI总线)学习
- SPI学习(一)
- Android高德地图之定位
- 大讲台机构Spark基础
- Python 批量合并sqlite db文件笔记
- Symmetric Difference
- xml格式化去空格
- SPI学习笔记(1)
- 道路交通实时流量监控预测系统
- golang 程序性能优化工具介绍
- Git版本恢复命令reset和revert
- 3D引擎数据结构与glTF(1):简介
- leetcode 436. Find Right Interval 最右边的区间
- c++学习总结2
- 高中数学?
- 电子商务网站(模块化布局)实战开发