【TPMS】 - 发射端1

2023-11-20 14:41
文章标签 发射 tpms

本文主要是介绍【TPMS】 - 发射端1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TPMS项目-发射端SP370

  • 目录
    • 章节介绍
  • 一、 发射端整体介绍
  • 二、无线通信理论知识
  • 三、发射端源码总览
  • 四、SP370库函数的使用和封装
  • 五、SP370其他库函数的使用和封装
  • 六、结构体变量作为函数形参

目录

章节介绍

1.发射端整体介绍
  讲发射端的总体情况,原理图和资料分布,整个课程的安排等。
2.无线通信理论知识
  补充无线通信方面的基础知识给大家,这些东西是射频领域做项目经常涉及到的关键点,掌握了对提升自己价值非常有意义。一句话,让你看上去就像是月薪1.5万的人。
3.发射端源码总览
  总体介绍发射端的源码、工程建立、设置、所有的C文件和H文件。
4.SP370库函数的使用和封装
  详细讲解SP370的ROM Library的API定义和使用方法,并以气压测量的API为例来详细讲解,带读手册。
5.SP370其他库函数的使用和封装
  讲述ROM Library中的其他一些关键API。

一、 发射端整体介绍

1.1、原理图
(1)主体就一个SP370,SP370由一个51内核的CPU和一个多功能的传感器组成
(2)纽扣电池CR2032供电,真实产品往往把sp370和纽扣电池背靠背所以很小
(3)板载PCB天线17.25cm,环绕在PCB边缘,PCB布线要考虑很多因素
(4)4个孔是I2C接口,用来烧录程序和调试接口
(5)Y2晶振(18.08MHz)不是给MCU用的,是给内部433.92MHz载波发生器用的
(6)发射端原理图:

TPMS_SENDER

1.2、SP370介绍
(1)SP370 = 51单片机 + 4个功能的传感器(压力、温度、加速度、电池电压)
(2)软件开发工具:Keil C51
(3)传感器等专用功能编程被官方(英飞凌)封装成一个预编译的lib库文件供给我们使用,我们直接调用函数即可;使用方法:官方示例代码+应用文档ROM Library Guide。
(4)其他资料:SP370 datesheet (硬件资料)

1.3、 发射端课程安排
(1)433MHz无线通信、FSK调制、Manchester编码、调制解调、基带载波、频偏等射频概念
(2)发射端代码逐句详解,跟着代码看数据手册
(3)传感器操作预编译库的使用,及相关手册的查阅方法 – 这种能力非常重要
(4)发射端与接收端通信数据包的协议和格式定义

二、无线通信理论知识

2.1、无线通信基本原理
(1)发射端通过天线发射无线电波,无线电波在空气中传播,接收端接收无线电波。
(2)发射功率越大,被接收到的可能性越大,传播距离和可靠性会提高。缺点是功耗大电磁污染也更大,所以一般根据需要调试到一个最佳值。
(3)无线电波的频率越高传输距离越远,但穿透性越差。
(4)空气中相同(相近)频率的无线电波会互相干扰,因为接收方无法区分谁是谁
(5)为了避免无度干扰,无线电波的频率不能随便选,有国际法律规定的。所谓电子战中的干扰其实就是故意发射相应频率的电波信号让对方的通讯信道堵塞。
(6)为什么经常听到2.4G和433M的无线通信?因为这2个是不需要牌照的民用波段。2.4G用于WIFI、4G等,而433M用于很多无线遥控器(如汽车遥控钥匙、电器遥控器等)

2.2、无线通信相关概念
(1)基带:未经过调制的原始电信号的频带,就是无叠加有效信息但能再空气中传播的原始电磁波。
信号: 传播的有效信息
调制:把需要传输的有效信息放在基带上的过程叫调制
载波:携带了需要传输的有效信息的基带叫载波
(2)中心频率:SP370的中心频率是433.92MHz
(3)频偏: 频率误差,误差不能被消除,只能被减小
(4)Manchester编码:曼彻斯特编码是无线编码的一种方式,它将时钟和数据包含在数据流中
(5)FSK/ASK调制: 调制解调必须按照同一种方式

三、发射端源码总览

3.1、MDK工程介绍
(1)源码目录和工程目录文件浏览

scr源码目录:
inc(存放.h头文件)
  Reg_SP37.h (SP37相关内部寄存器的定义)
  RF.h(射频相关的)
  SP37.h(SP37数据类型和函数原型的定义)
  SP37_ROMLibrary.h(SP37预编译库函数的定义)
  uart.h(串口相关的)
lib
 SP37_ROMLibrary.LIB(SP37预编译库文件、函数的函数体)
startup
 STARTUP.A51(起始文件)
