LoRa点对点系统5 数据结构与算法

LoRa点对点系统5 数据结构与算法

1 Comm2Trm进程

1.1处理UART数据帧

为节省内存,接收与处理UART数据“复用”了缓冲区,如下图所示:

UART驱动:

#1:一个接一个将接收的UART数据存储到缓冲区;

#2:接收一完整UART帧后,发消息给进程通知处理;

Comm2Trm进程:

#3:给缓冲区加锁,解析UAR帧;

#4:组织UART回应帧;

#5:通过UART发送回应帧,给缓冲区解锁。



为什么要给缓冲区加锁和解锁呢?如下图的时序逻辑所示:进程“锁定”缓冲区期间UART驱动无法向缓冲区中写数据,因此也不会“竞态打扰”进程处理该数据帧。



1.2 发送RF数据包

#1:UART一个接一个输入数据到缓冲区COMM_TRM_DATA;

#2:当接收一完整帧结束后,UART_ISR给进程poll消息;

#3:进程解析和处理该UART数据帧;

#4:进程拷贝用户数据到缓冲区TxDataBuf;

#5:Network进程从缓冲区TxDataBuf提取数据,通过RF发送。



1.3 接收RF数据包

#1:Network进程存储接收数据到缓冲区RxDataBuf;

#2:Network进程post消息给Comm2Trm进程;

#3:Comm2Trm进程组织该数据为UART帧;

#4:进程通过UART口发送该数据帧。



2 Network进程

2.1发送RF数据包

#1:从Comm2Trm进程提取发送数据到packetbuf;

#2:基于packetbuf组织RF数据包;

#3:通过RF发送packetbuf中的RF数据包;



2.2接收RF数据包

#1:RF接收的数据包存入RadioBuf,并poll进程;

#2:进程从RadioBuf拷贝数据包到ParseRFBuf;

#3:进程解析该RF数据包;

#4:提取用户数据,交付给Comm2Trm进程;

 

 

2.3 逻辑流程



3 SystSettings模块

为简化设计,定义了NetSettings_t数据结构,它的“主本”存储在SystSettings模块的EEPROM中,Comm2Trm和Network这2个进程各自拥有一个“副本”。

1.     上电时,Comm2Trm和Network这2个进程各自从“主本”拷贝“副本”;

2.     任意一方修改“NetSettings_t”的副本数据,必须:①存储到“主本”之中;②通知“另一方”同步更新副本数据。

 

 

 

 

 



  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值