实验教案汇总 《基于STM32的嵌入式系统原理与设计》Word格式文档下载.doc
- 文档编号:407024
- 上传时间:2023-04-28
- 格式:DOC
- 页数:36
- 大小:844KB
实验教案汇总 《基于STM32的嵌入式系统原理与设计》Word格式文档下载.doc
《实验教案汇总 《基于STM32的嵌入式系统原理与设计》Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《实验教案汇总 《基于STM32的嵌入式系统原理与设计》Word格式文档下载.doc(36页珍藏版)》请在冰点文库上搜索。
1.唤醒电路,高有效,不按时接220K电阻下拉。
2.复位电路,低有效。
带RC启动复位。
3.配置启动,用跳线选择BOOT1和BOOT0接高电平或低电平。
4.高速晶振电路,采用8M晶振,在STM32内部倍频为72M。
5.AD参考电路,采用LC滤波,可跳线选择直接接VCC或通过TL431稳压电路产生的参考电压。
6.后备电池。
可通过跳线选择直接接VCC或电池。
7.AD输入,可选择使用RC滤波,共8路。
8.低速晶振电路,选用32.768kHz晶振,为产生准确的串口波特率。
USB转串口电路
USB转串口电路可以方便没有串口的笔记本电脑用户通过USB接口下载代码到FLASH中,及进行RS232串行通信。
图2USB转串口接口电路
USB转串口芯片是CP2102,该芯片稳定性较好。
当其正常工作的时候,灯LED6亮。
该芯片DP/D+引脚连MINIUSB接口的脚3,DM/D-引脚连MINIUSB接口的脚2,为一对USB输入输出线。
TXD与RXD引脚接MCU的PA10(USART1_RX)和PA9(USART1_TX)。
I2C接口电路
本书选择的EEPROM是AT24C02是256字节的电可擦出PROM,通过I2C协议与STM32进行通信,连接十分简单。
EEPROM虽然容量只有256字节,但是读写比较方便,与MCU连线少,被广泛的使用在智能仪器、汽车电子、工业控制、家用电器等场合。
实例中使用AT24C02存储屏幕是否校准过及屏幕各个角的模拟值等。
图3I2C接口电路
A2、A1、A0为做级联时使用,这里只有1片24C02,接地即可。
WP为写保护,不保护的时候接地。
SCL为I2C时钟,SDA为I2C数据,因开漏输出,需外部接上拉电阻上拉。
要求
要求在掌握电路原理的基础上进行电路板的焊接,要求能够焊接贴片0602电阻电容,能够焊接SOIC贴片芯片。
在完成后可进行上电,下载代码运行测试验证电路板焊接的正确性。
三、实验重点及难点
重点:
焊接技术,贴片芯片焊接
难点:
SOIC贴片芯片焊接
四、实验学时安排
4个学时
五、实验操作注意事项
注意电源的供电安全,注意电烙铁的使用安全
《实验二流水灯和按键实验》教案
二、实验教学目的
掌握FSMC接口和编程,掌握RA8875原理和编程,通过RA8875控制液晶屏英文、字符、图形显示,掌握控制液晶背光亮度调节。
通过本实验可掌握基本的图形液晶屏控制和显示。
输入输出端口GPIO
GPIO是常规输入输出端口,STM32F103VE有PA、PB、PC、PD、PE共5个16位的GPIO。
STM32的GPIO都是可编程的,具有很多复用功能。
从图1.7.1可见,通过对输出控及肖特基触发器及各个开关的控制,可以选择使用GPIO功能或复用功能。
当听过编程,将输出控制设置为选择复用功能的时候,就从来自片上外设的复用功能输出端采集数据,反之采集输出数据寄存器上的数据。
在GPIO方式下也可以配置为很多种模式,这和51单片机是有明显的区别,功能性强了很多。
这些模式有:
输入浮空、输入上拉、输入下拉、模拟输入、开漏输入、推挽输出、推挽复用、开漏复用。
在默认的模式下为输入浮空。
每个I/O端口可以通过对GPIO寄存器写操作来编程成一种模式,GPIO寄存器包括端口配置低寄存器GPIOx_CRL、端口配置高寄存器GPIOx_CRH、端口输入寄存器GPIOx_IDR、端口输出寄存器GPIOx_ODR、端口位设置清除寄存器GPIOx_BSRR、端口为清除寄存器GPIOx_BRR、端口锁定寄存器GPIOx_LCKR。
所有x的范围为(A-E)。
80个GPIO分为5组,A-E就是分组号。
例如,GPIOB_CRL就是B组GPIO的端口配置低寄存器,GPIOC_CRL就是C组GPIO的端口配置低寄存器。
构建工程如图所示:
图1:
工程文件
固件库构建过程:
在D盘建立一个目录,在其下建立一个子目录firstpeoject作为工作目录。
然后,又在其下建立了一些子目录。
当然,使用的工具就是WINDOWS资源管理器。
这个目录可以放在任何一个盘或目录里,没有限制。
现在开始拷贝文件。
1)拷贝内核文件和驱动支持文件、启动文件
将固件库Libraries\CMSIS\CM3\CoreSupport目录下的两个文件core_cm3.c和core_cm3.h文件拷贝到刚刚创建的stm32lib\m3子目录中。
将固件库Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x目录下的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h也拷贝到stm32lib\m3子目录中。
将Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下的启动代码也拷贝到application子目录中。
启动文件有好几个,笔者的STM32硬件芯片是STM32F103VET6,是属于高密度的芯片,因此应该拷贝startup_stm32f10x_hd.s。
启动开发,启动文件startup_stm32f10x_hd.s是程序开始的地方。
2)接下来拷贝设备驱动程序。
将Libraries\STM32F10x_StdPeriph_Driver\inc目录下的所有文件拷贝到stm32lib\inc目录下。
将Libraries\STM32F10x_StdPeriph_Driver\src目录下的所有文件拷贝到stm32lib\src目录下。
3)拷贝外设中断函数文件和固件库配置文件
拷贝固件库的Project\STM32F10x_StdPeriph_Templat目录下的文件stm32f10x_it.h、stm32f10x_it.c和stm32f10x_conf.h文件到application子目录中。
目前为止,固件库的搬家工作就算做完了。
接下来要在MDK中去工作了。
过程和代码参考教材3.2(P88-115)
要求:
参考教材,编写代码下载到目标板,观察效果。
如未达到理想效果,检查和修改代码,再次编译下载直到成功。
使用JLINK在线调试,记录实验过程,完成实验报告。
掌握MDK开发环境,构建工程,编写代码,下载代码
构建和设置工程,编写代码
2个学时
注意电源的供电安全
《实验三串口发送和接收实验》教案
一、实验教学目的
掌握STM32基本串口编程,进一步学习中断处理。
STM32的同步异步收发器USART和传统的51单片机或PC即串行口UART稍有区别:
通用同步异步收发器(USART)提供了一种灵活的方法与使用异步串行数据格式的外部设备之间进行全双工数据交换。
USART利用分数波特率发生器提供宽范围的波特率选择。
另外,它还允许多处理器通信。
USART也可以使用DMA方式直接将接收的数据存储到内存或从内存中批量发送数据,也支持多种中断方式。
接口通过三个引脚与其他设备连接在一起。
接收数据输入(RX)和发送数据输出(TX)及地(GND)。
如果使用更复杂的功能,如硬件流控制的时候,需要更多的引脚。
RX:
接收数据串行输入。
TX:
发送数据输出。
串行异步通信USART库函数
串行通信库函数在"
stm32f10x_usart.h"
中声明,在"
stm32f10x_usart.c"
中实现。
外设库函数文件USART库函数如下表所示:
串行异步通信USART库函数一览
函数名
描述
USART_DeInit
将外设USARTx寄存器重设为缺省值
USART_Init
初始化外设USARTx寄存器
USART_StructInit
把USART_InitStruct中的每一个参数按缺省值填入
USART_Cmd
使能或者失能USART外设
USART_ITConfig
使能或者失能指定的USART中断
USART_DMACmd
使能或者失能指定USART的DMA请求
USART_SetAddress
设置USART节点的地址
USART_WakeUpConfig
选择USART的唤醒方式
USART_ReceiverWakeUpCmd
检查USART是否处于静默模式
USART_LINBreakDetectLengthConfig
设置USARTLIN中断检测长度
USART_LINCmd
使能或者失能USARTx的LIN模式
USART_SendData
通过外设USARTx发送单个数据
USART_ReceiveData
返回USARTx最近接收到的数据
USART_SendBreak
发送中断字
USART_SetGuardTime
设置指定的USART保护时间
USART_SetPrescaler
设置USART时钟预分频
USART_SmartCardCmd
使能或者失能指定USART的智能卡模式
USART_SmartCardNackCmd
使能或者失能NACK传输
USART_HalfDuplexCmd
使能或者失能USART半双工模式
USART_IrDAConfig
设置USARTIrDA模式
USART_IrDACmd
使能或者失能USARTIrDA模式
USART_GetFlagStatus
检查指定的USART标志位设置与否
USART_ClearFlag
清除USARTx的待处理标志位
USART_GetITStatus
检查指定的USART中断发生与否
USART_ClearITPendingBit
清除USARTx的中断待处理位
要求参考教材,编写代码下载到目标板,观察效果。
记录实验过程,完成实验报告。
串口配置和驱动,串口发送和接收编程
串口中断设置和处理
《实验四串口DMA双缓冲实验》教案
进一步掌握串口编程,进一步学习DMA编程。
学习使用双缓冲兵乓操作,理解互斥资源。
进一步学习使用DMA和中断,提高编程能力。
直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速的无需CPU干预的数据传输。
数据通过DMA快速地移动,例如从串口到内存,当在内存中收到一定数量的数据时才发出一个中断,CPU才放下手头的工作去处理,这就节省了CPU的资源来做其他操作。
STM32有两个DMA控制器,其中DMA1有7个通道,DMA2有5个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。
另外,还有一个仲裁器来协调各个DMA请求的优先权。
STM32在硬件上设计了这么多的DMA通道是煞费苦心的,用好DMA控制器,可以大大的提高系统的吞吐量。
在PC机上,将硬盘数据复制到内存,就采用DMA模式,把拷贝数据的任务交给DMA来执行,CPU就可以去做别的事情了。
在STM32下也是如此,在编程中不采用DMA模式,全靠CPU去辛苦劳作,是巨大的损失。
要使用好DMA控制器,首先要了解它。
DMA框图
STM32有一大堆的可以使用DMA与内存进行直接交互的外设,但是只有2个DMA控制器。
这就导致,当外设要进行DMA传输的时候,首先要获得批准。
当然,哪几个外设可以使用哪些通道,是预先就设计好了的,在使用哪个通道的问题上就不需要过多考虑,但是编程人员必须认真对待这个问题,否则DMA传输就用不起来。
DMA传输可以从内存到外设,也可以从外设到内存,另外,内存到内存的DMA传输也是允许的,这个很方便。
大部分的外设是APB外设,但是,也有两个AHB外设,以太网和USB可以参加,它们很需要高速的DMA传输!
DMA传输要申请,有申请就得成立一个总裁机构,于是,两个DMA控制器都设立了仲裁委员会。
获得了批准的设备就可以在DMA控制器的控制下,和内存进行数据交换,但是数据传输的方向在批准的时候就要填写进申请表,还有一些其他的参数也要仔细填写进去(如传输的数据量,是按字传输还是半字、字节传输等,传输完成后是否发中断等),批准后就严格按申请表的内容进行数据传输。
当然,和一般的协议一样,还有附加条款:
当主人CPU需要访问SRAM的时候,DMA请求会暂停CPU访问系统总线达若干个周期,总线仲裁器执行循环调度,以保证CPU至少可以得到一半的系统总线(存储器或外设)带宽。
另外,可编程的数据传输数目最大为65535。
DMA设置和编程,DMA中断设置,双缓冲设置
DMA设置和编程。
双缓冲设置
实验前检查液晶控制板和液晶屏FPC40接口的连接
《实验五I2C实验》教案
熟练掌握I2C编程,学会对EPC02的读写操作。
24C02是电可擦除PROM,即EEPROM,其容量是256X8bit,,即2Kbits。
24C02接口方式为两线I2C接口。
其总线时序如图:
图124C02总线时序
由图可见,24C02的读写时序完全采用I2C方式,因此,既然已经实现了I2C驱动函数,就可以调用这些函数来实现24C02的驱动。
寻址24C02,它的地址应该是什么呢?
图224C02地址格式
因为在STM32实验板上,将A2\A1\A0接地,那么A2,A1,A0三位都为0。
最低位LSB为读写操作位,读为高电平,写为低电平。
因此,写地址为0XA0,读地址为0XA1。
如果有多个24C02,那么应该将A2A1A0连接到不同的电平,让它们的地址不同,这样就可以分别访问。
在写操作的时候,首先给出启动条件,然后向24C02发送器件地址,被寻址的24C02会应答。
在接收应答成功后,再发送8位的字地址。
24C02接收到这个地址后,会产生应答,接收到这个应答后可以发送8位的数据。
在接收到8位的数据后EEPROM又会应答,这时必须给出停止条件来结束。
在进行读操作的时候,流程基本相同,但需要在发送了器件地址和字地址,接收到应答后,开始读之前,发送一个启动条件再发送一个写地址给器件。
I2C工作原理,I2C时序,I2C模拟
I2C模拟
《实验六SPIFLASH实验》教案
熟练掌握SPI编程,学会对的W25Q64读写操作。
SPIFLASH基本结构
以SPI接口的FLASH芯片W25Q64为例来讲解这一节。
W25Q64有32K个可编程的页(Page)组成,每个页有256个字节。
可以计算一下:
32K*256=8M字节。
因此W25Q64有8Mbyte(64Mbit)的可读写存储空间,地址从0x0到0x7FFFFF。
对于SPIFLASH来说,页是一次写入的最小单位,编程中,一次可以对256字节的数据块进行写操作。
16个页组成一个扇区(Sector),所以一个扇区就是4K,4096字节。
在擦除操作的时候,可以一次擦除1个扇区(4K块)、8个扇区(32KB块)、16个扇区(64KB块)或整个芯片!
16个扇区可以组成一个64KB块(BLOCK)。
总结一下,在SPIFLASH中,一个块包含1个或多个扇区,一个扇区又包含多个页,而页是编程的最小单位,但是擦除操作是以块为单位的。
当读者使用不同的器件的时候,要阅读这些器件的数据手册。
控制和状态寄存器
要对SPIFLASH进行擦除、编程、设置等操作,就要编程读写其控制和状态寄存器。
对于W25Q64而言,控制和状态寄存器有SR1和SR2,其中SR2仅有最低位有效。
表3W25Q64控制和状态寄存器
寄存器
位
名称
功能描述
SR2
S8
SRP1
保护方法,与WEL组合可以配置为5种保护方式
SR1
S7
SRP0
S6
SEC
决定是以4KB块还是以64KB的块来进行保护。
SEC默认值是0,以64KB的块来进行保护。
S5
TB
顶部/底部块保护TB控制BP是从顶部开始还是底部开始。
TB=0,从顶部开始,TB=1从底部开始。
S4
BP2
写这些位可以进行相应的写保护控制,读这些位可以知道当前块保护的状态。
可以保护整个芯片或者一部分,或不保护。
默认不保护
S3
BP1
S2
BP0
S1
WEL
WEL位当执行完写使能的时候置1。
当芯片被写禁止的时候清0。
也就是标志着芯片是否可写。
S0
BUSY
忙标志
当要向SPIFLASH的指定地址写数据的时候,首先要选中该芯片,然后透过SPI接口向控制和状态寄存器中写写使能指令,接着通过SPI接口接收或发送数据。
当执行一个操作后,可以通过BUSY的状态判断SPIFLASH是否完成了这个操作。
例如,擦除整个芯片是个非常费时的操作,可以间隔一段时间读取BUSY位的状态来判断是否擦除完成。
数据读写实现
W25Q64共有34个基本指令。
指令是以CS下降沿开始的(可以使用SPI接口的NSS:
从设备选择连接到CS)。
第一个传输的字节是指令码。
传输的数据在时钟的上升沿被锁存。
指令的长度是不定的,有单字节的,也有多字节的。
编程时,对于多字节的指令可以分次发送。
W25Q64的详细指令说明都可以通过阅读厂家的数据手册获得,这里以页编程指令为例进行解析。
更多的指令读者可自行参考数据手册,数据手册可以通过器件厂家的官网获得,在本书的光盘中也包含了数据手册。
页编程指令允许1到256字节写入存储器的某一页,这一页必须是被擦除过的(也就是只能写0,不能写1,擦除时是全写为1)。
在页编程指令之前,必须先写入写使能指令。
页编程指令是以CS拉低开始,然后在DI上传输指令代码02H,再接着传输24位的地址(W25Q64有8M字节,而8M=223,因此至少要23位的地址),接着是至少一个字节的数据。
在这一过程中,CS管脚必须一直保持低。
整个时序过程如图所示。
图页编程指令时序图
如果一次写一整页数据(256字节),最后的8位地址字节应该全为0,例如0x123400。
如果最后8位地址不为0,但是要写入的数据长度超过页剩下的长度,那么芯片会回到当前页的开始地址写。
如果写入的数据的长度超过256,那么先写入的部分字节会被覆盖。
SPI设置,SPI编程,W25Q64格式分析
W25Q64格式分析
《实验七TF卡编程实验》教案
巩固SPI编程,学会对的TF卡读写操作。
TF卡即MicroSD卡,其体积比SD卡更小,目前广泛应用在嵌入式领域,具有体积小、速度快、存储容量大的优点。
最典型的应用是手机,通过TF卡来扩展存储容量。
目前市面上的TF卡容量大都在8G以上的。
在第二章,设计了TF卡的接口,将TF卡插入板子上的TF卡插槽,即可对其进行编程操作。
TF卡可以采用SPI接口,本实验的内容是编写程序实现使用SPI接口对TF卡进行编程。
将卡的重要操作的流程列出如下:
1.卡的初始化流程:
1)初始化SPI,将SPI设置为低速模式。
2)发送至少74个周期的脉冲给TF卡。
因主机上电后,所有SD卡进入Idle状态。
至少74个时钟周期后才能开始总线传输。
3)设置CS为低,发送命令CMD0,直到得到0X01的响应信息,一直得不到则返回错误信息。
4)发送CMD8,获取电压信息,查看是否为2.7到3.3,如不是则错误,返回错误信息。
5)发送CMD55,然后发送ACMD41,进行初始化。
若超时了仍不成功则返回错误信息,否则返回0。
2.读卡流程
读单块流程为
1)发送CMD17,收到0x00表示成功
2)连续读直到读到开始字节0xFE
3)读512个字节
4)读两个CRC伪CRC字节(0xFF)
读多块方法:
1)发送CMD18读,收到0x00表示成功
2)连续读直到读到开始字节0xFE
3)读512字节
4)读两个CRC字节
5)如果还想读下一扇区,重复2-4
6)发送CMD12来停止读多块操作
3.写卡流程
写单块方法:
1)发送CMD24,收到0x00表示成功
2)发送时钟,直到收到0xFF
3).发送写单块开始字节0xFE
4).发送512个字节数据
5).发送2字节伪CRC0xFF
6)发送0XFF,如果读到XXX00101表示数据写入成功
写多块方法:
1)发送CMD25,收到0x00表示成功
2)发送时钟,直到收到0xFF
3)发送写多块开始字节0xFC
4)发送512字节数据
5)发送两个CRC0xFF
6)发送0xFF,读到XXX00101表示数据写入成功
7)判断是否读完所有的块,若未读完转到2)步骤
8)发送
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于STM32的嵌入式系统原理与设计 实验教案汇总 基于STM32的嵌入式系统原理与设计 实验 教案 汇总 基于 STM32 嵌入式 系统 原理 设计