版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息与电气工程学院电子技术系统设计三级项目(2014/2015学年第一学期) 题 目 : 基于stm32的si4432无限通讯系统设计 学生姓名 : 学 号: 指导教师 : 设计周数 : 设计成绩 : 一、课程设计目的及要求1、课设目的以stm32单片机为控制核心,利用si4432无线模块实现数据的双向传输,通过led对数据的正常通信状态进行指示。2、课设要求(1) 画出电路原理图;(2) 确定元器件及元件参数;(3) SCH文件生成与打印输出;(4) 搭建电路硬件,实现其功能;(5) 编写设计报告:写出设计全过程,附上有关资料和电路图,有总结体会二、项目设计正文 1、摘要随着现代社会信息与技
2、术的高速发展,普通的传感技术以无法满足人们对信息获取的需要,智能化无线传感器网络越来越受到众人的青睐和瞩目。短距离无线通信的应用已经越来越广泛,如何在保证通信质量和安全的前提下,降低系统能耗,减少硬件成本成为制约其发展的关键问题。本文设计了一种基于无线收发芯片Si4432和stm32单片机的无线射频收发系统。该系统由发送模块和接收模块组成。发送模块主要将要发送的数据经stm32处理后,通过 Si4432发送出去;在接收模块中,Si4432则将数据正确接收后通过程序设计,以让led灯实现一闪一闪的效果显示出来,从而实现短距离的无线通信。该系统可在休眠与唤醒两种模式下工作,降低了系统整体能耗,实现
3、了低功耗、小体积、高灵敏度的无线数据传输,可应用于工业控制、智能建筑、远程监控等多个领域,具有广阔的应用前景。3、控制芯片stm32f103系列STM32F103xx增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。 STM32F103xx增强型系列工作于-40
4、6;C至+105°C的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。 完整的STM32F103xx增强型系列产品包括从36脚至100脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。 这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合: 电机驱动和应用控制 医疗和手持设备 PC外设和GPS平台 工业应用:可编程控制器、变频器、打印机和扫描仪 警报系统,视频对讲,和暖气通风空调系统 3、无线收发芯片Si4432Si4432芯片是Silicon Labs公司推出的一款高集
5、成度、低功耗、多频段的EZRadioPRO系列无线收发芯片。其工作电压为1936 V,20引脚QFN封装(4 mm×4 mm),可工作在315、433、868、915 MHz四个频段;内部集成分集式天线、功率放大器、唤醒定时器、数字调制解调器、64字节的发送和接收数据FIFO,以及可配置的GPIO等。 Si4432在使用时所需的外部元件很少,1个30 MHz的晶振、几个电容和电感就可组成一个高可靠性的收发系统,设计简单,且成本低。Si4432的接收灵敏度达到-117 dB,可提供极佳的链路质量,在扩大传输范围的同时将功耗降至最低;最小滤波带宽达8 kHz,具有极佳的频道选择性;在24
6、0960 MHz频段内,不加功率放大器时的最大输出功率就可达+20dBm,设计良好时收发距离最远可达2 km。Si4432可适用于无线数据通信、无线遥控系统、小型无线网络、小型无线数据终端、无线抄表、门禁系统、无线遥感监测、水文气象监控、机器人控制、无线RS485、S232数据通信等诸多领域。3.1 si4432的主要引脚stm32可以通过内置增强型SPI对Si4432的内部寄存器进行读写操作,灵活配置各项参数。通过SPI接口完成对Si4432的初始化配置、读写数据、访问FIFO等操作。使用4线SPI,即SDI、SDO、SCKL和nSEL。 SDI用于从stm32到Si4432的串行数据传输;
7、SDO用于从Si4432到stm32的串行数据传输;SCK用于同步C8051F930和Si4432之间在SDI和SDO线上的串行数据传输;nSEL作为片选信号,只有片选信号为低电平时,对Si4432的操作才有效。Si4432的1316脚是标准的SPI接口,17脚(nIRQ)是中断状态输出引脚。当FIFO溢出、有有效的数据包发送或接收、CRC错误、检测到前导位和同步字、上电复位等情况发生,且相应的中断被使能时,17脚都会产生一个低电平以通知C8051F930有中断产生。20脚(SDN)决定了Si4432芯片的工作状态。当SDN接地(SDN=0)时,芯片处于常规工作模式;接高电平(SDN=1)时,
8、芯片处于掉电模式。掉电模式下寄存器中的内容会丢失,且不允许SPI访问,但芯片的电流损耗只有10 nA,功耗很低,因此适合要求极低功耗的应用。在连接到电源后,在SDN的下降沿上电复位,根据指令转换到其他工作模式。 为了达到较好的通信效果,Si4432的接收低噪声放大器匹配电路和发射功率放大器匹配电路的阻容参数,应严格按照数据手册提供的参数选型。相关引脚的说明参考si4432中文手册如下:SDI串行数据输入引脚0VDD v,数字输入,这引脚为4线串行数据总线提供串行数据流。SDO0-VDDv 数字输出提供内部控制寄存器串行读回功能。SCLK串行时钟输入引脚0VDD v,数字输入,这个引脚提供4线串
9、行数据总线串行数据时钟功能,数据在时钟的上升沿跳变送入芯片。nSEL穿行接口选择输入引脚:0- VDD v,数字输入,这个引脚为4线串行数据总线提供选择/使能功能 这个信号也用于表示突发读/写模式,nIRQ普通单片机中断状态输出引脚,当RFIC提出任何事件的中断则nIRQ将会变高:nIRQ=“1”,更多部分信息,请查看中断事件控制逻辑寄存器,控制器能够通过读相应的SPI确定中断状态寄存器,地址03h和04h.SDN关闭输入引脚 0-VDD V 数字输入,在所有模式除关闭模式外SDN=“0”,当SDN=“1”芯片将完全关闭并且寄存器的内容将丢失。3.2 si4432与stm32连接原理图3.4无
10、线发送程序设计思路无线发送程序流程如图3所示。完成stm32、SPI和Si4432的初始化后,配置寄存器写入相应的初始化RF控制字。接下来,通过配置 Si4432的寄存器3eh来设置包的长度,通过SPI连续写寄存器7fh,往TX FIFO里写入需要发送的数据。然后打开“发送完中断允许”标志,将其他中断都禁止。当有数据包发送完时,引脚nIRQ会被拉低以产生一个低电平从而通知 C8051F930数据包已发送完毕。完成中断使能后,使能发送功能,数据开始发送。等待nIRQ引脚因中断产生而使电平拉低,当nIRQ引脚变为低时读取中断状态并拉高nIRQ,否则继续等待。如果数据发送成功,指示灯会变亮。一次数据
11、发送成功后,进入下一次数据循环发送状态。 3.5无线接收程序设计思路无线接收程序流程如图4所示程序完成stm32、SPI接口和Si4432的初始化后,配置寄存器写入相应的初始化RF控制字。通过访问寄存器7fh从RX FIFO中读取接收到的数据。相应的控制字设置好之后,若引脚nIRQ变成低电平,则表示Si4432准备好接收数据。完成这些初始化配置后,通过寄存器 4bh读取包长度信息。4. 引脚配置及初始化程序 1、进行SPI的设置,将NSEL配置到PA3端口上,将SDN配置到PA2端口上,将NIRQ配置到PA1端口上,具体设置如下:#include "spi.h"/SPI初始
12、化函数void SPI1_Init(void)GPIO_InitTypeDef GPIO_InitStructure;SPI_InitTypeDef SPI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1,ENABLE );/GPIOA 时钟使能/SPI1 时钟使能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF
13、_PP; /GPIOA 5 6 7复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);/初始化GPIOA GPIO_SetBits(GPIOA,GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7); /GPIOA 5 6 7上拉/ LOW 2 有反应 测试多次注意接口按紧,GPIOA 5 6 7分别接至Si4432的clk、sdo、sdiSPI_InitStructure.SPI_Direction = SPI_Directio
14、n_2Lines_FullDuplex; /设置SPI/单向或者双向的数据模式:SPI设置为双线双向全双工 SPI_InitStructure.SPI_Mode = SPI_Mode_Master;/设置为主SPISPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;/SPI发送接收8位帧结构SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;/串行同步时钟的空闲状态为 低电平SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;/串行同步时钟的第1个跳变沿(上升或/下降)数据被采样S
15、PI_InitStructure.SPI_NSS = SPI_NSS_Soft;/NSS信号由硬件(NSS管脚)还是/软件(使用SSI位)管理:内部NSS信号有SSI位控制SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;/定义波特率预分频的值:波特率预分频值为256SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;/指定数据传输从MSB位还是/LSB位开始:数据传输从MSB位开始SPI_InitStructure.SPI_CRCPolynomial = 7;
16、/CRC值计算的多项式SPI_Init(SPI1, &SPI_InitStructure); /根据SPI_InitStruct中指定的参数初始化外设/SPIx寄存器SPI_Cmd(SPI1, ENABLE); /使能SPI外设SPI1_ReadWriteByte(0xff);/启动传输 /设置速度函数void SPI1_SetSpeed(u8 SPI_BaudRatePrescaler) assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler);SPI1->CR1&=0XFFC7;SPI1->CR1
17、|=SPI_BaudRatePrescaler;/设置SPI1速度 SPI_Cmd(SPI1,ENABLE); /SPIx 读写一个字节/TxData:要写入的字节/返回值:读取到的字节/函数说明:由于主机SPI通信时,在发送和接受时是同时进行的,即发送完了一个字/节的数据后,也应当接受到一个字节的数据,stm32先等待已发送的数据是否发送完,如/果没有发送完成,并且进入循环200次,则表示发送错误,返回收到的值0;如果发送完/成,stm32从SPI1总线发送TxData/stm32在等待接收的数据是否接收完成,如果没有接收完成,并且进入循环200次,/则表示接收错误,则返回0,如果接收完成了
18、,则返回STM32读取的最新的数据u8 SPI1_ReadWriteByte(u8 TxData)u8 retry=0; while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) = RESET) /检查指定/的SPI标志位设置与否:发送缓存空标志位retry+;if(retry>200)return 0; SPI_I2S_SendData(SPI1, TxData); /通过外设SPIx发送一个数据retry=0; while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) = RESET)
19、 /检查指/定的SPI标志位设置与否:接受缓存非空标志位retry+;if(retry>200)return 0; return SPI_I2S_ReceiveData(SPI1); /返回通过SPIx最近接收的数据 void GPIOSet(void) GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE );/A,C时钟使能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; / PA3 =
20、 NSEL 推挽 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_3);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; / PA2 =SI_SDN 推挽 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出
21、GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_ResetBits(GPIOA,GPIO_Pin_2);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; / PA1=SI_NIRQ 产生中断时为高 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; /上拉输入 /浮空: GPIO_Mode_IN_FLOATINGGPIO_InitStructure.GPIO_Speed =
22、 GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);SPI1_Init(); /初始化SPISPI1_SetSpeed(SPI_BaudRatePrescaler_256); 2、 进行LED的配置,将其配置到PB0端口上,具体设置如下:#include "led.h"#include "stm32f10x.h"/对IO口的配置void led_Init(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); /使能GPIOB时钟,配/置寄存器RCC_APB2ENR GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP ; /设置推挽输出 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 ; /对应PB0 GPIO_InitStructure.GPIO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三年级下册科学教学设计-第四单元第27课时《空气的热胀冷缩》 粤教版
- 餐饮技术比武考试题目与答案
- 积极促进幼儿的心理健康教学设计中职专业课-幼儿心理学-学前教育类-教育与体育大类
- 新教材高中语文 第6单元 观察与批判 13 林教头风雪山神庙 装在套子里的人教学设计 新人教版必修下册
- 监理案例考试题及答案
- 全国各行业数字化转型战略与实施路径研究真题
- 山西省运城市临猗县2027届数学三上期末经典试题含解析
- 一级古筝乐理练习题及答案分享
- 深圳驾驶员考试题及答案
- 民法总则考试题目及答案
- 2026 年秋季开学初中新生入学适应教育课件
- 广东梅州市2026年基层公共就业创业服务岗位招聘考试试卷-含答案解析
- GB/T 47770.1-2026家用快热式电热水器性能测试方法第1部分:总则
- 中心静脉导管相关血流感染(CLABSI)防控与集束化护理策略
- 2026年河北省中考语文真题试卷及答案
- 2026-2030中国来氟米特市场运行状况监测与发展态势展望研究报告
- 化工生产防火防爆安全培训
- 2026新教材语文 18威尼斯的小艇 教学课件
- 2026年事业单位工作人员处分暂行规定及处分程序试题
- 西安智测无忧行测题库及答案
- 国企内纪检监察工作制度
评论
0/150
提交评论