基于STM32F103的网络温度报警器物联网全解_第1页
基于STM32F103的网络温度报警器物联网全解_第2页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、日Zl旨9由£10乙:IH闢WH3»栅:MSOldZSNISzEK:号普却44S8MWVKWU6BSOldZSNIS=EK目录:1.引言12.利用普通二极管PN结测试环境温度原理23.器件的选择和芯片的介绍44.UC/OS系统移植65.文件系统的移植与文件系统基本函数的功能166.Uip及socket实现方法2721. 引言近年来随着科技的飞速发展,嵌入式的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的嵌入式应用系统中,嵌入式往往作为一个核心部件来使用,仅嵌入式方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。本系统使用STM32F10

2、3实现了接收由上位机通过TCP协议发出的温度报警阈值信号,并存于SD片卡中。单片机利用普通二极管的PN结测试环境温度,每30s采集一次,将采集到的温度信息补充上时间(时、分、秒、毫秒)标注存储在存储芯片中。并将报警时的温度值与当前时间的温度进行比较,当前温度大于阀值温度时,通过发光二极管或蜂鸣器报警。上位机通过TCP,向单片机发送Readnfo”命令后,单片机能将SD卡中存储的所有数据发到PC机的串口助手中;数据格式美观、易懂。本系统采用普通二极管PN节的温度特性来测量环境温度不失为一种低成本而又容易实现的环境温度测量方式。使用STM32自带的ADC模块进一步降低了成本和设计难度。采用大容量存

3、储芯片可以长时采集环境数据,并且在采集到的温度补充上时间信息使数据更加可信,同时移植了文件系统方便文件在WINDOWS下的读取和处理。本系统采用了无线传输的方式配合可靠的电源设备或太阳能设备可以在室外持续的传输回温度信息或其他的气象数据(需配合适当的传感器),减少了人工成本,并且更加适应于野外大规模投放接点。82. 利用普通二极管PN结测试环境温度原理.温度是表示物体或环境冷热程度的一种物理量而温度传感器是一种能将温度变化转换成电量变化的元器件。由于二极管制造工艺的特殊性,我们可以利用二极管的伏安特性来测量环境的温度,它的伏安特性如下图0“0.24耳心启厲出.dLJ1+np/V"J;

4、-4-b-S众所周知,将PN结用外壳封装起来,并加上电极引线就构成了半导体二极管,即所谓的二极管。由P区引出的电极为阳极,由N区引出的电极为阴极,如下图所示il-'H(CHW)(*橇眼眼094-3二桅管的F5E结与电路田理苻号b.)也HiRi題轩号温度对二极管的性能有较大的影响,温度升高时,二极管的正向压降将减小,每增加1C,正向压降减小约2mV,因此可以使用这一特性来测量环境温度。由半导体理论可以得出,PN结所加端电压u与流过它的电流i的关系为:/=I3-尹1/其中,Is为反向饱和电流,对于硅材料来说,Is约为10pA;q为电子的电量口=1.6*10的-9次方库伦;k是玻耳茨曼常数,

5、k=1.38*10的-23次方J/K;T为绝对温度,kT/q可以用UT来代替,常温下,即T=300K时,UT约为26mV。对于足够大的电压,二极管方程可以近似写成那么,二极管两端的电压可以推导出为:因此温度的公式为:3. 器件的选择和芯片的介绍本系统采用了ST公司和高性能微控制一一STM32F130ZET6该微控制器具有512KROM以及62KRAM足以满足该项目的需求。本系统使用到的模块有:ENC28J60模块,0.96'OLED模块,SD卡模块,以及2个无线模块和USB-TTL模块。为了满足这些模块的供电需求另外自己用洞洞板做了AMS1117的稳压模块,以及采用德州仪器公司的TPS

6、7333稳压芯片制作了稳压模块为无线模块提供稳定可靠的电源使数据的发送和接收更加稳定。AMS1117系列稳压芯片有可调版与多种固定电压版,设计用于提供1A输出电流且工作压差可低至1V。在最大输出电流时,AMS1117器件的压差保证最大不超过1.3V,并随负载电流的减小而逐渐降低。本系统采用的是输出3.3v的固定电压版本。电路图如下:TPS7333是由德州仪器公司研发生产的单通道线性稳压芯片具有单输出LDO、500mA、固定电压(3.3V)、集成SVS、低静态电流,性能十分稳定,输出电压纹波低。应用电路比较简单,电路如下:V|INRESETINSENSEINOUTENOUTGNDTPS73xxP

