实验指导书 《基于STM32的嵌入式系统原理与设计》_第1页
实验指导书 《基于STM32的嵌入式系统原理与设计》_第2页
实验指导书 《基于STM32的嵌入式系统原理与设计》_第3页
实验指导书 《基于STM32的嵌入式系统原理与设计》_第4页
实验指导书 《基于STM32的嵌入式系统原理与设计》_第5页
已阅读5页,还剩30页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 实验指导书(实验)课程名称:基于stm32的嵌入式系统设计实验 实验一 电路板焊接与调试一实验简介完成实验板上部分元件的焊接,焊接完成后进行基本测试。二实验目的及原理掌握stm32f103实验板的基本原理,掌握焊接电路板的基本技能,掌握下载测试程序的基本方法。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计mcu和周边电路如图为mcu及其周边电路。8.低速晶振电路1.唤醒电路7.ad输入2.复位电路3.启动配置4.高速晶振电路5.ad参考电路6.后备电池6.备用电源5.参考电压图1 mcu及其周边电路1. 唤醒电路,高有效,不按时接220k电阻下拉。2. 复位电路,低有效。带rc启

2、动复位。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串行通信。图2 usb转串口接口电路usb转串口芯片是cp2102,该芯片稳定

3、性较好。当其正常工作的时候,灯led6亮。该芯片dp/d+引脚连mini usb接口的脚3,dm/d-引脚连mini usb接口的脚2,为一对usb输入输出线。txd与rxd引脚接mcu的pa10(usart1_rx)和pa9(usart1_tx)。 i2c接口电路本书选择的eeprom是at24c02是256字节的电可擦出prom,通过i2c协议与stm32进行通信,连接十分简单。 eeprom虽然容量只有256字节,但是读写比较方便,与mcu连线少,被广泛的使用在智能仪器、汽车电子、工业控制、家用电器等 场合。实例中使用at24c02存储屏幕是否校准过及屏幕各个角的模拟值等。图3 i2c接

4、口电路a2、a1、a0为做级联时使用,这里只有1片24c02,接地即可。wp为写保护,不保护的时候接地。scl为i2c时钟,sda为i2c数据,因开漏输出,需外部接上拉电阻上拉。三实验内容学习stm32f103实验板电路的原理图焊接电路板上部分电阻电容焊接led和蜂鸣器焊接asm1117芯片iic芯片at24c02下载测试代码到焊接好的stm32实验板,测试实验板是否工作正常。实验原理根据教材。四实验设备硬件部分:pc计算机(宿主机)、stm32实验板、电烙铁软件部分:测试软件(源代码)、isp下载软件五实验步骤1.焊接电路板部分电阻电容2.焊接led和蜂鸣器3.焊接asm1117芯片iic芯

5、片at24c024.焊接晶振5.检查和清洁实验板。注意需在测试前检查电源与地之间是否短路才能进入下一步。6.下载测试代码到焊接好的电路板,测试焊接是否正确。测试过程通过串口调试助手输出测试信息,依次测试串口、led、按键、蜂鸣器、iic和spiflsh的工作情况。7.如测试不通过,根据现象检查电路,找到问题后进行修正,然后重新测试。实验二 流水灯和按键实验一实验简介从无到有构建第一个stm32工程,并实现流水灯效果和按键响应。二实验目的及原理掌握stm32开发环境,掌握从无到有的构建工程,学会gpio基本操作。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计输入输出端口gpiogpi

6、o是常规输入输出端口,stm32f103ve有pa、pb、pc、pd、pe共5个16位的gpio。stm32的gpio都是可编程的,具有很多复用功能。从图1.7.1可见,通过对输出控及肖特基触发器及各个开关的控制,可以选择使用gpio功能或复用功能。当听过编程,将输出控制设置为选择复用功能的时候,就从来自片上外设的复用功能输出端采集数据,反之采集输出数据寄存器上的数据。在gpio方式下也可以配置为很多种模式,这和51单片机是有明显的区别,功能性强了很多。这些模式有:输入浮空、输入上拉、输入下拉、模拟输入、开漏输入、推挽输出、推挽复用、开漏复用。在默认的模式下为输入浮空。每个i/o端口可以通过对

7、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盘建立一个目录,在其下建立一个子目录firstpeoj

