SPI通信

         SPI采用一主一从或一主多从       

起始信号:NSS片选信号没被选中默认高电平,CS信号由高电平转为低电平,

停止信号:NSS片选信号由低转高

同步时钟:SCK,SPI总线是一个同步全双工通信总线,所以SPI的数据传输需要SCK时钟信号严格同步的,SCK一个时钟周期传输一位数据

SPI有四种工作模式:关于在SCK信号空闲时候高低电平和数据采样在时钟第几个时钟沿

CPOL(时钟极性): CPOL=0,SCK空闲状态为低电平。 CPOL=1,SCK空闲状态为高电平。

CPHA(时钟相位):CPHA=0,SCK一个周期内第一个时钟沿对数据线上的数据进行采样。 CPHA=1,SCK第二个时钟沿对数据线上的数据进行采样

SPI通信模式由主机配置,从机例如NRF2401只规定了一种通信模式,SPI模式1.所以主机也需配置为模式1,否则无法与从机通信

SPI通信流程,主机与从机移位寄存器内容的交换,数据交换,同时进行

SPI硬件

SPI_CR1  SPI控制寄存器1的bit 可以配置主从模式,时钟极性,时钟相位

主机的配置,SPI模式和MSB(高位先发)或者LSB(低位先发),主机要遵从从机数据手册进行配置

只接收模式设置为1,只接收,为0,全双工

双向通信数据模式使能:为0使能单线,为1使能双线

Bidirectional data mode enable(双向数据模式)配置下

Tx buffer empty interrupt enable发送缓冲区中断使能

RXNEIE:(Rx buffer not empty interrupt enable)接收缓冲区非中断使能

TXDMAEN为1,使能发送缓冲区DMA,:当TXE标志置1时,即产生DMA请求,

RXDMAEN为1,当RXNE标志置1,即产生DMA请求

硬件连接图

NRF240l芯片Si24r1芯片特性

最高10Mhz四线SPI接口

芯片ACK模式设置

PRIM_RX=1,接收模式,反之,发送模式

配置发送和接收MCU的寄存器地址

发送MCU芯片寄存器的TX_Addr要和接收MCU芯片寄存器RX_Addr一样

接收到数据后,接收MCU的引脚由空闲状态置低电平,RX FIFO连接的引脚配置为外部中断,就可以在RX FIFO里面读取数据,告诉MCU可以来读取数据了

接收完成,接收MCU要发送ACK应答信号,所以发送芯片的RX_Addr和TX_Addr 还有接收芯片的RX_Addr要设置为相同的

接收方发送ACK信号给发送方,发送方接收到ACK信号后, RX FIFO有数据,MCU相应端口电平由高转低,也是外部中断配置,接收到了会产生中断,没有接收到就不会产生中断,会设置有等待应答时间,等待应答时间完后发送方会重发一次数据,cnt计数加1,到达最大重发次数后就不会发了

NRF半双工通信模式(通信双方可发可收,不可同时发,)

发送和接收MCU常态都设置为RX模式,要发送数据的一方,把状态切换为TX,发送完后再切换为接收模式

NRF24l01的配置

TX模式初始化过程

RX模式初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值