7、Wt893250kGCSR=1QToSystemR&s-et1ZFtTPS7325,TPS7330,TPS7333,TPS7348,TPS7350(fxed-voltageoptions)HCapacitorselectionisnontrivial.Seeapplicationinformationsectionford-etails.Figured,lypicalApplicationConfiguration4.UC/OS系统移植uC/OS是一个微型的实时操作系统,包括了一个操作系统最基本的一些特性,如任务调度、任务通信、内存管理、中断管理、定时管理等。而且这是一个代码完全开放的

8、实时操作系统,简单明了的结构和严谨的代码风格,非常适合初涉嵌入式操作系统的人士学习。很多人在学习STM32中,都想亲自移植一下uC/OS,而不是总是用别人已经移植好的。在我学习uC/OS的过程中,查找了很多资料,也看过很多关于如何移植uC/OS到STM32处理器上的教程,但都不尽人意,主要是因为是时间比较赶,无法静下心开好房学习,在一个月时间内完成STM32的学习以及UIP、文件系统的移植还是比较辛苦和困难的。1首先需要从官网上下载UC/0S的源码,并且选择STM32F103ZET6,由于官方没有公布KEIL版本的工程只有IAR版本,所以需要进行一定的修改才可用于KEIL中。UC/OS的文件结

9、构如下图所示:Section5pC/OS-llBookSection3pC/OS-llCortexM3PortBSPesp.cSection6QS_CPU_GtC0S_CPU_A.ASD40£_CPU.H0SDBG+CYourApplicationAPPAPP_VECT.CAPE1"CF3.fiINCLUDES.os_crG.HIJC/OS-IIOS_CORE.COSZb'LAGXos7MBOX-cOSMEM.COS_MUTEX+COSQ.COS_EM.COSJI'ASK.COSTIME,CO£_TMR.CuCOSTI.HAction2ARMCor

10、tex-M3ITargetBoardFigure1-1,Relationshipbetweenmodules.2按照下图的文件结构搭建uC/OS工程文件结构$-?&XeE-:E-申會Ij-|j-:E"I由“'l由”:E'"$E"l由“i、.H-1卧jS'"j-|i-由“E-1E-?E1-STARTUPCODE圉startjp_5trn3jUSER園rnain.c鬲strn32flOK_it.iFWlib禹ttm32fl0x_rci筍5trn32flOK_g|L酉5trn32flOK_Ls国misc.c爾stmJ2fl0k_

11、dr鬲stm32F10x_fld筍5tm32flOM_5p固stm32fl0x_flasys.cenciSjGO.cip_arp_udp_t<印i_enc28J60.训亡1»_5亡rv亡r.tCCadusrfl.c甲”|E-目“、E-J+app.c-=®-®'-E-=-s-!®-s-iEl-0-=®-0-囱由“”龜+d5_cfg_app.cs_core.c5E_dbg.iO5_flag.cs_int.cem.cd5_Esg.cs_mirtec.c5_pend_mullos_prio.c«_qcs_s亡rn,cdE_Et3

12、t.C5._task.c5_ticlc.cs_time.cos_tmr.cO5_var.c里|ciE_cpiJ_.a.aEKr,葡os_c:pij_c.c0-、.uCVPorts.園O5_cpu_a.a5rr:由-曲O5_CpU_C,C申、.uCUE0-筍Iib_a5cii.c审蛊lib_math.c审盂|lib_mem.c囱-暫lib_?tr.c白“0uGVCPU审匡cpu_core.c爲cpu_a.asrn1由闔cpu_c.cS-、uCCfg亩圍C5_app_hoak白.sReadme:基readrrie.tact 把LED工程所在的文件夹先改名为:STM32+UCOS 在USER文件夹下