8、ect作为工作目录。然后,又在其下建立了一些子目录。当然,使用的工具就是windows资源管理器。这个目录可以放在任何一个盘或目录里,没有限制。现在开始拷贝文件。1)拷贝内核文件和驱动支持文件、启动文件将固件库librariescmsiscm3coresupport目录下的两个文件core_cm3.c和core_cm3.h文件拷贝到刚刚创建的stm32libm3子目录中。将固件库librariescmsiscm3devicesupportststm32f10x目录下的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h也拷贝到stm32libm3子

9、目录中。将librariescmsiscm3devicesupportststm32f10xstartuparm下的启动代码也拷贝到application子目录中。启动文件有好几个,笔者的stm32硬件芯片是stm32f103vet6,是属于高密度的芯片,因此应该拷贝startup_stm32f10x_hd.s。启动开发,启动文件startup_stm32f10x_hd.s是程序开始的地方。2)接下来拷贝设备驱动程序。将librariesstm32f10x_stdperiph_driverinc目录下的所有文件拷贝到stm32libinc目录下。将librariesstm32f10x_stdp

10、eriph_driversrc目录下的所有文件拷贝到stm32libsrc目录下。3)拷贝外设中断函数文件和固件库配置文件拷贝固件库的project stm32f10x_stdperiph_templat目录下的文件stm32f10x_it.h、stm32f10x_it.c和stm32f10x_conf.h文件到application子目录中。三实验内容熟悉mdk keil开发环境,构建基于固件库的工程,编写代码实现流水灯工程,按键后能改变流水灯速度。通过isp下载代码到实验板,查看运行结果。使用jlink下载代码到目标板,查看运行结果,使用jlink在线调试。实验原理根据教材。四实验设备硬件

11、部分:pc计算机(宿主机)、亮点stm32实验板、jlink。软件部分:pc机windows系统、mdk keil软件、isp软件。五实验步骤1. 熟悉mdk keil开发环境2. 熟悉串口编程软件isp3. 查看固件库结构和文件4. 建立工程目录,复制库文件5. 建立和配置工程6. 编写代码7. 编译代码8. 使用isp下载到实验板9. 测试运行结果10. 使用jlink下载到实验板11. 单步调试12. 记录实验过程,撰写实验报告实验三 串口发送和接收实验一实验简介编写代码实现串口发送和接收,将通过串口发送来的数据回送回去。 二实验目的掌握stm32基本串口编程,进一步学习中断处理。原理:

12、详细内容参考教材基于stm32的嵌入式系统原理与设计stm32的同步异步收发器usart和传统的51单片机或pc即串行口uart稍有区别:通用同步异步收发器(usart)提供了一种灵活的方法与使用异步串行数据格式的外部设备之间进行全双工数据交换。usart利用分数波特率发生器提供宽范围的波特率选择。 另外,它还允许多处理器通信。 usart也可以使用dma方式直接将接收的数据存储到内存或从内存中批量发送数据,也支持多种中断方式。 接口通过三个引脚与其他设备连接在一起。接收数据输入(rx)和发送数据输出(tx)及地(gnd)。如果使用更复杂的功能,如硬件流控制的时候,需要更多的引脚。rx:接收数

13、据串行输入。 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

14、使能或者失能指定usart的dma请求 usart_setaddress 设置usart节点的地址 usart_wakeupconfig 选择usart的唤醒方式 usart_receiverwakeupcmd 检查usart是否处于静默模式 usart_linbreakdetectlengthconfig 设置usart lin中断检测长度 usart_lincmd 使能或者失能usartx的lin模式 usart_senddata 通过外设usartx发送单个数据usart_receivedata 返回usartx最近接收到的数据 usart_sendbreak 发送中断字 usart_s

15、etguardtime 设置指定的usart保护时间 usart_setprescaler 设置usart时钟预分频 usart_smartcardcmd 使能或者失能指定usart的智能卡模式 usart_smartcardnackcmd 使能或者失能nack传输 usart_halfduplexcmd 使能或者失能usart半双工模式 usart_irdaconfig 设置usart irda模式 usart_irdacmd 使能或者失能usart irda模式 usart_getflagstatus 检查指定的usart标志位设置与否 usart_clearflag 清除usartx的待

