版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于STM32F103的網(wǎng)絡(luò)溫度報(bào)警器設(shè)計(jì)作品名:基于STM32F103的網(wǎng)絡(luò)溫度報(bào)警器設(shè)計(jì)作者:陳華健賈從含時間:2015年6月17日目錄:1引言12利用普通二極管PN結(jié)測試環(huán)境溫度原理23器件的選擇和芯片的介紹44.UC/0S系統(tǒng)移植65文件系統(tǒng)的移植與文件系統(tǒng)基本函數(shù)的功能166. Uip及socket實(shí)現(xiàn)方法2721. 引言近年來隨著科技的飛速發(fā)展,嵌入式的應(yīng)用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術(shù)日益更新。在實(shí)時檢測和自動控制的嵌入式應(yīng)用系統(tǒng)中,嵌入式往往作為一個核心部件來使用,僅嵌入式方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。本系統(tǒng)使用STM32F103實(shí)現(xiàn)了接收
2、由上位機(jī)通過TCP協(xié)議發(fā)出的溫度報(bào)警閾值信號,并存于SD片卡中。單片機(jī)利用普通二極管的PN結(jié)測試環(huán)境溫度,每30s采集一次,將采集到的溫度信息補(bǔ)充上時間(時、分、秒、毫秒)標(biāo)注存儲在存儲芯片中。并將報(bào)警時的溫度值與當(dāng)前時間的溫度進(jìn)行比較,當(dāng)前溫度大于閥值溫度時,通過發(fā)光二極管或蜂鳴器報(bào)警。上位機(jī)通過TCP,向單片機(jī)發(fā)送Readnfo”命令后,單片機(jī)能將SD卡中存儲的所有數(shù)據(jù)發(fā)到PC機(jī)的串口助手中;數(shù)據(jù)格式美觀、易懂。本系統(tǒng)采用普通二極管PN節(jié)的溫度特性來測量環(huán)境溫度不失為一種低成本而又容易實(shí)現(xiàn)的環(huán)境溫度測量方式。使用STM32自帶的ADC模塊進(jìn)一步降低了成本和設(shè)計(jì)難度。采用大容量存儲芯片可以長
3、時采集環(huán)境數(shù)據(jù)并且在采集到的溫度補(bǔ)充上時間信息使數(shù)據(jù)更加可信,同時移植了文件系統(tǒng)方便文件在WINDOWS下的讀取和處理。本系統(tǒng)采用了無線傳輸?shù)姆绞脚浜峡煽康碾娫丛O(shè)備或太陽能設(shè)備可以在室外持續(xù)的傳輸回溫度信息或其他的氣象數(shù)據(jù)(需配合適當(dāng)?shù)膫鞲衅鳎?,減少了人工成本,并且更加適應(yīng)于野外大規(guī)模投放接點(diǎn)。92. 利用普通二極管PN結(jié)測試環(huán)境溫度原理.溫度是表示物體或環(huán)境冷熱程度的一種物理量而溫度傳感器是一種能將溫度變化轉(zhuǎn)換成電量變化的元器件。由于二極管制造工藝的特殊性,我們可以利用二極管的伏安特性來測量環(huán)境的溫度,它的伏安特性如下圖0J).2O.4O_6(18.OL21.4-2-4r-8Jy/llA1-
4、9二極營的伏安礙喩麗子網(wǎng)I11眾所周知,將PN結(jié)用外殼封裝起來,并加上電極引線就構(gòu)成了半導(dǎo)體二極管,即所謂的二極管。由P區(qū)引出的電極為陽極,由N區(qū)引出的電極為陰極,如下圖所示符號罔4-3_概昔刊站與電踏圖昭持號C蠟b)電塔咽雎赭號溫度對二極管的性能有較大的影響,溫度升高時,二極管的正向壓降將減小,每增加1C,正向壓降減小約2mV,因此可以使用這一特性來測量環(huán)境溫度。由半導(dǎo)體理論可以得出,PN結(jié)所加端電壓u與流過它的電流i的關(guān)系為:其中,Is為反向飽和電流,對于硅材料來說,Is約為10pA;q為電子的電量口=1.6*10的-9次方庫倫;k是玻耳茨曼常數(shù),k=1.38*10的-23次方J/K;T為
5、絕對溫度,kT/q可以用UT來代替,常溫下,即T=300K時,UT約為26mV。對于足夠大的電壓,二極管方程可以近似寫成那么,二極管兩端的電壓可以推導(dǎo)出為:因此溫度的公式為:3. 器件的選擇和芯片的介紹本系統(tǒng)采用了ST公司和高性能微控制一一STM32F130ZET6該微控制器具有512KROM以及62KRAM足以滿足該項(xiàng)目的需求。本系統(tǒng)使用到的模塊有:ENC28J60模塊,0.96'OLED模塊,SD卡模塊,以及2個無線模塊和USB-TTL模塊。為了滿足這些模塊的供電需求另外自己用洞洞板做了AMS1117的穩(wěn)壓模塊,以及采用德州儀器公司的TPS7333穩(wěn)壓芯片制作了穩(wěn)壓模塊為無線模塊提
6、供穩(wěn)定可靠的電源使數(shù)據(jù)的發(fā)送和接收更加穩(wěn)定。AMS1117系列穩(wěn)壓芯片有可調(diào)版與多種固定電壓版,設(shè)計(jì)用于提供1A輸出電流且工作壓差可低至1V在最大輸出電流時,AMS1117器件的壓差保證最大不超過1.3V,并隨負(fù)載電流的減小而逐漸降低。本系統(tǒng)采用的是輸出3.3v的固定電壓版本。電路圖如下:GNDTPS7333是由德州儀器公司研發(fā)生產(chǎn)的單通道線性穩(wěn)壓芯片具有單輸出LDO、500mA、固定電壓(3.3V)、集成SVS、低靜態(tài)電流,性能十分穩(wěn)定,輸出電壓紋波低。應(yīng)用電路比較簡單,電路如下:V|T0.1UFINRESETINSENSEINOUTENOUTGNDTPS73xxPWt391020ToSys
7、temReset250kfiVOtTPS73251TPS733Q.TPS7333,TPS7348,TPS7350(fixed-voltageoptions)工Capacitorselectionisnontrivial.Seeapplicationinformationsectionfordetails.Figure2.lypicalApplicationConfiguration4.UC/0S系統(tǒng)移植uC/OS是一個微型的實(shí)時操作系統(tǒng),包括了一個操作系統(tǒng)最基本的一些特性,如任務(wù)調(diào)度、任務(wù)通信、內(nèi)存管理、中斷管理、定時管理等。而且這是一個代碼完全開放的實(shí)時操作系統(tǒng),簡單明了的結(jié)構(gòu)和嚴(yán)謹(jǐn)?shù)拇a風(fēng)
8、格,非常適合初涉嵌入式操作系統(tǒng)的人士學(xué)習(xí)。很多人在學(xué)習(xí)STM32中,都想親自移植一下uC/OS,而不是總是用別人已經(jīng)移植好的。在我學(xué)習(xí)uC/OS的過程中,查找了很多資料,也看過很多關(guān)于如何移植uC/OS到STM32處理器上的教程,但都不盡人意,主要是因?yàn)槭菚r間比較趕,無法靜下心開好房學(xué)習(xí),在一個月時間內(nèi)完成STM32的學(xué)習(xí)以及UIP、文件系統(tǒng)的移植還是比較辛苦和困難的。1首先需要從官網(wǎng)上下載UC/0S的源碼,并且選擇STM32F103ZET6,由于官方?jīng)]有公布KEIL版本的工程只有IAR版本,所以需要進(jìn)行一定的修改才可用于KEIL中。UC/OS的文件結(jié)構(gòu)如下圖所示:YourApplicatio
9、nAPP.SSection5APP_VECT.CAPP-CFG.HINSLULES.HOS_CFG.HSection2ARMCortex-M3/TargetBoardFigure1-1,Relationshipbetweenmodules.2按照下圖的文件結(jié)構(gòu)搭建uC/OS工程文件結(jié)構(gòu)白“白.自“S-白“STARTUP匸ODE園st日rtLip_5trn王USER園main.c園stm32fl0x_it.iFWlib匡5tm32fl0x_rci想stm32fl0x_g|cggstm32fl0x_us匡misc.c閣stm32f!0x_dr固stm32fl0x_ad匡5tm32fl0x_sp園s
10、tm32fl0x_flaCMSISSS"-、.s-m-.s-.s-.E-.s-.s-.s-園蟲園園蠱園園蟲os_cfg_app.cO5_core.cos_dbg.cos_flag.cos_int.cos_mem.cO5_msg.c05mutex,c$當(dāng)|os_pend_mulim-:s-:l±l-:E-:s-:l±l-:s-:l±l-m-禽:-S-I:剳O5_prio.c:打os_q.c匡os_sern.c園os_stat.c匡os_task.c盤|os_tic:k.c圉os_tirne.c園os_tmr.c園os_var.cuCXPorts園os_cp
11、ui_a.asrT園os_cpu_c.c-、uCPort5“國O5_cpu_a.asrr由適os_cpu_c.c-、.uCXUB創(chuàng)適lib_ascii.c由“園lib_math.c由園lib_mem.c畝“園lib_str.c-、.uCCPU田園cpu_core.c國cpu_a.asm莊“園cpu_c.cuCCfg由“園os_app_hook-、.Readme“口readme.txt 把LED工程所在的文件夾先改名為:STM32+UCOS 在USER文件夾下新建includes.h頭文件。 按照之前給的uC/OS-II文件結(jié)構(gòu)圖,我們在工程的根目錄下建立BSP文件夾、APP文件夾和uCOS-I
12、I文件夾。BSP文件夾存放外設(shè)硬件驅(qū)動程序。APP文件夾存放應(yīng)用軟件任務(wù)uCOS-II文件夾uC/OS-II的相關(guān)代碼 把USER文件夾下的led.h和led.c文件剪切到BSP文件夾里。在BSP文件夾里新建BSPc和BSPh文件。 在APP文件夾下建立app.h、app.c和app_cfg.h文件??截恥C/OS-II源代碼附件那里的MicriumSoftwareEvalBoardsSTSTM32F103ZE-SKIAROS-Probe-LCDos_cfg.h到此目錄。 把uC/OS-II源代碼附件那里的MicriumSoftwareuCOS-II下的Source文件夾復(fù)制到工程里剛才新建的
13、uCOS-II文件夾里。把MicriumSoftwareuCOS-IIPortsarm-cortex-m3Generic'IAR下的文件復(fù)制到工程uCOS-II文件夾中新建的Ports文件夾里。復(fù)制后,選中全部文件,右鍵一一屬性去掉只讀屬性確定。如下圖添加includepath01W血e旺嫌/0NI/BSSOM-Jap#0Nwdsogap#raw血eutlnl旺嫌/0Nulx3J.nl/rsoM-Jap#墨叢旺嫌/oNl/BI/rsofap#疑旨旺題0NUJxocfiwsoM-Jap#0NUJOV1U.SOfap#KIME氷、rafinn社Ezfzs,«血eutlnlZW8I
14、S0二.640so忌迤£I*7soCJn0M區(qū)mMtni':':l8n6w_l500mndo-CJgtnoom3nos=l5oom£od蘭lsoom営lsoomd歲_L5啟邛qlMd#u匚!q_IMd”工山歲5_5著E3Mlllud(DPZ3U匚-m-'Q.EOCJdn-sIn-CIquJASo!onl!nlaJoQJd(Dd+古/CJ4心Mnhilu-l-ilmd4rft4h一4釣自1u>空IbrJLUQ占比-芯5u.o4do口岳q呂一駆一蕭<>溯d-CLIH呂口Pu-M5UA5sool5ra2LJCI匸vddnqQJd匸需匚p-
15、QJdm狗>#defineOS_TMR_EN0禁用定時器#defineOS_DEBUG_EN0禁用調(diào)試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()及如下圖的文件注釋掉#definedefine#define#definedefineO5_CPU_CT!3_NVIC_5T_CTF1OSCPUCMGJ
16、'IVICSTRELOADOs2cPu2cM3_NVIC_ST_CURRENTOSCPUCM3頁Ic2pRIO_ST(*(volatile(*(volatile(*(volatileINT32UJOxEOOOEOlO)INT32U*)0xE000E014)INT32U*)OxEOOOEO18)INT32UOxEOOOEOlC)f*f(volatileIWTSU*jOxEOOOED23)110x000100000x00000004OxOOOOOOOZOxOODDDOOlOxFF#defineOS_CPU_CM3_NVIC_5T_CTRL_COUWTdefine飴JTJICSTCTRLCL
17、K_SRC# defineOscPU【CII:3nVTRL_INTEN# define#defineOS_CPUCH31'IVICPR10HINd修改os_cpu_a.asm由于編譯器的原因要將下面的PUBIC改為EXPORT:PUBLICOS_CPU_SR_Save;FunctionsdeclaredinthisfilePUBLICOS_CPU_SR_RestorePUB匚CossorllHighRdyPUB匚COSQXSWPUB匚COSImQXSWPUBLICOSICPUIPendsvHand-ere覇埒osldbgc#d2ineOSCOMPPEROPTroot#d2ineOSCO
18、MPPEROPT、roof覇sfStartuplstln32floxlhd.s岡甘料%詢需酣油逮恿HSttCMSIS召sQrHUPsrm32floxhd.s齋甘DI些墾令s、併弟血isMOSICPUISysTickHand-ero刮startuplstm32floxlhd.s)<F>=l=>、PendSV召回Mffl前XpendsvHand-er、岡兵汨證CE耳血圧皆pendsvHand-erssBmBoscpupendsvHand_ers凹。菱JIflinc-udes.h#ifndefINCLUDESH#defineINCLUDESH#inc-ude=stm32flox.h
19、=12粘SK>P匸<s遐迪ftms屋、GLUS缶ds>D匚SO'AOUnbLL.E2SAS)6匸uco>p匸<s)(po>七u>p匸<spo>亠>ms懸口曙qlui*、o6匸UGOOIdoQ'LUl>粘直骰芳匸Ms遐迪ftm喪懸*、o七u>p匸Ms>乏CN卜只-H-營塢張鱗區(qū)*、O七UIEZSAS)(po>七UIds8po>1Z.Spnpu=pnpw#u.dsoa即®HsLUQrrDNI、七PUQ#檢國伺兇eqlu、1:.p=pnpu_#檢國嫌史圧旺、上.ddapnpw#檢國S氷
20、ffi堅(jiān)映比mwlzdsE0pnpu_#:儀水檢國塢IIso、:Dn、>lf:=lsoon=pnpu_#氷史粘直骰芳匸SAS、上.§xo<l4CNmE0pnpu_#Bsp.h#ifndefBspH#defineBspHvoidsysTicklinit(void)jvoidBSPIInit(void)j#endif、BSPH菱JIflmain.c#inc-ude=inc-udes.h=staticOSSTKsQrHUPtasksHSTARTUPTASKSTKsNEb冷kintmain(void)亠BspInitoOSInitoOSTaskcreatecrasklLEDAVO
21、id*pststartuptaskstk-STARTUPTASKSTKSIZElLSTARTUPTASKPRIO)osstartoreturno至此,UC/OS的移植已經(jīng)完成,運(yùn)行多任務(wù)只需在APP.C里修改即可。限于篇幅,一下不再贅述,詳情請看源碼。235.文件系統(tǒng)的移植與文件系統(tǒng)基本函數(shù)的功能1)SDIO配置與SD卡實(shí)現(xiàn):a.SDIO接線如下圖所示:b.SDIO時鐘設(shè)置:4.124.124.124.124.124.12PC1Openys-PD23V3O-PC12PCS氏PC9%PD2-PC12PC8PC910Kohm10KohmR1WV1O4K12345673DATA2CD/DATA3CM
22、DVDDCLKVSSDATAODATA1TFCardSDIO_CK時鐘是通過PC12引腳連接到SD卡的是SDIO接口與SD卡用于同步的時鐘。SDIO選配器掛載到AHB總線上,通過HCLK二分頻輸入到適配器得到SDIO_CK的時鐘,這時SDIO_CK=HCLK/(2+CLKDIV)。其中CLKDIV是SDIO_CLK(寄存器)中的CLKDIV位。另外,SDIO_CK也可以由SDIOCLK通過設(shè)置bypass模式直接得到這時SDIO_CK=SDIOCLK二HCLK??梢酝ㄟ^以下函數(shù)進(jìn)行時鐘配置SDIO_Init(&SDIO_InitStructure);對SD卡的操作一般是大吞吐量的數(shù)據(jù)傳
23、輸,所以采用DMA來提高效率,SDIO采用的是DMA2中的通道4。在數(shù)據(jù)傳輸?shù)臅r候SDIO可向DMA發(fā)出請求。c.SDIO協(xié)議驅(qū)動聲明:由于原來沒有了解過SD協(xié)議,又看到SDIO的驅(qū)動有2000多行,時間緊迫,感覺無從下手。故采用ST公司官方驅(qū)動。以下簡要介紹所用到的函數(shù)的功能SDIO_SendCommand(&SDIO_CmdInitStructure);/配置和發(fā)送命令SDIO通過CMD接收到響應(yīng)后,硬件去除頭尾的信息,把commandindex保存到SDIO_RESPCMD寄存器,把a(bǔ)rgumentfield內(nèi)容保存存儲到SDIO_RESPx寄存器中。這兩個值可以分別通過下面的庫
24、函數(shù)得到。SDIO_GetCommandResponse();/卡返回接收到的命令SDIO_GetResponse(SDIO_RESP1);卡返回的argumentfield內(nèi)容SD匚的多塊寫人時序圖Fro<ncard1ohos-lCMD-DATcommandresponsedatablockcrcblackwriteoperation.dgilafroirtocardcitokre-spantBandbusyfromtomultipleblcickwritsoperationcommandresponsedatablockcrcbusy卡datastopatipnkslopoamman
25、dslopsdata丁也門曠Figure3-4;(Multiple)BlockWriteOperationd.SDIO_Init()函數(shù):1) 用GPIO_Configuration()進(jìn)行SDIO的端口底層配置2) 分別調(diào)用了SD_PowerON()和口SD_InitializeCards()函數(shù),這兩個函數(shù)共同實(shí)現(xiàn)了上面提到的卡檢測、識別流程。3) 調(diào)用SDIO_Init(&SDIO_InitStructure)庫函數(shù)配置SDIO的時鐘,數(shù)據(jù)線寬度,硬件流(在讀寫數(shù)據(jù)的時候,開啟硬件流是和很必要的,可以減少出錯)4) 調(diào)用SD_GetCardInfo(&SDCardInfo
26、)獲取sd卡的CSD寄存器中的內(nèi)容,在main函數(shù)里輸出到串口的數(shù)據(jù)就是這個時候從卡讀取得到的。5) 調(diào)用SD_SelectDeselect()選定后面即將要操作的卡。6) 調(diào)用SD_EnableWideBusOperation(SDIO_BusWide_4b)開啟4bit數(shù)據(jù)線模式如果SD_Init()函數(shù)能夠執(zhí)行完整個流程,并且返回值是SD_OK的話則說明初始化成功,就可以開始進(jìn)行擦除、讀寫的操作了。下面進(jìn)入SD_PowerON()函數(shù),分析完這個函數(shù)大家就能了解SDIO如何接收、發(fā)送命令了。e.SDIOIint()中使用的函數(shù):SD_PowerON函數(shù):確保SD卡的工作電壓和配置控制時鐘
27、SD_InitializeCards:初始化所有的卡或者單個卡進(jìn)入就緒狀態(tài)2)FATFS文件系統(tǒng)的移植FATFS是面向小型嵌入式系統(tǒng)的一種通用的FAT文件系統(tǒng)。FATFS完全是由AISIC語言編寫并且完全獨(dú)立于底層的I/O介質(zhì)。因此它可以很容易地不加修改地移植到其他的處理器當(dāng)中,如8051、PIC、AVR、SH、Z80、H&ARM等。FATFS支持FAT12FAT16FAT32等格式,利用前面寫好的SDIO驅(qū)動,把FATFS文件系統(tǒng)代碼移植到工程之中,就可以利用文件系統(tǒng)的各種函數(shù),對已格式化的SD卡進(jìn)行讀寫文件了。首先從官網(wǎng)下載FATFS源碼,然后解壓到工程文件中,并添加到工程中jEC
28、tQX-!SDIO-DEMO-;startupQUSERmainxFtm32flOxuwrtlxsdnrd.cdiskjo.cff.c下面對FATFS的文件做說明:integer.h:是一些數(shù)值類型定義diskio.c:底層磁盤的操作函數(shù),函數(shù)需要用戶自己實(shí)現(xiàn)ff.c:獨(dú)立于底層介質(zhì)操作文件的函數(shù),完全由ANSIC編寫CC936.C:簡體中文支持所需要添加的文件,包含了簡體中文的GBK和轉(zhuǎn)換函數(shù)。ffconf.h:這個頭文件包含了對文件系統(tǒng)的各種配置如需要支持簡體中文要把_CODE_PAGE的宏改成936并把上面的CC936.C文件加入到工程之中移植過程中要修改的文件1、將integer.h中
29、有關(guān)BOOL的那句注釋掉/BOOLassigri_drives(intargc,char*argv;/*addbyfire*/2、在ff.c文件的開頭重新定義一個布爾變量,取名為bool,與stm32f10x.h中的名字一樣:ypedefenumFALSE=TRUE=!FALSE:-rjool;/*addbyfire*/#includeT,s:tm32f10x.hT,/*addbyfire*/同時在ff.c的第585行做如下修改:staticFRESULTdir_nextDZRPjf/*/BOOLstreachjjoolstreac:h(/*FR_OK:SucceededjrFR_NO_Poi
30、ntertodirectoryohject/*FALSE:Donotstreachta;/*addbyfire*/文件系統(tǒng)移植成功!卜面介紹文件系統(tǒng)中的幾個底層函數(shù):a. 文件系統(tǒng)初始化函數(shù)接口的實(shí)現(xiàn)DSTATUSdisknitialize(BYTEdrv/*Physicaldrivenmuber(0.)*/)SD_ErrorStatus;/*Supportsonlysingledrive*/if(drv)returnSTA_NOINIT;/*SDInit*/Status=SD_Init();if(Status!二SD_OK)returnSTA_NOINIT;elsereturnRES_OK;
31、這個函數(shù)調(diào)用了SDIO的SD_Init()函數(shù),返回成功或失敗的參數(shù),當(dāng)文件系統(tǒng)調(diào)用到這個函數(shù)的時候,實(shí)際上是調(diào)用了SD_Init()對SD卡進(jìn)行初始化。b. 扇區(qū)讀取函數(shù)的實(shí)現(xiàn):DRESULTdisk_read(BYTEdrv,/*Physicaldrivenmuber(0.)*/BYTE*buff,/*Databuffertostorereaddata*/DWORDsector,/*Sectoraddress(LBA)*/BYTEcount/*Numberofsectorstoread(1.255)*/)if(count>1)SD_ReadMultiBlocks(buff,secto
32、r*BLOCK_SIZE,BLOCK_SIZE,count);/*CheckiftheTransferisfinished*/SD_WaitReadOperation();循環(huán)查詢dma傳輸是否結(jié)束/*WaituntilendofDMAtransfer*/while(SD_GetStatus()!=SD_TRANSFER_OK);elseSD_ReadBlock(buff,sector*BLOCK_SIZE,BLOCK_SIZE);/*CheckiftheTransferisfinished*/SD_WaitReadOperation();循環(huán)查詢dma傳輸是否結(jié)束/*Waituntilend
33、ofDMAtransfer*/while(SD_GetStatus()!=SD_TRANSFER_OK);returnRES_OK;此函數(shù)分為了2個部分,分為單塊讀取和多塊讀取數(shù)據(jù),因?yàn)槭褂肧D_ReadMultiBlocks比SD_ReadBlock(速度要快所以加入了一個判斷函數(shù)來區(qū)分以增加系統(tǒng)的效率。由于文件系統(tǒng)都是以塊(512字節(jié))為單位讀寫的所以只要提供512字節(jié)或者512*N字節(jié)的SD卡驅(qū)動即可。c. 扇區(qū)寫入函數(shù)的實(shí)現(xiàn):DRESULTdisk_write(BYTEdrv,/*Physicaldrivenmuber(0.)*/constBYTE*buff,/*Datatobewri
34、tten*/DWORDsector,/*Sectoraddress(LBA)*/寸zOSIJJM三己亠聯(lián)坡録地平ps麗OPS期她、bo缶ll-snvmiq's丄OSEES環(huán)OQ'S)壬M聯(lián)祖1遁gp期枷、ouo甩do七M(jìn)七pmq's>p一ISC匸s-Q4sueJ_一R4一>PQLD*、aluzis>do8LlJZIS>DOoa-Lot;sitnq(*181US)>PO_8七M(jìn)Q'S)s-亠聯(lián)坡録地平ps麗OPS期她、bo缶ll-snvmiq's丄OSEES環(huán)OQ'S)壬M聯(lián)祖1遁PEP第二ouo電do七M(jìn)七pmq
35、39;s>p一ISC匸s-Q4sueJ_一R4一>PQLD*、i?unooL1JZIS>DO8LlJZIS>DOoa-Lot;sitnq(*81us)s>po_oaQ_n乏七M(jìn)Q'S)(t人lunoo)七>(SSCN:<I)七m2sot;s40QqlunN*、lunooLU1A8#endif/*READONLY*/*/*/*/*MiscellaneousFunctionsDRESULTdisk_ioctl(BYTEdrv,/*Physicaldrivenmuber(0.)*/BYTEctrl,/*Controlcode*/void*buff/*
36、Buffertosend/receivecontroldata*/)returnRES_OK;扇區(qū)寫入函數(shù)與扇區(qū)讀取函數(shù)十分相似也是根據(jù)寫入扇區(qū)的數(shù)目是一個還是多個來分別調(diào)用不同的SD數(shù)據(jù)塊寫入函數(shù)。d.時間接口函數(shù)DWORDget_fattime(void)return0;這個函數(shù)在本系統(tǒng)中意義不大,所以并未添加實(shí)際功能。到這里FATFS的移植與文件系統(tǒng)的基本函數(shù)介紹已經(jīng)完成。下面將介紹Uip及socket實(shí)現(xiàn)方法.346.Uip及socket實(shí)現(xiàn)方法ENC28J60模塊與STM32F103ZET6連接PB13:ENC28J60-INTPA6-SPI1-MISO:ENC28J60-SOPA7
37、-SPI1-MOSI:ENC28J60-SIPA5-SPI1-SCK:ENC28J60-SCKPA4-SPI1-NSS:ENC28J60-CSPE1:ENC28J60-RSTENC28J60模塊電路圖:3V3Qj|iHt4PE44.67,8,9PA64.67.8,9PA74,5,67,8.9PA54g9PA44,7PE1IPE4*<PA4P朋*PA7OohmR21思&而i-vvvPE10TTR22心英miFR23常TPIZ+VCAiPVDDvssLEDACLKOUTLEDBINTVDDOSCINCOSC2SOOSC1SilVSSOSCSCKVSSPLLGSVDDIPLLRESET
38、VDDRXVSSRXVSSTXTPUN-TPOUT+TPHN+TPOUTRBIASVDDTXU13EING2&J6012S'互7282726252423I?T§11877更R尹也"LEDAR兩押jKohmLEDBO3V3zzOSC2OSC1-HD3V3l,TPOur+R32TPOUT-R33_O3V3冊戶ohmAAArC2701)1uFR242K4ohmi01uF20pFD18ENC28J60簡介ENC28J60是帶有行業(yè)標(biāo)準(zhǔn)串行外設(shè)接口(SerialPeripheralInterface,SPI)的獨(dú)立以太網(wǎng)控制器。它可作為任何配備有SPI的控制器的以太網(wǎng)
39、接口。ENC28J60符合IEEE802.3的全部規(guī)范,采用了一系列包過濾機(jī)制以對傳入數(shù)據(jù)包進(jìn)行限制。它還提供了一個內(nèi)部DMA模塊,以實(shí)現(xiàn)快速數(shù)據(jù)吞吐和硬件支持的IP校驗(yàn)和計(jì)算。與主控制器的通信通過兩個中斷引腳和SPI實(shí)現(xiàn),數(shù)據(jù)傳輸速率高達(dá)10Mb/s。兩個專用的引腳用于連接LED,進(jìn)行網(wǎng)絡(luò)活動狀態(tài)指示。ENC28J60由七個主要功能模塊組成:1. SPI接口一一充當(dāng)主控制器和ENC28J60之間通信通道。2. 控制寄存一一用于控制和監(jiān)視ENC28J60。3. 雙端口RAM緩沖一用于接收和發(fā)送數(shù)據(jù)包。4. 判優(yōu)一一當(dāng)DMA、發(fā)送和接收模塊發(fā)出請求時對RAM緩沖器的訪問進(jìn)行控制。5. 總線接口一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國威士忌市場銷售渠道與營銷趨勢預(yù)測報(bào)告
- 2024年獨(dú)家:影視作品版權(quán)許可使用協(xié)議
- 2024年特許經(jīng)營合同實(shí)務(wù)操作
- 2024年版企業(yè)間技術(shù)咨詢合同
- 茅臺學(xué)院《公共關(guān)系案例精講》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年智能監(jiān)控系統(tǒng)設(shè)備安裝協(xié)議版B版
- 2024年度內(nèi)河化學(xué)品運(yùn)輸安全責(zé)任合同模板下載3篇
- 2024年生態(tài)農(nóng)業(yè)自建房產(chǎn)權(quán)轉(zhuǎn)移協(xié)議3篇
- 2025廢品回收合同
- 2024年標(biāo)準(zhǔn)電腦維修服務(wù)承諾合同范本版B版
- 養(yǎng)殖水環(huán)境化學(xué)全套教學(xué)課件
- 《大慶精神-鐵人精神》課件wanzheng
- 危險(xiǎn)廢物管理臺賬(空白表4張)
- 飼養(yǎng)寵物兔子知識培訓(xùn)課件
- 道路鏟雪除冰合同
- 慢性胰腺炎診治指南
- 機(jī)械設(shè)備租賃報(bào)價(jià)單
- 自動化生產(chǎn)線安裝與調(diào)試實(shí)訓(xùn)報(bào)告
- 科研誠信教育專項(xiàng)培訓(xùn)
- “雙減”背景下如何優(yōu)化農(nóng)村小學(xué)數(shù)學(xué)作業(yè)設(shè)計(jì)
- 中國移動網(wǎng)絡(luò)長述職報(bào)告
評論
0/150
提交評論