13、新建includes.h头文件。 按照之前给的uC/OS-II文件结构图,我们在工程的根目录下建立BSP文件夹、APP文件夹和uCOS-II文件夹。BSP文件夹存放外设硬件驱动程序。APP文件夹存放应用软件任务uCOS-II文件夹uC/OS-II的相关代码 把USER文件夹下的led.h和led.c文件剪切到BSP文件夹里。在BSP文件夹里新建BSPc和BSPh文件。 在APP文件夹下建立app.h、app.c和app_cfg.h文件。拷贝uC/OS-II源代码附件那里的MicriumSoftwareEvalBoardsSTSTM32F103ZE-SKIAROS-Probe-LCDos_cfg

14、.h到此目录。 把uC/OS-II源代码附件那里的MicriumSoftwareuCOS-II下的Source文件夹复制到工程里刚才新建的uCOS-II文件夹里。把MicriumSoftwareuCOS-IIPortsarm-cortex-m3Generic'IAR下的文件复制到工程uCOS-II文件夹中新建的Ports文件夹里。复制后,选中全部文件,右键一一属性去掉只读属性确定。如下图添加includepatharaw血e旺嫌/0NI/BSSOM-Jap#0Nwdsogap#raw血eutlnl旺嫌/0Nulx3J.nl/rsoM-Jap#墨叢旺嫌/oNl/BI/rsofap#疑旨旺

15、題0NUJxocfiwsoM-Jap#0NUJOV1U.SOfap#KIME氷、rafinn社Ezfzs,«血eutlnlZW8IS0二.640so忌迤£I*7soCJn0M區m一lscoylIERAIAW.SCOT:iDpe-n亠-npqulxsDetugUtilitiesAsm|LinkerjiDevice|I:ai:-getOutputListing|sLxlcldn-S6r卫3卫瓦0i*t*1JMM-哲碼m<m0岳口63QRHMQPLJ-M5QASso£±2巴兰旦墨cinqajo匸需匚-BJPifcMru>#defineOS_TMR_

16、EN0禁用定时器#defineOS_DEBUG_EN0禁用调试b. 修改os_cpuh注释掉这三行voidOS_CPU_SysTickHandler(void);voidOS_CPU_SysTickInit(void);INT32UOS_CPU_SysTickClkFreq(void);c. 修改os_cpu_CC把OS_CPU_SysTickHandler(),OS_CPU_SysTickInit()及如下图的文件注释掉defineOSCPUCM3ITi/ICSTCTRL(才(val&tileIMT32U和gEDCiCiECi10)tfdellDe05CPUCM3r/icSTRELO

17、AD(volatileH0T32UJOxEOOOEOi)AdelineOSCPUCM3NVICSTCURRENT(*(volatiltINT32U*JOxEOOOEOie)define05QPUCM3IJICSTCAL(volatileINT32U*)OxEODDEOLC)#cLeiine05CPU_CH?_1TJICPRID_ST(*(valatilsINT8U*)OxEOOO£D23)05CPUCM35T_CTRLCOUNTOzOODlOOOOdefirieOSCPUCM3NVICSTCTRLCLKSRCoxooaaooc#defmeOSCPUCM3NVICSTCTRLINTEN

18、OXOOOODQ02#dErfiDECISCPU匚M3NVICSTCTRLENABLEOMOoaaaocicLeiine05CPUCM3IT/ICPRIOKINOxFFd修改os_cpu_a.asm由于编译器的原因要将下面的PUBIC改为EXPORT:PUBLICOS_CPU_SR_Save;FunctionsdeclaredinthisfilePUBLICOS_CPU_SR_Restore11PUB匚COSStaHHighRdyPUB匚COSQXSWPUB匚COSIntCtxSwPUB匚CoscpupendsvHand_erp霸埒osldbgc#deAneOSCOMPPEROPTrootg#

19、deAneOSCOMPPEROPT、roof覇埒Startuplstln32floxlhd.s冈甘料%詢需酣油逮恿HSttCMSIS召sQrHUPsrm32floxhd.s斋甘DI些垦令s、併弟血igMOSICPUISysTickHand-ero刮startuplstm32floxlhd.s)<F>=l=>、PendSV召回Mffl前XpendsvHand-er、冈兵汨證CE耳血圧皆pendsvHand-erssBmBoscpupendsvHand_ers凹。菱JIflinc-udes.h#ifndefINCLUDESH#defineINCLUDESH#inc-ude=stm