16、处理标志位 usart_getitstatus 检查指定的usart中断发生与否 usart_clearitpendingbit 清除usartx的中断待处理位三实验内容编写主程序,初始化串口1,设置波特率为9600,无校验,数据位8位,停止位1位。编写中断服务程序代码实现将发送过来的数据回送。四实验设备硬件部分:pc计算机(宿主机)、亮点stm32实验板、jlink、示波器。软件部分:pc机windows系统、mdk keil软件、isp软件、串口调试助手。五实验步骤1编写串口初始化代码2编写中断服务程序代码3编译代码,使用jlink或isp下载到实验板4记录实验过程,撰写实验报告实验四 串

17、口dma双缓冲实验一实验简介使用双缓冲区,同时进行串口数据接收和数据处理。二实验目的及原理进一步掌握串口编程,进一步学习dma编程。学习使用双缓冲兵乓操作,理解互斥资源。进一步学习使用dma和中断,提高编程能力。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计直接存储器存取(dma)用来提供在外设和存储器之间或者存储器和存储器之间的高速的无需cpu干预的数据传输。数据通过dma快速地移动,例如从串口到内存,当在内存中收到一定数量的数据时才发出一个中断,cpu才放下手头的工作去处理,这就节省了cpu的资源来做其他操作。 stm32有两个dma控制器,其中dma1有7个通道,dma2有5

18、个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。另外,还有一个仲裁器来协调各个dma请求的优先权。stm32在硬件上设计了这么多的dma通道是煞费苦心的,用好dma控制器,可以大大的提高系统的吞吐量。在pc机上,将硬盘数据复制到内存,就采用dma模式,把拷贝数据的任务交给dma来执行,cpu就可以去做别的事情了。在stm32下也是如此,在编程中不采用dma模式,全靠cpu去辛苦劳作,是巨大的损失。要使用好dma控制器,首先要了解它。 dma框图 stm32有一大堆的可以使用dma与内存进行直接交互的外设,但是只有2个dma控制器。这就导致,当外设要进行dma传输的时候,首先

19、要获得批准。当然,哪几个外设可以使用哪些通道,是预先就设计好了的,在使用哪个通道的问题上就不需要过多考虑,但是编程人员必须认真对待这个问题,否则dma传输就用不起来。dma传输可以从内存到外设,也可以从外设到内存,另外,内存到内存的dma传输也是允许的,这个很方便。大部分的外设是apb外设,但是,也有两个ahb外设,以太网和usb可以参加,它们很需要高速的dma传输!dma传输要申请,有申请就得成立一个总裁机构,于是,两个dma控制器都设立了仲裁委员会。获得了批准的设备就可以在dma控制器的控制下,和内存进行数据交换,但是数据传输的方向在批准的时候就要填写进申请表,还有一些其他的参数也要仔细填

20、写进去(如传输的数据量,是按字传输还是半字、字节传输等,传输完成后是否发中断等),批准后就严格按申请表的内容进行数据传输。 当然,和一般的协议一样,还有附加条款:当主人cpu需要访问sram的时候,dma请求会暂停cpu访问系统总线达若干个周期,总线仲裁器执行循环调度,以保证cpu至少可以得到一半的系统总线(存储器或外设)带宽。另外,可编程的数据传输数目最大为65535。 三实验内容假设,有一个设备用rs232串行口以256000的波特率发送数据,并且大概每80毫秒发送8个字节的数据。使用串口调试助手,仿真这个设备。要求将该设备发送的数据求平均值后送回。采用dma方式接收数据,接收完成后发生中

21、断,然后dma通道使用另一个缓冲区继续接收数据。而这时cpu可以处理数据,计算刚接收到数据的平均值。然后送回。这样,cpu和dma并行工作。四实验设备硬件部分:pc计算机(宿主机)、亮点stm32实验板、jlink。软件部分:pc机windows系统、mdk keil软件、isp软件、串口调试助手。五实验步骤1编写主程序代码,创建2个缓冲区,设置串口、dma。2编写中断服务程序代码3编译代码,使用jlink或isp下载到实验板4记录实验过程,撰写实验报告实验五 i2c实验一实验简介编程实现对使用i2c接口的epc02芯片进行写和读操作。二实验目的及原理熟练掌握i2c编程,学会对epc02的读写