user
  main.c
  RF.c
  SP37.c
  uart.c

工程目录文件:

工程目录

(2)MDK工程介绍:单片机型号选择、工程文件目录
单片机型号:STC89C52

3.2、uart相关代码
(1)仅有的2个IO来模拟串口发送接收
(2)串口主要用来调试
(3)串口操作源码来源自官方示例代码,很多细节和定制的51内核有关
(4)串口代码在我们整个工程中没有用到,不必细看
(5)System Clock = 12MHz, 配置的波特率19200

3.3、rom_lib的使用
(1)将内部核心操作封装成函数,提供lib文件和h文件和文档给开发者使用
(2)为什么这么做?一方面简化开发屏蔽细节,另一方面保护核心技术
(3)用法:将lib文件和h文件加入工程,相应API作为extern声明函数直接使用,链接时链接器会自动去lib库中提取相应函数的函数体,编译进最终的hex文件中。
(4)看文档(SP37_Rom_Lib_Guide)是关键,相应API的参数、返回值、函数作用、用法示例代码等都在文档中。
(5)这种方式在实际产品开发中非常普遍,要学会去习惯。
(6)如果有疑问解决不了怎么办?找官方支持、找同行问、自己琢磨
(7)如果官方库有bug怎么办?找他们反馈解决、换方案商

四、SP370库函数的使用和封装

4.1、项目工程编译流程
Measure_Pressure()函数在SP37.c文件中,调用函数Meas_Pressure()在SP37_ROMLibrary.h文件中使用extern关键字声明,表示这个函数是一个外部定义函数,所以在编译的时候能读到函数原型,在链接的时候去SP37_ROMLibrary.Lib中读到函数体,编译进最终的hex文件中。

4.2、SP370相关库函数
(1)SP370测量压力函数封装:

函数执行压力传感器的测量
(2)外部定义的函数声明
函数声明
(3) 函数体
函数体

4.3、SP370库函数解读
(1)API的函数原型
Meas_Pressure: Input Parameters
SensorConfig: 传感器配置
SampleRate: 采样率
PressResult : 气压结果 – 输出型函数(没有+const关键字)

函数原型

(2)API参数解读

传入参数1:Input Parameter : SensorConfig

*(PressResult+2) 指针访问元素(*(指针+偏移量)) ,等同于Raw_Temperature

传入参数2:Input Parameter: SampleRate

传入(输出型参数)参数3:Input Parameter: Output values

输出型函数

Measure_Pressure()函数通过输出型参数(int Pressure_VAL)来返回值 ,返回值返回实际是三个参数
(
(PressResult+0) 或 *(PressResult+1) 或 *(PressResult+2))。

4.4、SP370库函数改进
(1)Measure_Pressure()函数实际可以有三个返回值,(int *Pressure_VAL)可以返回其中一个值。
(2)改进:把Measure_Pressure()函数传入的参数(int *Pressure_VAL)修改成结构体指针的形式,通过->的运算符传出运算结果。

输出型函数

五、SP370其他库函数的使用和封装

5.1、Meas_Acceleration()
5.2、Meas_Temperature()
5.3、Measure_Supply_Voltage()
5.4、Read_ID()
总述:以上四个函数的功能与Measure_Pressure()套路基本类似,看SP370的文档(SP37_Rom_Lib_Guide),描述的内容基本类似。

5.5、Scale_Pressure()
压力范围 100…450 kPa 用一个无符号字节表示,字节范围从 0…255。 需要(350 / 255)1.373 kPa/LSB 的比例系数才能满足。但是,SP37 Meas_Pressure函数返回一个有符号整数值,该值将压力表示为 1/16 kPa/LSB,因此,从 1/16 kPa/LSB 转换为 1.373 kPa/LSB 是一项通常需要完成的任务。

二个字节表示压力范围:8000H = -2048.0 kPa,7FFFH = 2047.9375 kPa,其中有很多的范围是用不着的。

函数执行将双字节转化为单字节形式传输压力值

注:本资料大部分由朱老师物联网大讲堂课程笔记整理而来

六、结构体变量作为函数形参

(1)

(2)

(3)

这篇关于【TPMS】 - 发射端1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395361

相关文章

电子发射与气体导电

物理电磁学练习题:电子发射与气体导电 说明: 以下题目考察对电子发射和气体导电基本概念的理解和应用。 1. 解释以下概念:      (a) 热电子发射      (b) 光电效应      © 逸出功      (d) 等离子体 2. 比较并对比热电子发射和光电效应的异同。 3. 钨的逸出功为 4.5 eV。      (a) 计算能够从钨表面发射电子的最长波长光。      (b) 如