20、32flox.h=12上spnpu=pnpu_#0.dsoa即®HsLUQrrDNI、七PUQ#馬冈后凶畧Lu、上P=pnpu_#檢国嫌史圧旺、上.ddppnpw#疑冈呂氷ffi竖肱fcM、上dsoauPWW#:仪水檢国塢IIso、:Dn、>lr:=lsoon=pnpu_#氷舉粘EK>P匚SAS、上§xo-c4*E0pnpu_#粘SK>P匸<s遐迪ftms屋、GLUS缶ds>D匚SO'AOUnbLL.E2SAS)6匸uco>p匸<s)(po>七u>p匸<spo>亠>ms悬口曙qlui*、o6匸U

21、GOOIdoQ'LUl>粘直骰芳匸Ms遐迪ftm喪悬*、o七u>p匸Ms>乏CN卜只-H-營塢张鱗區*、O七UIEZSAS)(po>七UIds8po>Bsp.h#ifndefBspH#defineBspHvoidsysTicklinit(void)voidBSPIInit(void)j#endif、BSPH菱JIflmain.c#inc-ude=inc-udes.h=sQrricOSSTKsQrHUPQrsksHSTARTUPTASKSTKSIZEb冷kintmain(void)亠BspInitoOSInsjOSTaskcreatecrasklLEDAVO

22、id*)0、p?sErHUPErsksHSTARTUPTASKSTKsNElLSTARTUPTASKPRIO)osstartoreturno至此,UC/OS的移植已经完成,运行多任务只需在APP.C里修改即可。限于篇幅,一下不再赘述,详情请看源码。235.文件系统的移植与文件系统基本函数的功能1)SDIO配置与SD卡实现:a. SDIO接线如下图所示:0»114,124,124r124,124,12IfiKnhm1f'Kahrn10Kohm1CKohun10KohmPC10-a1PC111h*2-PD23V4PC125EPCS7.b8PC10VPG11Y冲?3V3O切履pea

23、VDATA2CD/DATA3CMDVDDCLKVSSDATA0DATA1J2b.SDIO时钟设置:SDIO_CK时钟是通过PC12引脚连接到SD卡的是SDIO接口与SD卡用于同步的时钟。SDIO选配器挂载到AHB总线上,通过HCLK二分频输入到适配器得到SDIO_CK的时钟,这时SDIO_CK=HCLK/(2+CLKDIV)。其中CLKDIV是SDIO_CLK(寄存器)中的CLKDIV位。另外,SDIO_CK也可以由SDIOCLK通过设置bypass模式直接得到这时SDIO_CK=SDIOCLK二HCLK。可以通过以下函数进行时钟配置SDIO_Init(&SDIO_InitStruct

24、ure);对SD卡的操作一般是大吞吐量的数据传输,所以采用DMA来提高效率,SDIO采用的是DMA2中的通道4。在数据传输的时候SDIO可向DMA发出请求。c.SDIO协议驱动声明:由于原来没有了解过SD协议,又看到SDIO的驱动有2000多行,时间紧迫,感觉无从下手。故采用ST公司官方驱动。以下简要介绍所用到的函数的功能SDIO_SendCommand(&SDIO_CmdInitStructure);/配置和发送命令SDIO通过CMD接收到响应后,硬件去除头尾的信息,把commandindex保存到SDIO_RESPCMD寄存器,把argumentfield内容保存存储到SDIO_R

25、ESPx寄存器中。这两个值可以分别通过下面的库函数得到。SDIO_GetCommandResponse();/卡返回接收到的命令SDIO_GetResponse(SDIO_RESP1);卡返回的argumentfield内容FromhoctSDE的多決写人片序囲CMD-DATFigure3-4:(MultipleBlockWriteOporationd. SDIO_Init()函数:1) 用GPIO_Configuration()进行SDIO的端口底层配置2) 分别调用了SD_PowerON()和口SD_InitializeCards()函数,这两个函数共同实现了上面提到的卡检测、识别流程。3

26、) 调用SDIO_Init(&SDIO_InitStructure)库函数配置SDIO的时钟,数据线宽度,硬件流(在读写数据的时候,开启硬件流是和很必要的,可以减少出错)4) 调用SD_GetCardInfo(&SDCardInfo)获取sd卡的CSD寄存器中的内容,在main函数里输出到串口的数据就是这个时候从卡读取得到的。5) 调用SD_SelectDeselect()选定后面即将要操作的卡。6) 调用SD_EnableWideBusOperation(SDIO_BusWide_4b)开启4bit数据线模式如果SD_Init()函数能够执行完整个流程,并且返回值是SD_OK

