如何硬件检测nrf24l01模块好坏
发布网友
发布时间:2022-04-20 09:55
我来回答
共1个回答
热心网友
时间:2023-06-30 20:30
NRF24L01寄存器如何设置
主模式控制下的寄存器的操作设置
器件利用两个引脚进行数据传送:
串行时钟(SCL)——RC3/SCK/SCL
串行数据(SDA)——RC4/SDI/SDA
用户可以通过设置TRISC<4:3>位将这两个引脚设为输
入或输出。
MSSP模块有六个寄存器用于I2C 操作,它们是:
MSSP控制寄存器 (SSPCON)
MSSP控制寄存器 2(SSPCON2)
MSSP状态寄存器 (SSPSTAT)
串行接收/发送缓冲器 (SSPBUF)
MSSP 移位寄存器 (SSPSR)—不可直接访问
MSSP 地址寄存器 (SSPADD)
SSPCON、SSPCON2 和SSPSTAT是 I2C 操作的控制
和状态寄存器。 SSPCON和SSPCON2寄存器可读写。
SSPSTAT 的低6 位为只读,高2 位可读写。
SSPSR 是用于将数据移入或移出的移位寄存器。
SSPBUF 是缓冲寄存器, 数据字节写入或从该寄存器中
读取。
当 SSP 被设置为 I2C 从模式时,SSPADD 寄存器用于
保存从机地址。当 SSP 被设置为主模式时, SSPADD
的低7 位作为波特率发生器的重装值。
接收时,SSPSR和 SSPBUF共同构成一个双缓冲接收
器。当 SSPSR 接收到一个完整字节时,该字节就被移
入SSPBUF,同时 SSPIF中断被置 1。
发送时,SSPBUF无双缓冲。写 SSPBUF 等同于同时
写SSPBUF和SSPSR。
寄存器 10-3: SSPSTAT:MSSP 状态(I
2C 模式)寄存器(地址为 94h)
R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0
SMP CKE D/A PSR/W UA BF
bit 7 bit 0
bit 7 SMP: 转换率控制位
主、从模式下:
1 = 关闭转换率控制,标准速度方式(100 kHz 和 1 MHz)
0 = 使能转换率控制,高速方式 (400 kHz)
bit 6 CKE: SMBus 选择位
主、从模式下:
1 = 使能 SMBus专用输入
0 = 禁止 SMBus专用输入
bit 5 D/A: 数据/地址位
主模式下:
保留。
从模式下:
1 = 表示最后接收或发送的字节是数据
0 = 表示最后接收或发送的字节是地址
bit 4 P: 停止位
1 = 表示最后检测到停止位
0 = 表示最后未检测到停止位
注: 复位及SSPEN 被清零时该位被清零。
bit 3 S: 起始位
1 = 表示最后检测到起始位
0 = 表示最后未检测到起始位
注: 复位及SSPEN 被清零时该位被清零。
bit 2 R/W: 读/ 写位信息 (仅限I2C模式)
从模式下:
1 = 读
0 = 写
注: 在前一次地址匹配时该位保存读 / 写位信息。该位仅在地址匹配至下一个开始位、
停止位或非 ACK时有效。
主模式下:
1 = 正在进行发送;
0 = 不在进行发送。
注: 该位与SEN、RSEN、PEN、RCEN 或ACKEN 位进行逻辑或操作时将表明MSSP
是否处于空闲状态。
bit 1 UA: 地址更新位(仅限10 位从模式)
1 = 表示用户需要更新 SSPADD 寄存器中的地址
0 = 表示不需要更新地址
bit 0 BF: 缓冲器满状态位
接收时:
1 = 表示接收完成, SSPBUF 已满
0 = 表示接收未完成, SSPBUF 空
发送时:
1 = 数据发送正在进行(不包括 ACK 位和停止位) , SSPBUF 满
0 = 数据发送已完成 (不包括 ACK 位和停止位),SSPBUF 空
图注:
R = 可读位 W = 可写位 U = 未使用,读作 0
- n = 上电复位值 “1” = 该位被置 1 “0” = 该位被清零 x = 未知状态
寄存器 10-4: SSPCON:MSSP控制 (I
2C 模式)寄存器 1 (地址为 14h)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0
bit 7 bit 0
bit 7 WCOL: 写冲突检测位
主发送模式下:
1 = 不具备开始发送的I
2C 条件时试图向 SSPBUF 寄存器写入数据