基于STM32F1与NRF24L01模块的SPI简单通信
一、前言
1.简介:
本文是基于STM32F1,将数据发送至NRF模块的寄存器,并将数据重新读取,通过串口发送出来的简单SPI单通信。
2.SPI简介:
调过STM8的都已经对SPI有所了解,调法都一致,这里就不做详细的讲解。
3.准备工作:
软件层:
2.NRF24L01模块
二、SPI详解
SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的通信总线。因为其没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据可靠性上有一定的缺陷。
1.硬件接线:
VCC、GND不用讲。下面的四条线是完成通信的最基本线,作用已简略给出,需要进一步了解的可以详看数据手册。大家可以按照相应线用示波器观察对应波形,看时序是否正确。
CSN:从设备使能信号,由主设备控制。
SCK:时钟信号,由主设备产生。
MISO:主设备数据输入,从设备数据输出。(主要用于读取数据)
MOSI:主设备数据输出,从设备数据输入。(主要用于写入数据)
(在这里提示用示波器看的同学,记得看读取到数据的波形时,切换到MISO线,在MOSI线上是观测不到读取回来的数据 的)
2.Cube配置问题:
一开始调试时用的TIM7来配置Cube,但是一直无法正确读到波形,通过看数据手册和部分历程,我将时钟配置成TIM2,就能正常收发了。其他配置跟平常串口配置一样就行了,没有特别需要注意的。
3.寄存器地址和驱动读写问题:
不同于IIC读取时钟模块,这里只需要寄存器的地址,同时要查询到读指令和写指令来驱动设备读与写的功能。
1 |