历史上的今天
今天是:2024年08月26日(星期一)
2018年08月26日 | stm32 SPI通信 操作寄存器
2018-08-26 来源:eefocus
SPI(Serial Peripheral Interface--串行外设接口) 总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。 SPI是Freescale(原 Motorola)公司首先在其处理器上定义的。
SPI是一种高速、主从式、全双工、同步传输的通信总线,SPI总线在物理层体现为四根传输线:
MOSI (Master Output Slaver Input) – 主器件数据输出,从器件数据输入
MISO (Master Input Slaver Output) – 主器件数据输入,从器件数据输出
SCLK – 时钟信号,由主器件产生
NSS – 从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)
CS线用于控制片选信号,当一个SPI从设备的CS线识别到了预先规定的片选电平,则该设备被选中。显然可以通过CS线,完成“一主多从”的SPI网络架设,在进行“一主一从”的SPI通信时,SPI并不是必须的。
SPI总线传输数据时,由主机的SCLK线提供时钟脉冲,从机被动的接收时钟脉冲。主机在数据发送前,将数据写入数据寄存器,等待时钟脉冲移位输出,每个脉冲周期传输1位数据。 从机在主机的数据发送中,依靠主机的时钟,将从机的数据寄存器内容移位发送。所以要实现主从数据交换,在时钟信号前,主机 从机都必须先将数据写入数据寄存器,并且从机必须在主机前写入,然后由主机的SCLK时钟驱动发送。 不注意这个问题很容易造成SPI接收的数据错位。
这样的全双工、同步传输完全依赖于 主机控制的时钟线SCLK,而且SCLK上只有数据传输的时候才有时钟信号。主机向从机发送数据不会有问题,但是如果从机主动向主机发送数据呢?
从机要发送数据,必须要有SCLK的时钟,所以只能主机发送一个DUMMY(哑巴)字节,产生时钟,来实现和从机的数据交换。 从设备只能被动发送数据,无法主动发送数据。
本例实现 通过将STM32上的2个SPI接口对接,进行一个简单的数据交换。使用SPI1作为主设备,SPI2作为从设备,通过串口查看数据通信的情况。
上一篇:关于STM32寄存器的理解
下一篇:STM32影子寄存器的作用
史海拾趣
|
virtual BOOL ExtTextOut ( int x, int y, UINT nOptions, LPCRECT lpRect, LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths ); 想请教一下参数nOptions是否有效?本人通过测试,觉得ETO-CLIPPED、ETO-OPAQUE、NULL三者之间没有 ...… 查看全部问答> |
|
VC++关于directshow图像旋转90度输出花屏的问题 VC++关于directshow图像旋转90度输出花屏的问题 我在transfilter对图像做了一个90度的旋转,再传给第三个filter,发现图像是花屏,解析度为176x144 如果解析度为高,宽相等就是正常的(如:240x240) 请问是什么原因?… 查看全部问答> |
|
2套不同的协议。 对内协议使用默认的 4字节对齐, 网络通讯协议使用单字节对齐。 希望对 2种协议定义的结构体使用不同的字节对齐方式。 查了一下百度,试了几种网上提供的方法好像都无效。 1. typedef struct { un ...… 查看全部问答> |
|
急救 !!!!!!!!!!!!万里求救!传感器 单片机LED显示设计电路图 通过485 通信到485接口接收数据然后用(单片机)LED显示 气体浓度在0-0.5%是绿灯亮 0.5%-1%黄灯亮 蜂鸣器响且响的频率慢 >=1%红灯亮 蜂鸣器响且响的频率快 用AT89c2051做出 ...… 查看全部问答> |
|
一般情况下,电阻网络的测试通常采用下列三类测量方法中的一类: 标准四线开氏测量 六线防护式欧姆或德尔塔电阻测量 “Y”型或埋入式节点电阻测量(也称为分离开 ...… 查看全部问答> |
|
为什么我在C2000培训中考了很多次试,查看答卷和查看成绩里边都是空的,而且只有首... 为什么我在C2000培训中考了很多次试,查看答卷和查看成绩里边都是空的,而且只有首次考试成绩… 查看全部问答> |
|
RM48安全芯片达到了IEC61508 SIL3安全标准要求,独特的安全架构使得芯片具有很高的故障检测率。 那它的故障覆盖率能达到多少呢?有没有具体数据… 查看全部问答> |