22、操作。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计24c02是电可擦除prom,即eeprom,其容量是256 x 8bit,,即2k bits。24c02接口方式为两线i2c接口。其总线时序如图:图124c02总线时序由图可见, 24c02的读写时序完全采用i2c方式,因此,既然已经实现了i2c驱动函数,就可以调用这些函数来实现24c02的驱动。寻址24c02,它的地址应该是什么呢?图2 24c02地址格式因为在stm32实验板上,将a2a1a0接地,那么a2,a1,a0三位都为0。最低位lsb为读写操作位,读为高电平,写为低电平。因此,写地址为0xa0,读地址为0xa1。如果

23、有多个24c02,那么应该将a2a1a0连接到不同的电平,让它们的地址不同,这样就可以分别访问。在写操作的时候,首先给出启动条件,然后向24c02发送器件地址,被寻址的24c02会应答。在接收应答成功后,再发送8位的字地址。24c02接收到这个地址后,会产生应答, 接收到这个应答后可以发送8位的数据。在接收到8位的数据后eeprom又会应答,这时必须给出停止条件来结束。在进行读操作的时候,流程基本相同,但需要在发送了器件地址和字地址,接收到应答后,开始读之前,发送一个启动条件再发送一个写地址给器件。三实验内容编写i2c驱动程序,使用驱动程序初始化epc02,判断设备正确性。写256个0x5a到

24、epc02,读出并发送给串口,通过串口调试助手判别是否读到的都是0x5a.四实验设备硬件部分:pc计算机(宿主机)、亮点stm32实验板、jlink。软件部分:pc机windows系统、mdk keil软件、isp软件、串口调试助手。五实验步骤1参考教材i2c部分,编写i2c驱动程序。2编写主程序3编译代码,使用jlink或isp下载到实验板4记录实验过程,撰写实验报告实验六 spi flash实验一实验简介编程实现对spi接口的w25q64进行读写操作。二实验目的及原理熟练掌握spi编程,学会对的w25q64读写操作。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计spi flas

25、h基本结构 以spi接口的flash芯片w25q64为例来讲解这一节。w25q64有32k个可编程的页(page)组成,每个页有256个字节。可以计算一下:32k*256=8m字节。因此w25q64有8mbyte(64mbit)的可读写存储空间,地址从0x0到0x7fffff。对于spi flash来说,页是一次写入的最小单位,编程中,一次可以对256字节的数据块进行写操作。16个页组成一个扇区(sector),所以一个扇区就是4k,4096字节。在擦除操作的时候,可以一次擦除1个扇区(4k块)、8个扇区(32kb块)、16个扇区(64kb块)或整个芯片!16个扇区可以组成一个64kb块(bl

26、ock)。总结一下,在spi flash中,一个块包含1个或多个扇区,一个扇区又包含多个页,而页是编程的最小单位,但是擦除操作是以块为单位的。当读者使用不同的器件的时候,要阅读这些器件的数据手册。控制和状态寄存器要对spi flash进行擦除、编程、设置等操作,就要编程读写其控制和状态寄存器。对于w25q64而言,控制和状态寄存器有sr1和sr2,其中sr2仅有最低位有效。表3w25q64控制和状态寄存器寄存器位名称功能描述sr2s8srp1保护方法,与wel组合可以配置为5种保护方式sr1s7srp0s6sec决定是以4kb块还是以64kb的块来进行保护。sec默认值是0,以64kb 的块来

27、进行保护。 s5tb顶部/底部块保护tb控制bp是从顶部开始还是底部开始。tb=0,从顶部开始,tb=1 从底部开始。 s4bp2写这些位可以进行相应的写保护控制,读这些位可以知道当前块保护的状态。可以保护整个芯片或者一部分,或不保护。 默认不保护s3bp1s2bp0s1welwel位当执行完写使能的时候置1。当芯片被写禁止的时候清 0。也就是标志着芯片是否可写。 s0busy忙标志当要向spi flash的指定地址写数据的时候,首先要选中该芯片,然后透过spi接口向控制和状态寄存器中写写使能指令,接着通过spi接口接收或发送数据。当执行一个操作后,可以通过busy的状态判断spi flash

