基于stm32的遥控小船(二)NRF24L01无线模块
无线收发数据我用的模块是NF24L01……这个模块小巧而便宜……几个引脚如图……功能大概是这样的
CSN:片选,电平为低时芯片工作
CE:CSN为低时控制CE状态
SCK:SPI时钟
MOSI:Master output slave input
MISO:Master input slave output
IRQ:中断,低电平触发(发送完成,接收数据,达到最大重发次数时触发)
关于这个模块详细的可以参照《NRF24L01学习笔记》……写的很全面详尽……
调无线对我来说是一个比较痛苦的过程……我有一块野火的stm32vet6mini板,模块没有ISO那么全,但也是“万事俱备只欠模块”的学习板,我需要做的就是把这个例程移植到从机(RBT6)上并加以修改,这可难倒我了。当时我想,反正是同一系列芯片,引脚功能大体相同,我这边连PA0那边也接PA0不就好了……那么问题来了,VET6是个大板一共100个引脚,而RBT6只有64个脚还未完全引出,板子上根本没有PDX,PEX等等,无处可连!
那么怎么办呢?查数据手册!表格里给出了引脚的名称,功能,复用功能,所以我只需要找到相同的功能然后连接就可以了,NSS,SCK,MISO,MOSI两块板上对应的均为PA4,PA5,PA6,PA7。查了每个引脚的功能之后,我们还剩下PE5,PE6(CE,CSN)没有解决……
例程里采用的是软件模拟SPI,所以我就找了两个这次用不到的引脚♪(^∇^*),连线完成!
我改好程序之后思路大概是这样的,连上矩阵键盘之后检测按键,当有某个按键按下时发送一个u8数组里的所有元素给从机,从机接受到数据之后进行相应处理,来决定PWM的占空比。
在调试的时候又出现了一个问题:无论主机是否工作,从机都会在串口上打印出收到的数据为255 255 255 255。最开始我觉得可能是由于数据格式不对而产生了溢出,但后来发现我把主机和从机的模块调换一下,就会变成主机接受到从机端的数据为255,255,255,255
于是我确定了这是模块的问题!估计是在接线换线过程中把模块烧坏了,所以一直读出高电平的数据,换了个模块之后发送就正常了~