智能手机、汽车新应用,星纪魅族幸运星号”卫星即将发射

朋友们!你想象过我们的智能手机和汽车能与卫星直接通信吗? 这听起来像是科幻小说里的情节,但很快,这将成为现实!星纪魅族科技最近宣布了一个振奋人心的消息——他们将与时空道宇合作发射“星纪魅族幸运星号”卫星。这不仅是一次科技的飞跃,更是智能科技生态建设的一大步。 今天,就让我们一起来探讨这颗卫星及其应用将如何影响我们的未来。 一、卫星的技术特点和运行轨道 首先,让我们来看看“星纪魅族幸运星

Comsol TPMS_Diamond多孔构型吸声性能仿真

TPMS_Diamond多孔构型是一种新型的吸声材料结构,它采用了三维打印技术制备而成。该构型的设计灵感来自于结晶体的晶格结构,通过将正方形的单元堆积并沿着特定方向旋转,形成了一种类似于钻石的多孔结构。 TPMS_Diamond多孔构型具有以下特点,使其具备出色的吸声性能: 多孔结构:TPMS_Diamond构型中有大量的空隙和孔隙,这些孔隙可以有效地吸收声波能量。多孔结构可以提供更多

支持2.4G频秒变符合GB42590的标准的飞行器【无人机GB42590发射端】

使用方法: 放在飞机 上,按键那一面需要朝上对着天空(因为GPS陶瓷天线在按键面),支持基本ID,向量和系统包,电池容量240mAH充电1小时,使用时间大概2小时。 1.长按3秒开关机 2.开机红灯慢闪,只发射基本ID数据包,定位成功后红灯快闪发射基本ID,向量和系统包 通过高度和速度自动判断飞机在空中还是地面,自动使用起飞前的经纬度作为操作员经纬度充电绿灯常亮,充满绿灯熄灭 详情资料可在

单工无线发射接收系统

1 绪论 随着无线电技术的发展,通讯方式也从传统的有线通讯逐渐转向无线通讯。由于传统的有线传输系统有配线的问题,较不便利,而无线通讯具有成本廉价、建设工程周期短、适应性好、扩展性好、设备维护容易实现等特点,故未来通讯方式将向无线传输系统方向发展。同时,实现系统运行的最小功耗是现代电子系统的普遍取向,也是绿色电子的基本要求。因而,如何通信才能使系统稳定、高效、节能的运行,成为系统开发过程中必须加以

利用java发射 生产对象的sql插入语句

import java.lang.reflect.Field;import java.lang.reflect.Method;/*** 这是用java反射来实现对对象的属性,方法,类名的取值。再组成一条万能的insert 语句。* @author 小高*/public class Test2 {public static void main(String[] args) throws Exce

OFDM 802.11a的FPGA实现(二十一)发射主控模块MCU(含代码)

目录 1.前言 2.主控逻辑 3.Matlab 4.verilog 5.ModelSim 6.ModelSim仿真结构与Matlab自动化对比 完整工程链接(含verilog和Matlab代码): https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzkxNjM0NDk2Nw==&action=getalbum&album_id=340

定了!嫦娥六号任务计划5月3日发射 | 最新快讯

来源:央视新闻客户端   今天(5 月 1 日),国家航天局发布最新消息,经工程任务指挥部综合研判决策,探月工程四期嫦娥六号任务计划 5 月 3 日实施发射。   发射窗口是指适合火箭发射的时间范围。此次任务在综合考虑地月位置关系等因素基础上,工程团队应用“窄窗口多轨道”发射技术,为火箭在 5 月 3 日和 5 月 4 日连续两天、每天 50 分钟的窗口内,共设计了 10 条奔

BK9535可替代BK9531 BEKEN博通 无线高品质语音发射传输芯片 提供开发资料

概 述 BK9531已经停产,厂家推出升级替代芯片BK9535 BK9535芯片是用于无线高品质语音发射传输的芯片,芯片覆盖频段范围为:V段(160~270MHz)、U段(450~980MHz)、1G频段(980~1176MHz)。 BK9535采用pi/4DQPSK数字调制和高性能音频ADC,配合极低延迟的音频编解码器,实现了高保真的数字音频传输,可以应用于视唱、舞台演出以及教学系统。

自己写BeanFactory,实现读取配置文件,并根据发射创建对象。

为了使程序尽量的降低耦合程度,提高程序的可维护性,我们一般都会采用写配置文件的方法。 下面,我贴出写的一个BeanFactory类 ,来读取配置文件,并通过java的发射机制创建配置中的对象: 例如我新建一个bean.properties的配置文件, 类容: userdao = com.tmaic.dao.UserDao; bookdao = com.tmaic.dao.