112楼
实验两天,没搞定NRF24L01。
一直是检测不到无线模块
今天那三用表测试了下,发现PB15和NRF的6号脚不通
PG8和NRF的8号脚不通。PG8还直接连到了地上
唉 郁闷了
没带拍针,还不好飞线。。。
只能放弃了。
不过模块测试是正常的
一直是检测不到无线模块
今天那三用表测试了下,发现PB15和NRF的6号脚不通
PG8和NRF的8号脚不通。PG8还直接连到了地上
唉 郁闷了
没带拍针,还不好飞线。。。
只能放弃了。
不过模块测试是正常的
114楼
SPI2驱动NRF24L01通信
感谢蒋粤的提醒。PCB上的丝印和实际的引脚不对应。引脚PG8对应的丝印应该是PG6.
同时,前几天调不通的时候测试了下PB15,与插针PB15 和片子上的引脚不通。
于是就拆掉板子上的NRF插座。换成插针,使用杜邦线连接NRF24L01模块。见下图
1、使用的硬件
SPI2、NRF24L01模块、PC6、7、PB13、14、15、PG6
2、使用原子的板子作为通信的另一端。
程序工作过程:
1、EEPW板双工模式收发数据
当收到串口发送过来的数据是,将串口数据发送。
接收数据,发PC端显示
2、原子板工作过程
启动按压Key1工作在发送模式,按压Key2工作在接受模式
串口处理代码:
void USART1_IRQHandler()
{
uint8_t Res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET) //检查串口1是否是否发生了中断
{
Res = USART_ReceiveData(USART1);
if((USART_RX_STA&0x80)==0)//接收未完成
{
if(USART_RX_STA&0x40)//接收到了0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else
{
USART_RX_STA|=0x80; //接收完成了
TX_Mode(); //设置为发送模式
NRF24L01_TxPacket(USART_RX_BUF); //发送数据
USART_RX_STA = 0; //情况串口数据标志
RX_Mode(); //继续接收
}
}
else //还没收到0X0D
{
if(Res==0x0d)USART_RX_STA|=0x40;
else
{
USART_RX_BUF[USART_RX_STA&0X3F]=Res ;
USART_RX_STA++;
if(USART_RX_STA>63)USART_RX_STA=0;//接收数据错误,重新开始接收
}
}
}
}
}
主函数中使用:
NRF24L01_Init(); //初始化,包含了SPI2的初始化
if(NRF24L01_Check()) //检测无线模块是否存在
{
printf("NRF24L01检查失败");
}
else
{
printf("NRF24L01检测成功");
}
printf("请输入要发生的数据,以回车结束\r\n");
RX_Mode(); //设置成接收模式
while(1) //循环检查是否收到数据
{
if(NRF24L01_RxPacket(tmp_buf)==0)
{
printf("收到数据:%s\r\n",tmp_buf);
}
}
图如下:
1、硬件连接
2、串口监视图片
单工模式串口监视

两个串口

双工模式收发数据

再来一张图

硬件图




感谢蒋粤的提醒。PCB上的丝印和实际的引脚不对应。引脚PG8对应的丝印应该是PG6.
同时,前几天调不通的时候测试了下PB15,与插针PB15 和片子上的引脚不通。
于是就拆掉板子上的NRF插座。换成插针,使用杜邦线连接NRF24L01模块。见下图
1、使用的硬件
SPI2、NRF24L01模块、PC6、7、PB13、14、15、PG6
2、使用原子的板子作为通信的另一端。
程序工作过程:
1、EEPW板双工模式收发数据
当收到串口发送过来的数据是,将串口数据发送。
接收数据,发PC端显示
2、原子板工作过程
启动按压Key1工作在发送模式,按压Key2工作在接受模式
串口处理代码:
void USART1_IRQHandler()
{
uint8_t Res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET) //检查串口1是否是否发生了中断
{
Res = USART_ReceiveData(USART1);
if((USART_RX_STA&0x80)==0)//接收未完成
{
if(USART_RX_STA&0x40)//接收到了0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else
{
USART_RX_STA|=0x80; //接收完成了
TX_Mode(); //设置为发送模式
NRF24L01_TxPacket(USART_RX_BUF); //发送数据
USART_RX_STA = 0; //情况串口数据标志
RX_Mode(); //继续接收
}
}
else //还没收到0X0D
{
if(Res==0x0d)USART_RX_STA|=0x40;
else
{
USART_RX_BUF[USART_RX_STA&0X3F]=Res ;
USART_RX_STA++;
if(USART_RX_STA>63)USART_RX_STA=0;//接收数据错误,重新开始接收
}
}
}
}
}
主函数中使用:
NRF24L01_Init(); //初始化,包含了SPI2的初始化
if(NRF24L01_Check()) //检测无线模块是否存在
{
printf("NRF24L01检查失败");
}
else
{
printf("NRF24L01检测成功");
}
printf("请输入要发生的数据,以回车结束\r\n");
RX_Mode(); //设置成接收模式
while(1) //循环检查是否收到数据
{
if(NRF24L01_RxPacket(tmp_buf)==0)
{
printf("收到数据:%s\r\n",tmp_buf);
}
}
图如下:
1、硬件连接
2、串口监视图片
单工模式串口监视

两个串口

双工模式收发数据

再来一张图

硬件图




118楼
晚上看了会神舟。耽误了点时间
基本完成红外解码,但程序还有点问题。
估计也是时间控制的问题。最后一个问题,没解决。
不动了
明天估计也没时间了,后天回家。
基本完成红外解码,但程序还有点问题。
估计也是时间控制的问题。最后一个问题,没解决。
不动了
明天估计也没时间了,后天回家。
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
| 【分享开发笔记,赚取电动螺丝刀】墨水屏文本显示器被打赏¥25元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX软件读取HTS221温湿度被打赏¥22元 | |
| M5PAPERESP32EINKDEVKIT评测|使用MicroPython开发M5Paper被打赏¥15元 | |
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
我要赚赏金
