OpenEdv-开源电子网

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

在mini板上实现LORA模块不间断发送60字节数据会卡机的问题

[复制链接]

6

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2020-3-13
在线时间
32 小时
发表于 2020-3-13 09:59:14 | 显示全部楼层 |阅读模式
1.实物描述:我有两块mini板,板A,板B,分别接上ATK-LORA-01的无线串口模块(与串口2相连),板A的串口3上面连接 模块C,模块C发送过来的数据是0.1s一个包(10HZ)
2.实现过程:

板A通过串口3不停的接收 模块C 传过来的数据后解析,然后板A通过串口2上的无线模块将解析数据  不断发送给板B,板B进行数据接收;
3.所遇问题:
发送数据一定时间后会卡死(这个数据发送的函数是在while 1里面不停调用的)
4.自己的思路:(这个不重要,请教下大家有没有好的方法去处理)
  4.1.使用透传将数据透传给板B,但是这样我就不知道怎么将  无线串口模块初始化命令  发送给 无线模块了;
  4.2.弄用一个环形缓冲UART2_SEND_FIFO,去代替这个USART2_TX_BUF,但有些细节不知道怎么处理;比如:
       4.2.1.我将模块C发送过来的数据解析后放到sendBuf里面,我该如何将sendBuf放到环形缓冲里面去;(我想这里肯定不是简单的拷贝)
       4.2.2.怎么从环形缓冲取数据并发送出去;

部分代码如下:
串口2的发送处理代码:
#define USART2_MAX_RECV_LEN                1024                                        //最大接收缓存字节数
#define USART2_MAX_SEND_LEN                400                                        //最大发送缓存字节数
#define USART2_RX_EN                         1                                        //0,不接收;1,接收.

extern u8  USART2_RX_BUF[USART2_MAX_RECV_LEN];                 //接收缓冲,最大USART2_MAX_RECV_LEN字节
extern u8  USART2_TX_BUF[USART2_MAX_SEND_LEN];                 //发送缓冲,最大USART2_MAX_SEND_LEN字节
extern u16 USART2_RX_STA;                                                   //接收数据状态

void u2_printf(char* fmt,...)  
{

        u16 i,j;
        u16 ret;
        va_list ap;
        va_start(ap,fmt);
        ret = vsprintf((char*)USART2_TX_BUF,fmt,ap);
        va_end(ap);
        //i=strlen((const char*)USART2_TX_BUF);//此次发送数据的长度

        for(j=0;j<ret;j++)                     //循环发送数据
        {
                while((USART2->SR&0X40)==0);     //循环发送,直到发送完毕   
                USART2->DR=USART2_TX_BUF[j];  
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2020-3-13
在线时间
32 小时
 楼主| 发表于 2020-3-13 11:52:04 | 显示全部楼层
各位大神,走过路过,帮忙给点意见,无线串口ATK-LORA-01方面,我现在遇到一个问题,通过无线串口不停的给另一个lora模块发送数据,一定时间后就会停止发送,然后按按键无反应(应该是挂了),想请教的是  利用无线串口模块怎么才能过不停的发送数据,而不让板子挂掉?
回复 支持 反对

使用道具 举报

6

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2020-3-13
在线时间
32 小时
 楼主| 发表于 2020-3-13 12:37:40 | 显示全部楼层
补充说明下:板A连接的串口波特率是115200    而板A接上的无线串口模块设置的空中速率为19.2kbps,怀疑可能与这个有关系,但没证实(刚想到这点)
回复 支持 反对

使用道具 举报

31

主题

2176

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14150
金钱
14150
注册时间
2018-8-3
在线时间
1143 小时
发表于 2020-3-13 15:27:42 | 显示全部楼层
你要每次发送数据之间要有个时间间隔 LORA 最大的一包是512字节   间隔时间至少有个80ms 建议你每一包数据发送间隔150ms左右 再去测试看看
回复 支持 反对

使用道具 举报

6

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2020-3-13
在线时间
32 小时
 楼主| 发表于 2020-3-26 18:22:28 | 显示全部楼层
翼行园子 发表于 2020-3-13 15:27
你要每次发送数据之间要有个时间间隔 LORA 最大的一包是512字节   间隔时间至少有个80ms 建议你每一包数据 ...

嗯嗯,有道理,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-6-8 22:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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