项目背景:基于LORA的遥控器

项目器件清单:

  1. 正点原子LORA模块(资料多)
  2. 摇杆模块(电位器)
  3. 主控stm32

实现流程:摇杆数据的读取、通信协议、从设备解开数据包。

1、摇杆数据的读取

上图就是我选取的摇杆(独立按键不涉及),摇杆就相当于电位器,AD读取电压即可。

对于比较初级的使用AD,我们需要明确几个方面:

  1. 明确所用引脚  ----->  配置引脚
  2. ADC的转换周期 = 采样时间 + 转换时间
    1. 通过总线驱动外设,总线配置的时钟频率要小于ADC的最大频率(一般需要分频)
    2. 采样时间,SMP寄存器配置
    3. 转换时间取决于ADC的位数
  3. 如果用库函数开发,计算完需要的参数,配置就行了。其余的模式、通道等若用到也可以修改。
  4. 我们设置一个全局变量存放数据就好。

2、通信协议

正点原子给出了一个接受的通信协议。所有的接受数据以0x0d 0x0a结束。

void USART1_IRQHandler(void)                 //串口1中断服务程序
{u8 Res;
#if SYSTEM_SUPPORT_OS       //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.OSIntEnter();
#endifif(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾){Res =USART_ReceiveData(USART1);//(USART1->DR);   //读取接收到的数据if((USART_RX_STA&0x8000)==0)//接收未完成{if(USART_RX_STA&0x4000)//接收到了0x0d{if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始else USART_RX_STA|=0x8000;  //接收完成了 ,标记完15位后,等待被其他程序清零}else //还没收到0X0D{   if(Res==0x0d)USART_RX_STA|=0x4000;else{USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;USART_RX_STA++;if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收   }      }}          }
#if SYSTEM_SUPPORT_OS   //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.OSIntExit();
#endif
} 

下面画个树状图理解一下

协议里如果数据包正确,按照,(1)、(2)、(3)进行接受数据。

3、从设备解开数据包

我们如果不使用上文的协议(正文数据左右放置固定参数),也可以自己写个数据包。

  1. 因为串口是8位数据完成一次传输,且AD的数据为16位的,所以我们需要定义一个8位的数组,并且将16位的数据放进去。

    date[i++] =(AD>>8)&0xff;//数据高位
    date[i++] = AD&0xff;//数据低位
  2. 但是这样也不能保证数据的正确性,所以我们还要放入两个AD数据加和的值。

  3. 我们将数据传输过去后,还需要拆包,并将16进制数据转为10进制,方便验证。
    x = (USART3_RX_BUF[0]/16)*(16*16*16)+(USART3_RX_BUF[0]%16)*16*16+(USART3_RX_BUF[1]/16)*16+USART3_RX_BUF[1]%16;y = (USART3_RX_BUF[2]/16)*(16*16*16)+(USART3_RX_BUF[2]%16)*16*16+(USART3_RX_BUF[3]/16)*16+USART3_RX_BUF[3]%16;xADDy = (USART3_RX_BUF[4]/16)*(16*16*16)+(USART3_RX_BUF[4]%16)*16*16+(USART3_RX_BUF[5]/16)*16+USART3_RX_BUF[5]%16;

    到这里也就完成了。