28、是否完成了这个操作。例如,擦除整个芯片是个非常费时的操作,可以间隔一段时间读取busy位的状态来判断是否擦除完成。三实验内容1.编写spi驱动程序2.初始化spi接口3.读取spiflash的id,如果正确继续,否则报错4.向spifalsh地址0x12ab00开始写一串字符,再读出比较判断是否与写入的一致5.向spifalsh地址0x12ab00开始写连续256个字节的0x5a,然后读出并发送给串口,通过串口调试助手判别是否读到的都是0x5a.实验原理根据教材。四实验设备硬件部分:pc计算机(宿主机)、亮点stm32实验板、jlink。软件部分:pc机windows系统、mdk keil软件

29、、isp软件、串口调试助手。五实验步骤1参考spi及spi flash部分,编写spi及spi flash驱动程序。2编写主程序3编译代码,使用jlink或isp下载到实验板4记录实验过程,撰写实验报告实验七 tf卡编程实验一实验简介编程实现通过spi接口对tf卡进行读写操作。二实验目的及原理巩固spi编程,学会对的tf卡读写操作。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计tf卡即microsd卡,其体积比sd卡更小,目前广泛应用在嵌入式领域,具有体积小、速度快、存储容量大的优点。最典型的应用是手机,通过tf卡来扩展存储容量。目前市面上的tf卡容量大都在8g以上的。在第二章,设

30、计了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,进行初

31、始化。若超时了仍不成功则返回错误信息,否则返回0。2.读卡流程读单块流程为1)发送cmd17,收到0x00表示成功2)连续读直到读到开始字节0xfe3)读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字节伪crc

32、0xff 6)发送0xff,如果读到xxx00101表示数据写入成功写多块方法: 1)发送cmd25,收到0x00表示成功 2)发送时钟, 直到收到0xff 3)发送写多块开始字节0xfc 4)发送512字节数据 5)发送两个crc 0xff 6)发送0xff,读到xxx00101表示数据写入成功 7)判断是否读完所有的块,若未读完转到2)步骤 8)发送写多块停止字节0xfd来停止写操作 9)进行忙检测直到读到0xff三实验内容1.编写tf卡驱动程序(参考教材tf卡部分)2.tf卡检测,检测不到提示3.写卡上地5个扇区,写512个0x0a 4.读卡上低5个扇区,将读取内容发送到串口,判断是不是

33、512个0x0a四实验设备硬件部分:pc计算机(宿主机)、亮点stm32实验板、jlink。软件部分:pc机windows系统、mdk keil软件、isp软件、串口调试助手。五实验步骤1编写tf卡驱动程序(可参考书上代码)。2编写主程序3编译代码,使用jlink或isp下载到实验板4记录实验过程,撰写实验报告实验八 tf卡fat32实验一实验简介通过fat32文件系统实现对tf卡的文件操作。二实验目的及原理巩固spi编程、tf卡读操作。掌握fat32文件系统,使用tinyff软件包实现文件系统。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计fatfs模块由几个文件组成,ff.c和

34、ff.h是比较大而全的文件,tff.c和tff.h是比较小的的袖珍版tiny fatfs,但也完全包含了文件和目录读写功能且节约flash!另外就是硬件接口文件diskio.h和diskio.c。选择袖珍版对于stm32比较合适,也完全够用了。整理一下tiny fatfs的接口函数主要如下表所示:tiny fatfs接口函数函数名称功能呢个fresult f_mount (byte, fatfs*)安装或卸载逻辑驱动器fresult f_open (fil*, char*, byte)打开或创建文件 fresult f_read (fil*, void*, uint, uint*)读文件fre

35、sult f_write (fil*, void*, uint, uint*)写数据到文件fresult f_lseek (fil*, dword)移动文件指针 fresult f_close (fil*)关闭一个打开的文件 fresult f_opendir (dir*, char*)打开一个目录fresult f_readdir (dir*, filinfo*) 读一个目录 fresult f_stat (char*, filinfo*)获得文件信息 fresult f_getfree (char*, dword*, fatfs*)取得卡上剩余扇区数量 fresult f_truncate

36、 (fil*)切断文件 fresult f_unlink (char*)删除文件或目录 fresult f_mkdir (char*)创建新的目录fresult f_chmod (char*, byte, byte)改变文件属性 fresult f_utime (char*, filinfo*) 修改文件或目录的时间标签 fresult f_rename (char*, char*) 重命名文件或目录 tiny fatfs为stm32处理器嵌入式系统的文件管理提供了一种非常实用的解决方案!表中返回值fresult是一个枚举类型,是为增强程序的可读性,其实每个函数都返回一个整数,为0表示成功,为