27、的话则说明初始化成功,就可以开始进行擦除、读写的操作了。下面进入SD_PowerON()函数,分析完这个函数大家就能了解SDIO如何接收、发送命令了。e.SDIOIint()中使用的函数:SD_PowerON函数:确保SD卡的工作电压和配置控制时钟SD_InitializeCards:初始化所有的卡或者单个卡进入就绪状态2)FATFS文件系统的移植FATFS是面向小型嵌入式系统的一种通用的FAT文件系统。FATFS完全是由AISIC语言编写并且完全独立于底层的I/O介质。因此它可以很容易地不加修改地移植到其他的处理器当中,如8051、PIC、AVR、SH、Z80、H&ARM等。FATF

28、S支持FAT12FAT16FAT32等格式,利用前面写好的SDIO驱动,把FATFS文件系统代码移植到工程之中,就可以利用文件系统的各种函数,对已格式化的SD卡进行读写文件了。首先从官网下载FATFS源码,然后解压到工程文件中,并添加到工程中星t白已USERHSDtO-DEMO由:由'3-S-;S-:3-田mam.c固Ftm32fl0x_Ft.匚蛊usarti.c固sdcardx总diskla.c下面对FATFS的文件做说明:integer.h:是一些数值类型定义diskio.c:底层磁盘的操作函数,函数需要用户自己实现ff.c:独立于底层介质操作文件的函数,完全由ANSIC编写CC9

29、36.C:简体中文支持所需要添加的文件,包含了简体中文的GBK和转换函数。ffconf.h:这个头文件包含了对文件系统的各种配置如需要支持简体中文要把_CODE_PAGE的宏改成936并把上面的CC936.C文件加入到工程之中移植过程中要修改的文件1、将integer.h中有关BOOL的那句注释掉/BOOLassign_dr£ves(intchsr*strgv);/*addbyEire*/样:2、在ff.c文件的开头重新定义一个布尔变量,取名为bool,与stm32f10x.h中的名字一/#includeTlstm32f1Jx.hr,/'*addbyfire*/'ty

30、pedefenum:=0,'1RLE=!?ALbE-joao.;/*addbyfire*/sta-ticFRESUITair_rLext二R-dj7/也/BOOLstreachboolstretch同时在ff.c的第585行做如下修改:(/*FR_QK:Succeeded,FRNOPointertodirectoryobject/*FALSE:Donotstreachtai/*=addbyfire+/文件系统移植成功!卜面介绍文件系统中的几个底层函数:a.文件系统初始化函数接口的实现DSTATUSdisknitialize(BYTEdrv/*Physicaldrivenmuber(0.

