1、项目七 医疗无线呼叫系统,实现基于433MHz无线收发,任务二,任务二 实现基于433MHz无线收发,了解SI4432无线收发模块;掌握通过SPI控制SI4432无线模块进行数据收发。,能根据任务要求,快速查阅硬件连接资料,准确搭建设备环境;能根据功能需求,正确添加代码,实现两个无线设备之间的信息收发,知识目标,技能目标,任务二 实现基于433MHz无线收发,某公司准备为医院开发一套医疗无线呼叫系统,在考虑成本与实用性安全性后,采用STM32系列单片机,SI4432无线收发模块。此任务主要分为三部分,任务2为第二部分,实现两个SI4432无线收发器自动通讯,任务描述:,任务要求:,对SI443
2、2无线收发模块进行初始化配置实现SI4432的接收和发送功能实现两个SI4432之间的通信,02,任务描述与要求,任务二 实现基于433MHz无线收发,任务分析,思考一下,你们考虑可以用哪些无线模块进行数据收发?本次任务会用到哪些技术?,任务计划表,通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!,任务二 实现基于433MHz无线收发,SI4432无线模块操作,SI4432无线收发分析,2,3,04,知识储备,SI4432无线模块介绍,1,SI4432无线模块介绍,无线通讯频段,SI4432无线模块,2,3,工作模式,蓝牙,NFC,WiFi,Zig
3、bee,常见的无线通信技术,平常用的无线模块主要有315MHZ,433MHZ,2.4GHZ,无线通讯频段介绍,04,思考一下,各个通信频段有什么优势?,SI4432无线模块介绍,无线通讯频段,SI4432无线模块,2,3,工作模式,工作频段:315/433/868/915 MHz,1.SI4432无线模块介绍,04,SI4432无线模块,无线抄表,门禁系统,水文气象监控,机器人控制,思考一下,SI4432无线模块可以用到哪些场景?,04,2.SI4432内部逻辑,SI4432一些内置的功能,比如天线的分集算法、唤醒定时器、低电压监测、温度传感器、常用的A/D转换、TX/RX先进先出缓冲寄存器(
4、FIFOs)、上电复位(POR)和通用I/O口(GPIOs)。,SI4432无线模块,04,3.SI4432线片引脚,Si4432外围电路有一个MCU、一个晶体和一些被动元件。系统如图所示。芯片集成了电压调节器,工作电压从1.8V3.6V,只有四针SPI线与MCU连接。三个配置通用I/O,可用于调整的需要的系统。,SI4432无线模块,SI4432无线模块介绍,无线通讯频段,SI4432无线模块,2,3,工作模式,04,工作模式介绍,SI4432无线模块操作,SI4432无线收发分析,2,3,04,知识储备,SI4432无线模块介绍,1,SI4432无线模块操作,数据传输方式,寄存器操作,2,
5、3,状态机,SI4432无线模块操作,数据传输方式,寄存器操作,2,3,状态机,读写标志位(1bit),寄存器地址(7bit),待写数据(8bit),写寄存器2字节结构命令格式,Si4432共有128个寄存器(0一127),它们控制芯片的工作和记录芯片的状态。可通过SPI对它们进行访问,读写标志位(1bit),寄存器地址(7bit),待写数据(8bit任意数据),读寄存器2字节结构命令格式,每次可以读写1多(burst)个字节,它们是由时钟信号决定的,在读写一个字节后,如果时钟继续有效,那么,地址将会自动加1,接下来的操作将是对下一个寄存器的读写。,系统使能数据白化,曼彻斯特Mancheste
6、r)编码,采用GFSK调制,CRC校验,提高传输信号的质量,增大发射距离,保证数据的可靠传输方法:,注意事项:只能在空闲状态下对寄存器进行初始化,SI4432无线模块操作,数据传输方式,寄存器操作,2,3,状态机,除了关闭状态外,其余状态都可以通过SPI接El进行设置和读取。,可通过寄存器07h实现状态的切换,这种切换表现在两个方面:1)当设置其中的某一位时,状态立即发生切换;2)在完成收发任务后,决定返回到idle状态的哪一个子状态(在本系统中为休眠状态,即设置enwt=1)。可通过02h寄存器获取当前的状态。,SI4432无线模块操作,SI4432无线收发分析,2,3,04,知识储备,SI
7、4432无线模块介绍,1,无线收发系统结构分析,SPI控制SI4432收发逻辑分析,2,SI4432无线收发分析,图中、是本次任务的重点,需要涉及开发相关代码图中主要是数据串口实现,同学们基本都会用,1,系统主要有STM32F103VET6单片机(MCU)和无线射频收发芯片Si4432组成,2,无线收发模块有RF无线射频芯片和一个单极433MHz天线组成,两部分通过SPI接口进行互联通信。,无线收发系统结构,发送端和接收端主要在433MHz频段进行通信,这个频段传输距离比较远,可以绕开一定的的障碍物,比较适合一些距离比较远的数据传输量小的项目进行应用,无线收发系统结构分析,SPI控制SI443
8、2收发逻辑分析,2,SI4432无线收发分析,04,1.无线发送流程,SPI控制SI4432收发逻辑分析,04,1.无线发送流程,SPI控制SI4432收发逻辑分析,04,2.无线接收流程,SPI控制SI4432收发逻辑分析,04,2.无线接收流程,SPI控制SI4432收发逻辑分析,任务二 实现基于433MHz无线收发,任务实施,05,思考一下,你认为设备应该用到哪些设备?,设备资源:,烧写程序,2,05,任务实施,添加代码,1,添加代码,进行STM32CubeMX配置,添加代码包,2,3,添加代码程序,4,编译代码,STM32CubeMX配置SPI,(1)打开STM32CubeMX,选择S
9、TM32F103VET6芯片,并进行配置(2)点击System Core-RCC,High Speed Clock(HSE)和Low Speed Clock(LSE)都选择Crystal/Ceramic Resonator。(3)点击SYS,Debug选择Serial Wire,05,STM32CubeMX配置SPI,Baud Rate选择9600 Bit/s,Data Direction选择Receive and Transmit,然后点击NVIC Settings,勾选USART1 global interrupt,使能串口中断。,05,(4)点击Connectivity-USART1,配
10、置串口一,MODE选择Asynchronous,,STM32CubeMX配置SPI,MODE选择Full-Duplex Master,Paramater Setting的Prescaler选择256,Clock Polarity选择High,Clock Phase选择2Edge,05,(5)点击Connectivity-SPI2,配置SPI2,STM32CubeMX配置SPI,(6)点击PA2设置为输入GPIO_Input,点击PA3设置为输出GPIO_Output,点击PB12设置为输出GPIO_Output,并将PA2设置为上拉输入Pull-up,User Laber设置为SI4432_I
11、RQ,将PA3设置为默认低电平Low,User Laber设置为SI4432_SDN,将PB12设置为默认高电平High,User Laber设置为SI4432_NSEL,05,STM32CubeMX配置SPI,(7)点击Clock Configuration进行如下图的时钟配置,05,STM32CubeMX配置SPI,(8)点击Project Manager,点击Project设置文件名和保存的位置,Toolchain/IDE选择MDK_ARM。,05,STM32CubeMX配置SPI,(9)点击Code Generator,如下图进行勾选设置。,(10)最后点击右上角的GENERATE C
12、ODE生成初始化代码。,05,添加代码,进行STM32CubeMX配置,添加代码包,2,3,添加代码程序,4,编译代码,添加代码包,05,检查是否可用,添加代码包,(2)添加代码包在项目工程文件夹的MDK-ARM文件夹下新建一个HARDWORK文件夹,并将SI4432和SPI两文件夹复制进去,05,添加代码包,双击HARDWORK,选择SI4432、SPI文件夹添加SI4432.c、SPI.c文件,05,右键项目文件名,选择Add Group添加组,将NEW Group改为HARDWORK,,添加代码包,添加的文件直接编译会报错,需要包含文件夹的路径,如下图就是添加Trace文件的路径,使程序
13、可以找到.h文件按照上面方法继续将SI4432和SPI路径添加进去。,05,添加代码包,添加完文件后直接编译也会报错,这时我们双击SI4432.c将里面的“UART_HandleTypeDef huart1;”和“DMA_HandleTypeDef hdma_usart1_tx;”注释掉,然后我们双击spi.c将里面的“SPI_HandleTypeDef hspi2;”注释掉,05,添加代码,进行STM32CubeMX配置,添加代码包,2,3,添加代码程序,4,编译代码,完善代码,(1)添加头文件在MDK-ARM 中 双击打开 Application/User 下的main.c文件,如下图所示
14、,在添加头文件代码处添加spi.h和si4432.h的头文件,05,完善代码,(2)添加变量在/*USER CODE BEGIN PD*/和/*USER CODE END PD*/之间添加宏定义,05,完善代码,在/*USER CODE BEGIN 2*/和/*USER CODE END 2*/之间添加代码,05,完善代码,在/*USER CODE BEGIN WHILE*/和/*USER CODE END 3*/之间添加函数,实现数据收发功能,05,添加代码,进行STM32CubeMX配置,添加代码包,2,3,添加代码程序,4,编译代码,编译代码,代码添加完成后,单击“重新编译”按钮 完成编
15、译,确保编译准确无错误。,05,烧写程序,2,05,任务实施,添加代码,1,烧写程序,硬件环境搭建,固件下载,2,3,结果验证,硬件环境搭建,在断电的情况下把STM32F103VET6模块的引脚按下图与无线模块Si4432进行连线。把M3核心模块和功能扩展模块正确放置到 NEWLab实训平台,05,烧写程序,硬件环境搭建,固件下载,2,3,结果验证,固件下载,05,(1)烧写前的硬件准备,STEP 03,STEP 01,STEP 02,确保NEWLab接线正常,并将旋钮旋到通讯模式,将M3核心模块JP1从NC拨到Boot端,NEWLab平台上电,并按击下M3核心模块上的复位键,固件下载,打开S
16、TMFlashLoader Demo软件,将编译好的.hex文件进行烧录等待下载完毕,将M3模块的JP1从BOOT切换到NC按下复位键,05,(3)烧写后启动M3模块,(2)烧写,固件下载,(4)接收从机固件下载 接收从机固件下载之前,我们需要将程序中SI4432宏定义的改为0,这样我们的程序就可以变成一个接收程序,然后编译好烧录到第二组开发板里即可。,05,烧写程序,硬件环境搭建,固件下载,2,3,结果验证,结果验证,将接收端通过串口与调试助手连接,显示出收到的数据,接收端数据,05,打开串口调试工具,单片机上电,选择连接的串口,打开串口,结果验证,发送端数据,修改si4432.c文件里的“char SI4432_TxBUFF32=myisdata;”,就可以进行发送数据的修改。,05,任务二 实现基于433MHz无线收发,1、请参照评价标准完成自评和对其他小组的互评。2、各组请代表分析本组任务实施经验。,任务二 实现基于433MHz无线收发,任务小结,07,任务二 实现基于433MHz无线收发,任务拓展,08,修改代码,实现下列功能:,1.修改si4432.c文件里的“char SI4432_TxBUFF32=myisdata;”,解题思路,提示,任务要求,谢谢大家学习,