37、其他值时,根据返回值可以确定函数失败的原因。三实验内容1.在工程中加入tff文件系统软件包2.tf卡初始化并检测,判断tf卡类型和容量,输出到串口 3.读tf卡根目录文件data.txt,用串口调试助手显示该文件实验原理根据教材。四实验设备硬件部分:pc计算机(宿主机)、亮点stm32实验板、jlink。软件部分:pc机windows系统、mdk keil软件、isp软件、串口调试助手。五实验步骤1参考教材tf卡fat32编程部分,编写tf卡驱动程序(可参考书上代码)。2编写主程序3编译代码,使用jlink或isp下载到实验板4记录实验过程,撰写实验报告实验九 网络ping实验一实验简介通过u

38、ip网络软件包实现ping操作。二实验目的及原理巩固spi编程。掌握通过spi接口与网络接口芯片enc28j60通信。掌握使用uip实现arp与icmp协议, 实现主机ping通实验板。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计enc28j60 是带有spi接口的独立以太网控制器。 它可作为任何配备有spi 的控制器的以太网接口。enc28j60 符合ieee 802.3 的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。 它还提供了一个内部dma 模块,以实现快速数据吞吐和硬件支持的ip校验和计算。 与主控制器的通信通过两个中断引脚和spi 实现,数据传输速率高达10

39、 mb/s。两个专用的引脚用于连接led,进行网络活动状态指示。enc28j60 由七个主要功能模块组成:1. spi 接口充当主控制器和enc28j60 之间通信通道。2. 控制寄存器用于控制和监视enc28j60。3. 双端口ram缓冲器用于接收和发送数据包。4. 判优器当dma、发送和接收模块发出请求时对ram 缓冲器的访问进行控制。5. 总线接口对通过spi 接收的数据和命令进行解析。6. mac (medium access control)模块实现符合ieee 802.3 标准的mac 逻辑。7. phy(物理层)模块对双绞线上的模拟数据进行编码和译码。enc28j60个寄存器说明

40、参见enc28k60数据手册。icmp和arp是tcp/ip协议的一部分。icmp是网络层的补充,可以回送报文,检测网络是否通畅。ping命令就是发送icmp的echo包,通过回送的echo relay进行网络测试。通过提供icmp协议服务,实现可以通过ping命令验证嵌入式系统网络的连通性。arp是地址解析协议,通过已知的ip,获得对应主机的mac地址。因为编程时是向目标ip地址发送数据,而对方也需要知道本机的mac地址,因此必须使用arp协议。 uip可实现tcp/ip协议,由开源代码组成。uip.h和uip.c为最核心的代码,是主要的tcp/ip协议实现代码。三实验内容在工程中加入uip

41、网络软件包编写网络接口芯片enc28j60驱动编写uip底层移植代码编写代码实现网络连接在主程序中实现icmp轮询 下载和测试四实验设备硬件部分:pc计算机(宿主机)、stm32实验板、jlink。软件部分:pc机windows系统、mdk keil软件、isp软件。五实验步骤1参考教材网络编程部分,网络接口芯片enc28j60驱动 (可参考书上代码)。2.移植uip底层代码,加入uip网络软件包到工程中3编写主程序4编译代码,使用jlink或isp下载到实验板,使用主机命令窗口向实验板发送ping命令查看反馈结果。5记录实验过程,撰写实验报告实验十 网络tcp/ip通信实验一实验简介通过ui

42、p网络软件包实现于主机的tcp/ip通信。二实验目的及原理巩固spi编程。掌握通过spi接口与网络接口芯片enc28j60通信。掌握使用uip实现tcp/ip协议。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计tcp是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于tcp是面向连接的所以只能用于点对点的通讯而不能用于广播。tcp提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性,但可靠性的提高也带来速度慢的缺点,在大量数据快速传输的场合,可以采用udp协议。对于tcp/ip协议,传统的tcp/ip协议栈有很大的程序代码段,运行时需要大量

