OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3341|回复: 6

想请教一个关于NRF24L01 软件/硬件 模式的问题

[复制链接]

2

主题

18

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2021-4-9
在线时间
9 小时
发表于 2023-6-12 11:22:11 | 显示全部楼层 |阅读模式
2金钱
本帖最后由 1946602738 于 2023-6-12 11:24 编辑

最近做项目在把原子哥的nrf24l01程序移植到复旦微的板子上,在SPI初始化的时候有一个软件启动和硬件启动,原子哥的程序是这样的,用的软件模式

软件模式

软件模式

在下面代码中,原子哥直接拉高拉低NSS的电平来驱动SPI进行发送操作
02.png
我对软件模式的理解是SPI寄存器会有一位,改变值通知板子自己要发送给外设了或者现在不要发送,这时候拉高拉低电平都是告诉的nrf24l01的不是告诉板子自己,所以我的代码是这样的
04.png
事实上也是我改变了这一位寄存器的值才让板子开始了发送操作,如果单单改变电平我的程序会一直判断发送缓冲区非空不执行后面的写入
06.png
而原子哥的程序并没有改变什么SPI寄存器的值(除了拉高拉低SSN电平的引脚相关),这不应该是硬件模式的驱动方法吗?还是我对软件驱动硬件驱动有误解呢。
05.png
03.png

最佳答案

查看完整内容[请看2#楼]

使用软件SSN的时候调用读写函数后会自动写SSN位,同时触发对应硬件上SPI的SSN,但是实际你没有配置这个SSN,但是底层软件误认为它已经触发了,这个是没有反馈了,所以你要是使用了其他GPIO做片选,那么设不设置软件SSN其实无所谓了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4588
金钱
4588
注册时间
2015-1-10
在线时间
574 小时
发表于 2023-6-12 11:22:12 | 显示全部楼层
1946602738 发表于 2023-6-13 11:34
是的,这个我明白,但是原子哥用的是软件SSN,但是他只拉了电平,软件不需要自己改一下SSN内部寄存器实现 ...

使用软件SSN的时候调用读写函数后会自动写SSN位,同时触发对应硬件上SPI的SSN,但是实际你没有配置这个SSN,但是底层软件误认为它已经触发了,这个是没有反馈了,所以你要是使用了其他GPIO做片选,那么设不设置软件SSN其实无所谓了
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2021-4-9
在线时间
9 小时
 楼主| 发表于 2023-6-12 11:45:28 | 显示全部楼层
补充:寄存器手册
SSN          Master 模式下,如果 SSNSEN 为 1,软件可以通过此位控制 SSN 输出电平
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4588
金钱
4588
注册时间
2015-1-10
在线时间
574 小时
发表于 2023-6-13 11:08:02 | 显示全部楼层
软件实现片选可以不固定GPIO,这样硬件设计会自由一点,如果一组SPI上只有一个设备甚至可以硬件片选
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2021-4-9
在线时间
9 小时
 楼主| 发表于 2023-6-13 11:34:58 | 显示全部楼层
阿侑kevin 发表于 2023-6-13 11:08
软件实现片选可以不固定GPIO,这样硬件设计会自由一点,如果一组SPI上只有一个设备甚至可以硬件片选

是的,这个我明白,但是原子哥用的是软件SSN,但是他只拉了电平,软件不需要自己改一下SSN内部寄存器实现通知自己的片选吗,如果只是拉低SSN引脚芯片内部会直接通知自己选中了吗
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2021-4-9
在线时间
9 小时
 楼主| 发表于 2023-6-13 13:55:07 | 显示全部楼层
阿侑kevin 发表于 2023-6-13 13:48
使用软件SSN的时候调用读写函数后会自动写SSN位,同时触发对应硬件上SPI的SSN,但是实际你没有配置这个SS ...

好的,很感谢,我测试一下
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2021-4-9
在线时间
9 小时
 楼主| 发表于 2023-6-13 16:01:34 | 显示全部楼层
阿侑kevin 发表于 2023-6-13 13:48
使用软件SSN的时候调用读写函数后会自动写SSN位,同时触发对应硬件上SPI的SSN,但是实际你没有配置这个SS ...

解决了,我的复旦微板子软件模式不仅要拉电平还要自己手动拉这个SSN位
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 07:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表