基于串口通信的摇杆控制器 ---- 摇杆数据的读取、通信协议、从设备解开数据包相关推荐

  1. 基于串口通信的DSP应用程序在线升级方法

    摘  要:为解决特殊场合DSP程序升级困难的问题,以TMS320F28035为例,介绍了一种基于串口通信的适合于TMS320C2000系列DSP实现程序更新的在线升级方法.描述了该在线升级方法的基本思 ...

  2. [python] 3 、基于串口通信的嵌入式设备上位机自动测试程序框架(简陋框架)...

    星期一, 20. 八月 2018 01:53上午 - beautifulzzzz 1.前言 做类似zigbee.ble mesh...无线网络节点性能测试的时候,手动操作然后看表象往往很难找出真正的原 ...

  3. STM32配置CH375B成HID Host模式读取自定义HID设备的数据 ——STM32配置CH375B接口函数

    接着上一篇上传,这个是STM32配置CH375B时用到的接口函数 头文件: #ifndef __BSP_CH375_H__ #define __BSP_CH375_H__#include " ...

  4. python3读取excel数据-Python3读取和写入excel表格数据的示例代码

    python操作excel主要用到 xlrd 和 xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.python ...

  5. python3读取excel数据-python3 读取Excel表格中的数据

    需要先安装openpyxl库 通过pip命令安装: pip install openpyxl 源码如下: #!/usr/bin/python3 #-*- coding:utf-8 -*- import ...

  6. java获取xlsx某列数据_Java读取Excel指定列的数据详细教程和注意事项

    本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...

  7. Android 读取外接储存设备的数据(如挂载的U盘,SD卡等)

    本篇文章,将围绕以下几点来讲解: 1:OTG是什么? 2:Android手机和一些Android系统的TV盒子对OTG的支持情况? 3:如何得知外接储存设备的插入和拔出的广播事件? 4:得到插入广播后 ...

  8. STM32配置CH375B成HID Host模式读取自定义HID设备的数据 ——STM32端口初始化

    最近产品需要一个USB主机测试治具,所以需要做一个USB HOST去读取HID设备的数据,由于以前也没做过USB方面的项目,对这一块也不是很熟悉,因此遇到了很多困难,所幸的是经过两天半的努力,最终完成 ...

  9. java搜索excel表格里的数据_Java读取Excel表格中的数据

    前言 本文主要讲述如何在Java中读取Excel表中的数据并在控制台输出,实现工具为Eclipse 提示:以下是本篇文章正文内容,下面案例可供参考 一.添加jar包文件 描述:在Java中导入导出Ex ...

  10. python3 写入excel表格数据_Python3读取和写入excel表格数据

    目录 python操作excel主要用到 xlrd和xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.pytho ...

最新文章

  1. 别的设计师比你又快又好,是因为你不知道他们在用介个!
  2. C语言内存泄露很严重该怎么办?这几招告诉你
  3. VMware Workstation Pro 无法在Windows上运行的解决方案
  4. activty在哪个栈里面_第二篇Activity:2、任务和返回堆栈(Tasks and Back Stack)之基本介绍...
  5. linux桌面使用网卡设置,Linux的KDE桌面下怎样设置网络连接?
  6. Ubuntu 下PySpark安装
  7. 爬虫-芒果TV-弹幕评论
  8. 20141113--SQL 事务
  9. MATLAB编程与应用系列-第3章 矩阵运算(4)
  10. 接口测试自动化框架搭建
  11. synchronized可重入锁
  12. 服务器远程桌面一直正在配置,关于远程桌面一直显示正在配置远程会话
  13. 最新Python使用键鼠模拟,DNF拍卖行
  14. 柔性整列压力传感器工作原理记录
  15. win10计算机系统慢,解决Win10电脑变慢的一些方法
  16. 还记得JavaWeb中的组件Servlet吗?面试会问
  17. 前端面试经典js题目Foo 与 getName
  18. 车道线检测---色彩空间变换
  19. Systemd中环境变量设置
  20. 平生不会相思,才会相思,便害相思

热门文章

  1. 去中心化 分布式 自组织 概念区分与理解
  2. mro python_Python-MRO
  3. imdb数据集电影评论分类
  4. 区块链三加一告诉你如何快速了解区块链入门技术?
  5. Domain Driven Design 领域驱动设计
  6. python因子分析案例_Python因子分析简介
  7. ZAO作一下,你会是谁
  8. javascript 3/13
  9. 支付宝小程序: h5跳转 小程序
  10. 智能音箱---TAS5754M 音频DSP 到Android