版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要
在全球科技争先恐后发展的前提下,无人机成为时代发展下诞生的
一大科技产物。而无人机始终是要在天上飞的,地面的人要如何才能获
取到无人机的飞行的速度和高度呢?所以本文要介绍的就是无人机飞
行状态的显示终端。此终端是基于STM32单片机运行,并运用
NRF24L01模块作为通信设备,通过模块自带的收发模式,完成数据之
间的传输,同时通信模块的传输协议生产商已经设置好了,然后把接受
到的数据在TFT2.8寸LCD显示屏上显示出来,实现实时获取无人机的
飞行状态。经测验,此终端实时性、准确性都比较好。
关键词:无人机控制STM32103FRCT6TFTLCDNRF24L01串口
通信
Abstact
IntheGlobalScientificandtechnologicaldevelopmentofthepremise,
UAVhasbecometheeraofthebirthofamajorscientificandtechnological
products.Anddronesarealwaysgoingtoflyinthesky,howcantheground
toobtainthespeedandaltitudeofthedroneflight?Sothisarticleisto
introducetheUAVflightstatusdisplayterminal.Thisterminalisbasedon
Stm32single-chipoperation,andtheuseofNRF24L01moduleas
communicationequipment,throughthemodule'sowntransceivermode,to
completethetransmissionofdata,andcommunicationmoduletransmission
protocolmanufacturershavesetup,thereceiveddataisthendisplayedon
theTFT2.8-INCHLCDscreentoobtaintheflightstatusoftheUAVinreal
i
time.Thetestshowsthattheterminalhasgoodreal-timeperformanceand
accuracy.
Keywords:UavscontrolSTM32103FRCT6TFTLCDNRF24L01
serialcommunication
目录
第一章绪言3
LI选题目的与意义3
1.2研究现状3
第二章基于STM32的电路设计4
2.1STM32的单片机介绍4
2.1.1单片机的组成:5
2.1.2单片机的特点5
2.2子系统设计6
2.2.1显示系统设计6
2.2.2通信系统设计7
2.2.3按键的运用9
第三章显示终端10
3.1终端介绍10
3.1.1LCD工作原理10
3.1.2NRF24L01工作原理11
3.1.3硬件13
3.2彳牛16
3.2.1LCD程序设vf*16
3.2.2NRF24L01程序设计19
4.1I/O口接口阐述21
2
4.2串并行接口阐述22
4.3接口与单片机连接22
第五章总结与展望23
5.1选题工作总结23
5.2未来展望23
参考文献24
致谢
附录25
第一章绪言
1.1选题目的与意义
在21世纪中,人们逐渐将科技发展放在了首要位置,并通过努力使到科技水
平达到了一个新天地,因此,人们生活的质量也得到了大大的提高,也因为科技不
断地发展,发明了许多民用的高新科技产品,并逐渐地走进人们的日常生活中,为
人们带来了各种方便,无人机就是这些产品之一。自无人机诞生之后,不断地投入
到各种各样得到的行业之中,例如在影视行业、灾难救援、国防等等。只要是符合
无人机使用的条件,有要求的,都可以见到无人机的身影。而且因为无人机可以进
行无人远距离操控,在一些重大灾难搜索条件艰难的情况下,搜救员无法进入现场,
这时就可以利用无人机进行搜救任务和实时观测灾难情况并进行评估。但是,目前
的无人机遥控器基本上只有操控上下左右飞行和遥控器开关这些基本的功能,在现
在无人机普遍应用在民间各种各样的事务中,如果在执行特殊任务时需要了解到无
人机的飞行状态或者收集信息的时候,这样基础的操控界面明显是显得太过粗糙,
所以,如果我们能在这个遥控器上再加上无人机飞行状态的界面,时时刻刻地了解
到飞机的一个运行状态,在飞机接通电量时,操控器就会把无人机的各种飞行数据
和电量反馈到给我们,这样就可以随时基于无人机的飞行状态做出相应的措施,可
以很大幅度的保证无人机的安全性能还有飞行寿命,减少后期无人机的维修费用,
所以,研究无人机的飞行状态显示终端子系统就有所必要了。
1.2研究现状
现在市场上的无人机各种各样,但是飞行状态显示麴端暂时还是没有很好的利
3
从单片机的结构来看,属于微型处理港的一个分支,因为其将组成计算机
系统的CPU、储存器、总线路都搭载在一块小芯片上。而其功能也与计算相差
无几,所以也可以说单片机芯片就是一台电脑。
2.1.1单片机的组成:
单片机内部有着许许多多的总线,并将各个部件连接在一起,其中总线如
下:
(1)地址总线的作用可以说是最重要的,因为其担当着提供地址的功能,数据
在内部电路不同设备之间相互交换,地址总线为会根据情况提供相对应的地址,
CPU通过它们将地址输出到存储器或I/O接口;
(2)数据总线是数据传输功能需要的主要硬件,令到数据可以在CPU、储存器
和外设之间相互传输:
(3)控制总线担当着主要的控制功能,控制CPU的控制和应答信号线;
2.1.2单片机的特点
单片机的结构微小,功能齐全,而且还可以根据要求去改变单片机的形式,
采用的也是如今广泛应用的半导体技术,应用范围广,所以令其具备显著特点,
所以在很多的领域上都可以看到它的身影。
本次的显示终端设计经过多重考虑,最后因为系统的需要和简便性,选择
的是ALIENTEKMiniSTM32开发板。因为这款开发板不仅功能齐全,而且设计的
造型也比较符合论文的设计要求。开发板因为设计的造型比较小,内部线路虽然不
多也足以够开发的使用,而且线路已经连接好了,也方便研究开发。
ALIENTEKMiniSTM32体型比较小,长度10cm,宽度8cm。STM32F103RCT6
就是这个单片机的芯片,同时该芯片的容量是同类型单片机中最大的,芯片SARM,
48K64引脚,256KFALSHo板子上的IO口除了晶振外都在生产时引出来了,方便
应用和开发。
设计所需要的单户机硬件有:状态指示灯、2.4G无线通信接口、2.8寸LCD模
块接口、USB串口接口、复位按钮和功能按钮,还有电源开光。
单片机上的芯片为STM32F103RCT6,有着51个通用IO口,可以加入更多的外
设,带来更多的功能,该芯片性价比极高。
STM32F103RCT6板子上直接配有LCD模块的液晶模块接口,该排接口也可以
连接OLED模块,只穴过LCD模块要靠着排针的右边连接,OLED靠左边对插。
5
同时LCD的接口不仅可以插入2.8寸的模块,还可以插入其他尺寸的LCD模块,
提供更多的选择。而且,这个接口也可以插入电阻、电容触摸屏。
2.2子系统设计
STM32F103RCT6的内部电路图如图2.1所示
MCI
V、M■M,
,
*-n2*>2r»MliJIl-i*4I«r>(><
J-MIM>«1?PW/VM4<m/uw>04
f-HeowoMiNMH1IO
FWAX15J
、BMrwixi.*<i
rtWAXMl
H.VADCl
K>AXM1rMvntarxm.te5R
rcVAfKlFt>yriM»_rnMSJCMMMOJ
vmA
rciM
〃,队FAI•*
FAHA'A**aX/IXM<lM/TIMICM4
RAMtlfWIM
rAAAlMljLltl
rcwiMKC>MAXM»nI
gmrnnJO
JTAG/SWn
图2.1
图2.1勾画出STM32F103RCT6内部的电路图。
在STM32F103RCT6上,我们要用到的有两个接口:OLED和LCD共用接口、
NRF24L01模块接口。通过这两个接口,我们将实现模块连接单片机后的功能。在
功能的实现过程中,因为我们选择的是LCD显示模块,所以在连接STM32的时候,
在OLED和LCD共用接口要靠着接口右侧进行对插,这样LCD才能正常使用。.而
NRF24L01属于通信模块,引脚是连接串口的,STM32F103RCT6上配有一个SPI
(串口通信),所以NRF24L01无线模块直接与SPI口进行对插。
任何的设备终端想要实现功能,一个子系统是必不可缺的。系统担当着承上启
下的功能,既要保证模块的正常运行,又要完成模块与其他模块之间通过STM32
达到数据的相互转换,从而达到目的。而无人机飞行状态显示终端亳不例外,也需
要一个子系统。系统包括3个部分:显示系统、通信系统和按键的运用。
2.2.1显示系统设计
显示系统主要搭配TFTLCD2.8寸液晶显示屏,并且要进行模块的初始化。在
这个系统的设计中,要保证显示模块能够正常地显示出内容。一个模块想要运行其
6
功能,对模块进行初始化是必不可少。需要将该模块用来显示字符和数字,所以子
系统中的显示系统运行步骤如下:
(1)初始化LCD模块的10口。
LCD模块想要与与STM32进行数据交换,就必须要通过10口,但就算你直接插上
去,LCD还是不能交换数据,所以才需要对相连接IO口进行初始化。这样的IO口
才能传输数据。而且要根据LCD的实际连接情况,以及电路完成。
(2)初始化TFTLCD模块。
在初始化的过程中,不用加入硬复位LCD,因为在STM32F103RCT6上有一个硬复
位键,按键的操作功能是完成复位。通过上面的步骤完成后,LCD初始化序列就可
以进行了,主端需要不断地向LCD写入设置值。通过了初始化的步骤,LCD才可
以成功驱动。
(3)建立显示函数
在这个步骤中,首先要通过函数去完成显示一个点的步骤,然后操作函数建立
坐标,根据不同的要求,找出GRAM的指令,并且写出来,同时在指令下去写入
颜色数据,这样就在屏幕上显示出一个带有颜色的点。单单一个点是满足不了设计
的需求,想要在屏幕上显示出画面和字符,就要以点画线,不断地重复画一个点的
步骤,勾画出画面和字符,在液晶屏上显示,这样才可以完成设计的初衷。具体流
程可以参照图2来完成。
通过上面的步骤,令到LCD模块能够正常驱动并使用,将液晶屏上一个点的
设置改为以线组成的字符和数字,从而显示出来,达到了设计的初衷。作为一个显
示终端的设计,显示部分显得尤具重要,无论是从功能还是应用上,系统设计都达
到了要求。上文也阐述了该系统设计的几个重要步骤。
2.2.2通信系统设计
显示系统的设计已经完成了终端的显示部分,但是需要显示的内容要怎么获取
呢?这个时候,就需要一个通信系统。作为无人机飞行状态显示终端,我们要检测
的是无人机的飞行状态,就要找到无人机搭载的无线通信模块,然后用相对应的模
块加装在单片机上作通信,而无人机使用的是NRF24L01,因此木终端设计要使用
NRF24L01o
现如今,无人机为了更好的控制飞行,在飞控系统硬件上都会加入姿态解算模
块(MPU6050),该模块的功能是负责把模块上的各传感器监测的数据通过模块的
芯片解算出来,飞行姿态的数据会打包成一个数据包,并发射出去,这时,我们的
终端通过普通按键(KEYO、KEY1)将NRF24L01设置成接收模式,从而接收无人
机发出的数据包,并且通过调用函数将其在显示屏显示出来,达到终端功能实现的
7
要求。本显示终端通信系统的设计步骤主要分为两个部分:初始化、模块工作模式
设置为接收模式。以下就是通信系统设计的几个步骤:
(1)设置STM32与nrf24101模块连接的10口<>
这一步,需要我们根据连接情况确定模块的10口,因为nrf24101是通信模块,
所以模块上面的引脚是直接与STM32的SPI串口连接,因此需要对单片机的SPI
口进行模拟和初始化,以便驱动模块。
(2)初始化nrf2401模块
在nrf24101模块中,主要运用到的是4种模式中的收发模式。而收发模式主要
包括Tx(发射)模式和Rx(接受)模式。以下就是对两种模式初始化的过程:
Tx模式初始化过程
(a)写进Tx节点的地址TX_ADDR;
(b)写进IRx节点的地址(主要是为了使能AutoAck)RX_ADDR_P0;
(c)使能AUTOACKEN_AA;
(d)使能PIPE0EN_RXADDR;
(e)通过SETUP_RETR设定自动重发次数;
(f)选择通信频率RF_CH;
(g)通过RF_SETUP设定发射参数(低噪放大器增益、发射功率、无线速率);
(h)通过Rx_Pw_P0选择通道0有效数据宽度;
(i)设定24L01的基本参数以及用CONFIG设定不同的工作模式。
Rx模式初始化过程
初始化步骤24L01相关寄存器
(a)写Rx节点的地址RX_ADDR_PO;
(b)使能AUTOACKEN_AA;
(c)使能PIPE0EN.RXADDR;
(d)选择通信频率RF_CH;
(e)通过Rx_Pw_PO先择通道0有效数据宽度:
(f)通过RF_SETUP设定发射参数(低噪放大器增益、发射功率、无线速率);
(g)设定24L01的基本参数以及通过CONFIG切换工作模式。
(3)通过调用函数将模块接收的数据在LCD上显示
在这个部分,我们要实现的是把接收的数据包转化为字符或者文字在LCD上显示,
要达到这个要求,我们将调用以下的函数:
NRF24L0l_RX_Mode();
while(l)
8
if(NRF24L01_RxPacket(tmp_buf)==O)
tmp_bufl32J=0;//
LCD_ShowString(0,190,239,32,16,tmp_buf);
)elsedelay_us(100);
t++;
if(t==i()()()())//
I
t=0;
LED0=!LED0;
}
1;
通过上述函数,NRF24L01模块一旦接收到信息,就直接调用LCD_ShowString
函数在显示屏上显示出来,lnip_buff就是接收到的信息,从而达到了系统设”的求。
2.2.3按键的运用
在子系统的设计中,我们要通过STM32F1O3RCT6板子上自带的几个按键进行
终端功能的选择和复位:
复位按键
单片机出厂时就自带复位按键,通过连接将LCD的RES与单片机共用RESET,
进行液晶屏复位的操作。
两个普通按键
KEY0和KEY1是STM32的两个普通按键,通过这两个按键,可以选择系统进
入不同的模式。
通过上文阐述的子系统设计,我们可以得出子系统的设计步骤如图2.2所示
9
初始化
/MRF24L0l_Check(
是潜:查NRF24L01是
通过KEYO技检查模块,
铤设置模块迸RESER按键
入RX_Mode复位
调用LCDShowSrrmg再次检查XRF24L01
显TF;tmppuff是否在位
图2.2
图2.2主要讲述了系统的初始化步骤,检测NRF24L02模块是否存在,然后根
据KEYO、KEY1控制模式的选择,实现系统的功能。
第三章显示终端
终端是指通过外设输入数据并将数据处理后输出结果或者功能的设备。而本终
端作为显示终端,不仅终端要处理程序和数据,还需要将处理结果通过液晶屏显示
出来。要达到以上的要求,终端必须要有显示设备和通信设备。本毕业设计就是应
用Mini版STM32单片机作为板子,TFTLCD和2.4G无线通信模块实现显示板块
和通信板块。
3.1终端介绍
3.1.1LCD工作原理
TFTLCD模块的使用流程如图3.1所示
10
硬复位
LCD_RST=Oi
delay_ms(l00);
LCD_RST=1;
初始化序列
写GRAM指设置坐标读GRAM指
写入颜色数据读出颜色数据
LCD导、单片机处
图3.1
图3.1已经设置了LCD模块显示的内部运行过程。其中不需要多次硬复位和初
始化LCD序列,一次就可以令LCD进入等待指令的状态。到了设置坐标,左边的
步骤是一个带有颜色的点的设置步骤,而不是显示出字符或者画面。想要显示字符
和画面,就重复这个步躲,然后就可以在LCD上显示内容了,同时也可以看到颜
色。不过在这个步骤之前,需要的读GRAM指令,读取颜色数据。图中的只不过
是基本操作,有了这些操作,LCD都可以显示内容了。
3.1.2NRF24L01工作原理
NRF24L01的工作模式如表1:
收发模式
配置模式
空闲模式
关机模式
PWR_UP、CE、TX_EN和CS三个引脚决定决定了2.4G模块的工作模式。具体决
定模式如表3.1所示
表3.1
工作模式PWRUPCECS
11
收发模式110
配置模式101
空闲模式100
关机模式0XX
表3.1写出了各引脚决定不同的模式。
EnhancedShockBurstTM收发模式
在这种模式下,片内的先入先出堆栈区是个承载区域,有着中转作用,然后
数据会慢速地从微软器接收,但是发射却不同,会以1Mbps的速度向外发射,这样
的设置模式,可以更好地减少供能。作为一个通信模块,在与外部设备进行信息交
流的情况下,要保证传输过程能够不受外界信号或者物质的影响,提高模块的稳定
性。那么要怎么做呢?首先要对片内进行设置,使其可以解析与射频协议相关的所
有高速信号,这样就可以节省电量,增强续航能力,然后低速的微处理器也可以进
行高速射频发射和数据在空中停留的时间短。
EnhancedShockBurstTM技术通过低速输入,高速发射这种方式,电路所需的
电压随之减少,也减小了整个系统的平均工作电流。
在这种模式下,NRF24L01具有自动功能,可以自动对字头和CRC校验码收
发进行移除和加入的操作。
EnhancedShockBurstTM发射流程
(a)NRF24L01需要按时序地接收接收机的地址和要发送的数据;
(b)配置CONFIG寄存器,使之进入发送模式;
(c)微控制器把CE置高(至少10us),使NRF24L01进行EnhancedShockBurstTM
发射;
N24L01的EnhancedShockBurstTM发射
(1)给射频前端供电;
(2)打包射频数据(加字头、CRC校验码);
(3)高速发射数据包;
(4)发射完成,NRF24L01进入空闲状态。
EnhancedShockBurstTM接收流程
(a)配置本机地址和要接收的数据包大小;
(b)要将CE置高,通过配置CONFIG寄存器,使之进入接收模式;
(c)130us后,NRF24L01进入监视状态,等待数据包的到来;
(e)当接收到正确的数据包(正确的地址和CRC校验码),NRF2401自动把字头、
地址和CRC校验位移去;
(f)NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器
12
中断)通知微控制器;
(g)微控制器把数据从NcwMsg_RF2401读出;
(h)将接受的所有数据识别完成后,对STATUS寄存器进行清除操作。NRF2401
可以进入四种主要的模式之一。
配置模式
在配置模式,30字节的配送字被送到nrf2401,通过CS、CLK1和DATA三个弓|脚
完成。
空闲模式
在这种模式下,由于模块在等待指令的的到来,所以处于等待状态,需要的能源会
比工作状态下要小,同时处于待机状态,当指令下来了,芯片可以随即做出反应。
关机模式
在关机模式下,模块处于静止状态,但是也不会断电,同时,保留模块输入的配置
字的内容。
3.1.3硬件
TFTLCD模块
TFTLCD模块虽然目前只是一种中低端的液晶显示屏,但是也应用于各种单片
机的研究开发,早期TFTLCD更是应用在笔记本计算机.匕虽然后来随着更新换代
被淘汰了,但是在很多MP3、MP4上面也可以看到它的身影。
在本显示终端设计中,使用的是2.8寸TFTLCD模块。
通过出厂的设置,STM32的复位脚线路直接与控制RST信号的IO口连接,当
LCD对插好后,复位键直接可以控制LCD复位,就不要再设置一个IO口来完成这
个功能。同时,LCD的背光控制线需要设置一个10口来完成操作。所以,要令到
LCD整行运行,需要设置21个10口。LCD模块的原理图如图3.2所示
13
VCC3.3VCC33
:(D•:LCDRS
VCCVCC
LCDC0i<」)<、「
VCCVCC
:<:>:'、VCI1
LCDWR
GNDGND
:(D下•【)□CjlkONDLCDRD
GNDGND
DBIDB1
DB,”LEDKJ20LEDK4
LEDK4LEDK4
DB319LEDK319LfcDKJ
LEDK3LEDK3
DBJ18,EDK24LEDK二
LEDK2LEDK2
DB17LEDKIDK1
《LEDKl一—LEDK1「【」
DB616LEDA3516LEDA
LEDALEDA
:“广OB"
15Y-37SY-
Y-
:>B]X-23>X-
DB10X-DB10
DBll24
DB11Y+DB11
DBI二12X*25
DB12X*DB12
DB1S26
DBI3>7DBI3
DBUDB!4
DB”DBK
DB!62129
DBI6LC'dDDBI6
DBTINKm\CC3歹R^_产DA
"DBPDBP1
尔BL'T>DR1—|)中
VCC3.31rosTFT24,
IFHK1-
LEDK2呼
IFHK3RA-fief
LEDK4
BLCTR
SW1:816BITINTERFACESEL(IFPOSSIABLE)
S\V2BACKLIGHT\OLTAGESEL
图3.2
2.4G无线通信模块
在显示终端设计中,选择的无线通信模快是2.4G无线通信模块。该模块的特
点是它的工作频段是一个服务于全球的频段,在很多领域中都能够应用,并找到相
对应的频率,应用范围很广。组成2.4G无限通信模块的硬件有:频率发生器、功
率放大器、晶体振荡器、SchockBursl模式控制器、调制器、解调器。而且,频道选
择和协议可以通过SPI进行修改,令到信息传输的设置可以符合设计的要求,同时
也可以修改调整调制器、解调器。关于通信协议,NRF24L01的生产公司NORDIC
已经在产品出产时就集成了自家的协议,所以后面也不用设置了。NRF24L01拥有
的是可以同时对6个信道通信的优势,不单单是点对点。通信速度更可以达到
2Mpbs,带来更快的传输速度。
NRF24L01无线模块的特点:
(1)应用于服务于全球的2.4GISM频段,不需要许可证就可以用了。
(2)收发速率快,最高可以到2Mbps。
(3)拥有125个可选的频道,应用范围广,可随时调频。
(4)内置CRC检错和点对多点的通信地址控制。
(5)工作电压仅为L9-3.6v。
(6)可设置自动应答,保证数据能够自动收发。
该模块的外形和引脚图如图3.3所示
14
1
51GND
・2uCC
03E
1c
04cS
4N
85sCK
6nO
(S
m7NI
m
)8IRS
—29.01056(mm)一(Q
图3.3
模块VCC脚的电压范围为1.9~3.6V,所以在设置过程中不要超过3.6V,不
然模块可能直接被烧坏,本设计中设置的电压为3.3v,既保证了模块能够正常运行,
又不会被烧坏。
如果没有通信模块的接口,可以根据实际情况,通过用普通的10口去模拟SPI,
也一样能进行通信,用串口的也可以。
NRF24L01模块属于外部模块,单片搭载了SPI,所以直接使用SPI接口。
「CSN
TXRFO»
-SCK
VMISO
EnhancedSrccttBurstvMOSI
oIRQ
2
(CE
3一
RXFFOȴ
RadioCcrtni
0
s崽
s0
>>一
图3.4
如图3.4所示,勾画出了NRF24L01的系统和控制线结构。
CSN:片选线,CSN为低电平芯片工作。
SCK:控制的时钟线(SPI时钟)。
MISO:控制数据线
MOSI:控制数据线
15
IRQ:中断信号。模块的通信功能主要通过IRQ与单片机连接。
CE:芯片的模式控制线。在CSN为低的情况下,CE协同NRF24L01的
CONFIG寄
存器共同决定NRF24L01的状态。
3.2软件编写
3.2.1LCD程序设计
LCD软件设计需要在工程中添加Icd.c文件和对应的头文件Icd.ho
下面介绍一下Icd.h里面的一个重要结构体:
//LCD重要参数集
typedefstruct
(
ul6width;//LCD宽度
u16height;//LCD高度
ul6id;//LCDID
u8dir;〃横屏还是竖屏控制:0,竖屏;1,横屏。
ul6wramcmd;〃开始写gram指令
1116setxcmd;〃设置x坐标指令
ul6setycmd;//设置y坐标指令
}_lcd_dev;
//LCD参数
extern_lcd_devIcddev;
通过上面的函数可以得到LCD的尺寸大小和LCD的ID并保存下来,并根据
读取到的LCDID选择对应的驱动函数驱动LCD,同时,也可以将LCD设置为横
屏或者时竖屏。
下面的函数是对LCD模块各种初始化:
voidLCDJnit(void)
(
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|
RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
〃使能PORTB,C时钟以及AFIO时钟
16
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
GPIOJnitStructure.GPIO_Pin=GPIO_Pin_1()|GPI0_Pin_9|
GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6;〃输出
GPIO_InitStructure.GPlO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIOJnit(GPIOC,&GPIOJnitStructure);//GPIOC
GPIO_SctBits(GPIOC,GPIO_Pin_l()|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_
6);
GPIOJnitStructure.GPIO_Pin=GPIO_Pin_All;〃输出
GPIO_Init(GPIOB,&GPIO_InitStructure);//GPIOB
GPIO_SetBits(GPIOB,GPIO_Pin_All);delay_ms(50);//delay5()ms
LCD_WritcReg(()x()()OO,0x0001);//
delay_ms(50);//delay50ms
Icddev.id=LCD_ReadReg(0x0000);
if(Icddev.id<0XFF||lcddev.id==0XFFFF||lcddev.id==0X9300)
{
〃尝试9341ID的读取
LCD_WR_REG(0XD3);
LCD_RD_DATA();
//dummyread
LCD_RD_DATA();
〃读到0X00
lcddev.id=LCD_RD_DATA();
lcddev.id«=8;
lcddev.id|=LCD_RD_DATA();
if(lcddev.id!=0X9341)
(
LCD_WR_REG(0XBF);
LCD_RD_DATA();
//dummyread
LCD_RD_DATA();〃读回0X01
LCD_RD_DATA();
〃读回OXDO
Icddev.id=LCD_RD_DATA。;//这里读回0X68
17
lcddev.id«=8;
Icddev.idkLCD_RD_DATA();〃这里读回0X04
if(lcddev.id!=0X6804)
LCD_WR_REG(0XD4);
LCD_RD_DATA();
//dummyread
LCD_RD_DATA();
〃读回0X01
lcddev.id=LCD_RD_DATA();
〃读回0X53
lcddev.id«=8;
lcddev.id|=LCD_RD_DATA();
〃这里读回()X1()
if(Icddev.id!=0X5310)
{
LCD_WR_REG(0XDA00);
LCD_RD_DATA();
〃读回0X00
LCD_WR_REG(OXDB(X));
Icddev.id=LCD_RD_DATA();〃读H0X80
lcddev.id«=8;
LCD_WR_REG(0XDC00);
lcddev.id|=LCD_RD_DATA();〃读回0X00
if(lcddev.id==()x8()()())lcddev.id=()x551();
if(Icddev.id!=0X5510)
{
LCD_WR_REG(OXA1);
lcddev.id=LCD_RD_DATA();
lcddev.id=LCD_RD_DATA();〃读回0X57
lcddev.id«=8;
Icddev.idl二LCD_RD_DATA();〃读回0X61
if(lcddev.id==0X5761)lcddev.id=0X1963;
)
18
)
)
)
)
printf("LCDID:%x\r\n",lcddev.id);
if(lcddev.id==0X9341)
}elseif(Icddev.id=OxXXXX)
{
)
LCD_Display_Dir(O);
LCD_LED=1;〃点亮背光
LCD_Clear(WHITE);
)
上面介绍了10的初始化,完成后再去读取LCD的驱动型号,选择该型号的驱
动代码,进行初始化。函数涵盖了十多种驱动代码,支持不同的LCD。
3.2.2NRF24L01程序设计
对24L01的程序编写的步骤如下:
(1)置CSN为低,陵能芯片,配置芯片各个参数。
在PowerDown状态中完成配置参数。
(2)如果是Tx模式,填充TxFIFOo
(3)配置完成以后,通过CE与CONFIG中的PWR_UP与PRIM.RX参数确
定24L01要切换到的状态。
(4)IRQ引脚会在以下三种情况变低:
TxFIFO发完并且收到ACK(使能ACK情况下)
RxFIFO收到数据
达到最大重发次数
将IRQ接到外部中断输入引脚,通过中断程序进行处理。
当设置为RX_Mode模式,接收信息(tmp_buf=O),并调用LCD_ShowString显
示tmp_bufo
当编写完上述步骤的函数后,采用上位机对显示终端的程序进行测试。
19
图3.5
如图3.5所示,显示数据收发操作的主界而。打开程序主界面后,程序默认了
显示的方式为十六位进制,符合现在主流字符的进制位数。然后再输入图中下方需
要发送的内容(00010203等等数据),然后操作发送步骤,从图中RX中可以看
到己经接收到了数据,并且数据没有错误。完美地实现了数据在无线通信下能够相
互传输。
飞jss--一—―
基本缪额
设备索引:[0▼]SPI通道:[sraijcso▼CE引脚:P8▼:传输频道:2:|
发送功率:1-18曲T传输速窣:[2MbpM▼重发延时:500us▼]重发次数:[3次▼]
CRC宽度:,位二|
用311妥灸乂
地址宽度:13-11/]动态湍点大小
字节嗽序:BYTE4BITE3BYTE2BYTEIBYTEO
发送地址:£:|。匚:门;门,。71.
接收地址0:e?:e7:e74e7高仃哥端点大,.、:32EV使能接收V自动应言
接收地址1:^2|:=||c2(c2>c23c2端点大小:上使能接收£自动应答
地址2:|c2图||c2囹|c2回..c3用端点大小:攵EV使能搐收M自幼应答
接收地址3:c2|:c2|:-||c2_>:■c2:c4瑞点大G:叵使贫搔收工自动应答
接收地址4:|c2目|c2目|c2囹|c2图|c5端点大小:32E3U使能接收M自动应答
接收地址5:法|:鼻I:':^2:cT::c6端点大,.':国使能搔收LZ自动应答
I裕生II山田I勤浩
图3.7
20
如图3.7所示,显示了模拟模块的基本参数设置,设定了数据收发和应答地址。
Address(Hex)NamebitsValue(Hex)TypeDescription■
»00CONRG08ConfigurationRegister
>01EN.AA3FEnable'AutoAcIcnowledgment'Function
>02EN.RXADDREnabledRXAddresses
>03SETUP.AWSetupofAddressWidths
t>04SETUP.RETR13SetupofAutomaticRetransmission
>05RF.CH02RFChannel
/06RF.SETUP09RFSetupRegister
Reserved7:5000R/WOnly'000*ollowcd
PLL.LOCK40R/WForcePLLlocksignal
三
DataRate
RF_DR31R/W—Mbps
'I'-2Mbps
SetRFoutputpowerinTXmode
,00,--18dBm
RF_PWR2:1R/W•Or--12dBm
IO,---6dBm
'll'-OdBm
LNA.HCURR01R/WSetupLNAgain
>07STATUS0EStatusRegister(InparalleltotheSPIinstructionwor...
>08OBS£RVE_TX00Transmitobserveregister
>09CD00
0ARXADDRPO39:0R/WReceiveaddressdatapipe0.5Bytesmaximumlengt...
0BRX_ADDR_P139K)C2C2C2C2C2R/WReceiveaddressdatapipe1.5Bytesmaximumlengt...
OCRX_ADDR_P270
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 永州市双牌县2025届三下数学期中达标测试试题含答案
- AI在遗传学中的应用
- 2025-2026月考试卷八年级数学上学期期中模拟卷(苏科版)(解析版)
- DB51∕T 3361-2026 质子交换膜电解槽稳态运行寿命评估方法
- 2026年流动性风险防控报告
- 2026年幼儿园安全专项治理方案
- 2026年教学工作计划小班上学期
- 2026年安全管理自动化系统
- 2026年培养优生工作计划目标
- 国家开放大学行管本科《行政法与行政诉讼法》期末纸质考试多项选择题库2026珍藏版
- 2026年春季学期苏教版二年级科学下册期末检测试卷及答案(三套)
- 2026年全国《安全生产月》知识培训试题及答案
- 肺结核诊疗指南(2025版)
- 废铜废铝销售合同
- 2026年福建高中学业水平合格性考试化学试卷试题(含答案)
- 2026年巴里坤县招聘城市管理辅助工作人员(35人)笔试参考题库及答案详解
- 2026新教材语文 AI赋能24 一定要争气 教学课件
- 武汉大学后勤集团招聘若干人2026年笔试试题
- 2026年黑龙江省政府采购代理机构从业人员考试复习题及答案
- 2026年期末幼儿园卫生保健汇报
- 山东省2026年普通高校招生(春季)统一考试数学试题
评论
0/150
提交评论