31、)*/)SD_ErrorStatus;/*Supportsonlysingledrive*/if(drv)returnSTA_NOINIT;/*SDInit*/Status=SD_Init();if(Status!=SD_OK)returnSTA_NOINIT;elsereturnRES_OK;这个函数调用了SDIO的SD_Init()函数,返回成功或失败的参数,当文件系统调用到这个函数的时候,实际上是调用了SD_Init()对SD卡进行初始化。b. 扇区读取函数的实现:DRESULTdisk_read(BYTEdrv,/*Physicaldrivenmuber(0.)*/BYTE*buff,

32、/*Databuffertostorereaddata*/DWORDsector,/*Sectoraddress(LBA)*/BYTEcount/*Numberofsectorstoread(1.255)*/)if(count>1)SD_ReadMultiBlocks(buff,sector*BLOCK_SIZE,BLOCK_SIZE,count);/*CheckiftheTransferisfinished*/SD_WaitReadOperation();循环查询dma传输是否结束/*WaituntilendofDMAtransfer*/while(SD_GetStatus()!=SD

33、_TRANSFER_OK);elseSD_ReadBlock(buff,sector*BLOCK_SIZE,BLOCK_SIZE);/*CheckiftheTransferisfinished*/SD_WaitReadOperation();循环查询dma传输是否结束/*WaituntilendofDMAtransfer*/while(SD_GetStatus()!=SD_TRANSFER_OK);returnRES_OK;此函数分为了2个部分,分为单块读取和多块读取数据,因为使用SD_ReadMultiBlocks比SD_ReadBlock(速度要快所以加入了一个判断函数来区分以增加系统的效

34、率。由于文件系统都是以块(512字节)为单位读写的所以只要提供512字节或者512*N字节的SD卡驱动即可。c. 扇区写入函数的实现:DRESULTdisk_write(BYTEdrv,/*Physicaldrivenmuber(0.)*/constBYTE*buff,/*Datatobewritten*/DWORDsector,/*Sectoraddress(LBA)*/联祖1遁gp第二ouo电do七M七pmq's>p一ISC匸s-Q4sueJ_一R4一>PQLD*、i?unooL1JZIS>DO8LlJZIS>DOoa-Lot;sitnq(*81us)s&g

35、t;po_oaQ_n乏七MQ'S)(t人lunoo)七>(SSCN:<I)七m2sot;s40QqlunN*、lunooLU1A8OSIJJM三己亠联坡録地平ps丽OPS期她、bo缶ll-snvmiq's丄OSEES环OQ'S)壬M联祖1遁gp期枷、ouo甩do七M七pmq's>p一ISC匸s-Q4sueJ_一R4一>PQLD*、aluzis>do8LlJZIS>DOoa-Lot;sitnq(*181US)>PO_8七MQ'S)s-亠联坡録地平ps丽OPS期她、bo缶ll-snvmiq's丄OSEES环O

36、Q'S)壬M#endif/*_READONLY*/*/*/*/*MiscellaneousFunctionsDRESULTdisk_ioctl(BYTEdrv,/*Physicaldrivenmuber(0.)*/BYTEctrl,/*Controlcode*/void*buff/*Buffertosend/receivecontroldata*/)returnRES_OK;扇区写入函数与扇区读取函数十分相似,也是根据写入扇区的数目是一个还是多个来分别调用不同的SD数据块写入函数。d. 时间接口函数DWORDget_fattime(void)return0;这个函数在本系统中意义不大,

37、所以并未添加实际功能。到这里fatfs的移植与文件系统的基本函数介绍已经完成。下面将介绍Uip及socket实现方法.266.Uip及socket实现方法ENC28J60模块与STM32F103ZET6连接PB13:ENC28J60-INTPA6-SPI1-MISO:ENC28J60-SOPA7-SPI1-MOSI:ENC28J60-SIPA5-SPI1-SCK:ENC28J60-SCKPA4-SPI1-NSS:ENC28J60-CSPE1:ENC28J60-RSTENC28J60模块电路图:4PE4PA6<斗耐朋PAT4.5,5.7.6.9PAX5辭IPjM4,7PE1"|O

38、ohmR242畑lwr)7B¥h'HuF竝SV'SIri工忤SiphrnTPl兰VCAPVQDVSELEDACLKOU7LEDBINIVCOOSCNCSG?5051OSC1vssoscSCKUSSPLLcs仙口PLLRESETVDDRX.VS&RXVSSTXIPTN-TPOUT*iPlNi-TROUT-RAIA®VDQTXU13ENC2BJ50碍17L16O1VJO3V3ihnleoaHELEDBTPDUTiR32Sldhrti亠LDuH,回TPnUT-对3碣匸T刀20pFoac2cL=20pFOSC1DUl|ENC28J60简介ENC28J60是带

39、有行业标准串行外设接口(SerialPeripheralInterface,SPI)的独立以太网控制器。它可作为任何配备有SPI的控制器的以太网接口。ENC28J60符合IEEE802.3的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。它还提供了一个内部DMA模块,以实现快速数据吞吐和硬件支持的IP校验和计算。与主控制器的通信通过两个中断引脚和SPI实现,数据传输速率高达10Mb/s。两个专用的引脚用于连接LED,进行网络活动状态指示。ENC28J60由七个主要功能模块组成:1. SPI接口一一充当主控制器和ENC28J60之间通信通道。2. 控制寄存一一用于控制和监视ENC28J60。3. 双端口RAM缓冲一用于接收和发送数据包。4. 判优一一当DMA、发送和接收模块发出请求时对RAM缓冲器的访问进行控制。

温馨提示

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

最新文档

评论

0/150

提交评论