43、的内存资源,因此不适合运行在flash和sdram资源都有限的stm32系统上。如果象在pc机上开发网络应用那样使用完整的tcp/ip协议栈,在嵌入式系统下行不通。因此在stm32系统上,既要使用tcp/ip 协议完成基本的操作,又必须适应嵌入式系统开发的特殊性。采用uip来实现tcp/ip是一个不错的选择。uip是tcp/ip的子集,是专门针对嵌入式系统开发的,甚至在8位的单片机上都可以运行,而完全能够处理基本的网络传输功能。对它进行配置,可以使其在完成功能要求的基础上,只占用它的几k字节甚至几百字节的flash和ram。uip可实现tcp/ip协议,由开源代码组成。uip.h和uip.c为

44、最核心的代码,是主要的tcp/ip协议实现代码。对于uip.h和uip.c中的部分函数说明如下。要实现tcp/ip服务器功能,需加入tcp连接函数,tcp回调函数。三实验内容在上一实验工程基础上,进一步编写代码实现tcp/ip网络连接 使用tcp/ip协议发送和接收数据下载和测试四实验设备硬件部分:pc计算机(宿主机)、亮点stm32实验板、jlink。软件部分:pc机windows系统、mdk keil软件、isp软件、网络调试助手。五实验步骤在上一实验工程基础上,进一步编写代码实现tcp/ip网络连接 编写主程序编译代码,使用jlink或isp下载到实验板,使用网络调试助手与实验板建立连接

45、,向实验板发送数据和查看结果。记录实验过程,撰写实验报告实验十一 dac单次发送实验一实验简介通过dac将stm32系统的数字量转换为模拟量,从端口送出。二实验目的及原理掌握简单的dac编程。掌握对双dac输出端口同时操作。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计stm32f103ve有2路12位带缓冲的dac通道。adc和dac使用共同的参考输入端vref+和vref-。dac还具有噪声波生成和三角波生成功能. 图dac框图上图为dac框图,图左上为触发源选择,右上为dac控制寄存器,最后在图中下的dac转换机构进行转换,转换结果在dca_out引脚输出。adc和dac使用

46、共同的参考输入端vref+和vref-及共同的电源vdda。dac的寄存器信息,包括噪声波生成和三角波生成功能,在stm32参考手册有详细介绍。dac库函数dac库函数在stm32f10x_dac.h中声明,在stm32f10x_dac.c中实现。dac库函数如下表所示:表3.8.1 dac库函数一览函数名描述dac_deinit将dac的寄存器重设为缺省值dac_init根据dac_initstruct中指定的参数初始化dac通道dac_structinit把dac_initstruct中的每一个参数按缺省值填入dac_cmd使能或者失能指定的通道xdac_itconfig使能或者失能指定的

47、通道x中断dac_ dmacmd使能或者失能指定的dac通道的dma请求dac_softwaretriggercmd使能或者失能指定的dac通道的软件触发dac_dualsoftwaretriggercmd使能或者失能指定的两个dac通道的软件同步触发dac_wavegenerationcmd使能或者失能指定的dac通道的波形发生器功能dac_setchannel1data设置dac通道1的数据保持寄存器dac_setchannel2data设置dac通道2的数据保持寄存器dac_setdualchanneldata设置dac通道1和2的数据保持寄存器dac_getdataoutputvalu

48、e返回dac通道上一次输出dac_getflagstatus检查dac标志是否设置dac_clearflag清除指定通道的dac事件等待标志dac_getitstatus检查dac中断是否发生dac_clearitpendingbit清除指定通道的dac中断等待标志三实验内容1.编写代码实现简单的dac单次发送。要求将0-4095的数字量依次转换发出,步长10,发送周期1秒。2. 编译下载到实验板,运行调试3.撰写实验报告四实验设备硬件部分:pc计算机(宿主机)、亮点stm32实验板、jlink、万用表。软件部分:pc机windows系统、mdk keil软件、isp软件、串口调试助手五实验步骤1编写主程序2编译代码,使用jlink或isp下载到实验板,使用串口调试助手跟踪程序运行情况,使用哪个万用表观察输出的电压。3记录实验过程,撰写实验报告实验十二 使用dac实现波形发生器实验一实验简介通过dac将stm32系统的数字量转换为模拟量,从端口送出。实现dac波形dma发送功能。即实现波形发生器。二实验目的及原理学习使用dma方式发送波形数据到dac通道。原理:详细内容参考教材基于stm32的嵌入式系统原理与设计stm32的dac具有波形发生器功能,设置为波形输出方式后就不需要象前面那样需要cpu不停的操

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论