版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
文檔說明關(guān)于模塊ATGM332D的硬件參數(shù)請參考文檔《ATGM332D-5N導(dǎo)航模塊用關(guān)于NMEA傳輸協(xié)議請參考文檔《CASIC多模導(dǎo)航協(xié)議規(guī)范.pdf》。關(guān)于如何修改模塊的配置見文檔《GNSSToolKit_Lite簡裝版程序說明.pdf》。 安裝USB轉(zhuǎn)串口驅(qū) NMEA 流 配置DMA串 BH-ATGM332D模塊BH-ATGM332D簡BH-ATGM332DGPS、北斗雙模定位模塊。它采用微電子公司的ATGM332D-5N-31模組方案,可以通過串口向單片機(jī)系統(tǒng)和電腦輸出GPS及北斗,使用簡單方便,其外觀見圖1-1。1-1BH-ATGM332DGPS產(chǎn)品特性參支持輔助GNSS2.5米(圓概率誤差0.5冷啟動:≤32s(1-預(yù)留有TTL3.3/5V電平標(biāo)準(zhǔn),默認(rèn)為(1-2GPSBH- 模塊引腳說12312345時間脈沖信號線,模塊接收到GPS時間信息后,輸出可調(diào)節(jié)的脈沖信號,默認(rèn)為1Hz,脈沖上升沿與UTC時間對齊模塊資源及配套天1-3BH-ATGM332DGPSGPSGPS有源天AxialFilterInsertionEx-band2.7-5V表1-4模塊資源15N-31 2XH414法拉電容,參數(shù)為:3.3V0.07F。它的功能和鋰電池一樣,在主電源掉電的時候可以為定位模塊的RTC部分供341-4BH-ATGM332DGPS模塊及其配套的有源天線表1-5BH-ATGM332D配套有源天線參數(shù)RG17496RadomeMounting-40℃~RelativeUpto10to55Hzwith1.5mmamplitudeEnvironmentally模塊原理2-1PDF文檔,也可查看配套資料里的《BH-ATGM332D定位模塊原理圖.pdf》文件。模塊尺寸硬件測
主要是準(zhǔn)備好USB轉(zhuǎn)串口TTL模塊和對應(yīng)的驅(qū)動及秉火多功能調(diào)試助手。準(zhǔn)備開發(fā)環(huán)USBTTLBH-ATGM332D模塊,然后使用秉USBBH-ATGM332D模塊使用串口通訊,且通訊引腳電平為TTL類型,所以與電腦通訊時需要使用USBTTL的串口線作為媒介,下面以我們推薦的CH340USBTTL線為例進(jìn)行說明,見圖4-1。4-1USBTTL該串口線的驅(qū)動為CH340,在使用前需要給電腦安裝好驅(qū)動,在BH-ATGM332D模塊配套資料壓縮包的“配套軟件”XP、WIN7、WIN10,非XP用戶使用用管理員安裝即可。安裝完成后,把USB轉(zhuǎn)TTLUSB轉(zhuǎn)串口驅(qū)動安裝成功,那么可在計算機(jī)->管理->設(shè)備管理器->端口中可查看識別到串口,具體見圖4-2。秉火多功能調(diào)試助手(必須為1.2.0版本或以上BH-ATGM332D模塊,秉火提供了多功能調(diào)試助手軟件。配BH-ATGM332DUSBTTL線傳回的原始信息,并對這些信息進(jìn)行,得到時間、、海拔等數(shù)據(jù),并根據(jù)得的結(jié)果在地圖Windows系統(tǒng)組件.NetFramework4.0。軟件中使用的地圖需要聯(lián)網(wǎng)使用,在沒有網(wǎng)絡(luò)的情況下,軟件中的地圖部分4-3,1.2.0或以4-31.2.0版本(GPS界面GPSBH-ATGM332DUSBTTL線連接到電腦,見圖4-4,該軟件即可檢測到新的COM口(若沒有檢測到COM口,請檢查CH340驅(qū)動程序是否正確安裝)USBTTLCOM口,及默認(rèn)9600,然后點擊“打開串口”按鈕,即可接收到定位模塊傳回的信息,見圖4-5。4-4USBTTL除了實時由定位模塊傳回的信息,本軟件還支持對GPS日志文件(也支持北斗,下同)。GPS日志文件即保存了原始定位數(shù)據(jù)信息的文件,使用本軟件從定位模塊接收到這些信息后,可以把這些原始數(shù)據(jù)以TXT文本格式保存起來,得到GPS日志文件,方便以后使用。在使用日志文件時,點擊控制面板中的“GPS日志文件”加載該文GPS日志文件“gpslog.txt”,用戶可以使用它來測試軟件的功能,加載該文件后,軟件會輸出GPS結(jié)果并在地圖上標(biāo)注日志中記錄的位置,見圖4-6。圖4-6GPS日志文BH-ATGM332D使用USB轉(zhuǎn)串口TTL線連接電腦與BH-ATGM332D模塊,并給模塊連接上有源天線。正常時,模塊上的紅色時間脈沖指示燈亮,在調(diào)試助手軟件上打開USB轉(zhuǎn)串口TTL線協(xié)議格式)。輸出的數(shù)據(jù)一般會出現(xiàn)兩種情況,見圖4-7。圖4-7信號差與信號良好時的定位數(shù)GPS數(shù)據(jù)信息數(shù)據(jù)間有很多連續(xù)的“逗號”,而下圖中逗號與逗號之間一般是有數(shù)字的,它們分別對應(yīng)了GPS信號差與GPS信號良好的狀況。如果模塊上電后輸出的數(shù)據(jù)長期處于第一種狀態(tài),應(yīng)考慮轉(zhuǎn)移一下定位模塊天線的位置,一般在室內(nèi)信號會比較差,可到室外空曠的地方測試(如樓頂、陽臺、窗邊),另外,秉火多功能調(diào)試助手加載的地圖是需要在聯(lián)網(wǎng)的時候才能正常使用的,所以在室外無網(wǎng)絡(luò)的地方,測試時可把定位數(shù)據(jù)以文件格式保存起來,在聯(lián)網(wǎng)的情況下再加載定位。GPS模塊正常了,當(dāng)然,軟件在地圖上標(biāo)注出當(dāng)前地點才是我們特別地,BH-ATGM332D4-8中的三種狀態(tài),該數(shù)據(jù)形如“$GPTXT,01,01,01,ANTENNA狀態(tài)*無關(guān)數(shù)字”的格式。圖4-8定位模塊的天線狀態(tài)確保天線處于OK狀態(tài)。坐標(biāo)系及糾坐標(biāo)系不同而導(dǎo)致的偏移問BH-ATGM332D模塊采用NMEA-0183協(xié)議輸出,這些定位的信息采為解決上述問題,需要找到對應(yīng)電子地圖對外提供的API,如地圖開放平臺提供了API,見:http: /jsdemo.htm#a52調(diào)用“原始坐標(biāo)轉(zhuǎn)換成坐標(biāo)”的API,并給API輸入WGS-84坐標(biāo)系的,才 秉火多功能調(diào)試助手糾偏說 圖4-9使用秉火多功能調(diào)試助手并定圖4-10直接使用提供的坐標(biāo)反查系統(tǒng)定 1vargpsPoint=newBMap.Point(Longitude,Latitude);3gps坐標(biāo)糾4//真實轉(zhuǎn)成坐5BMap.Convertor.translate(gpsPoint,0, NMEA-0183協(xié)NMEA-0183NMEA是國家海洋電子(NationalMarineElectronicsAssociation)為海用電子設(shè)備制定的標(biāo)準(zhǔn)格式,目前已經(jīng)成為了GPS導(dǎo)航設(shè)備統(tǒng)一的RTCM標(biāo)準(zhǔn)協(xié)議,本模塊使用的NMEA4.0版本協(xié)議支持GPS、北斗、海格等。NEA0183一套義輸出標(biāo)準(zhǔn)信,幾種不同格式每種是獨立AI30100擇輸出,最常用的格式為A",它包含了定位時間,緯度,經(jīng)度,高度,定位所用的衛(wèi)星數(shù),OP狀和正段,他有速,日等NEA。NMEA- 常用語句格式說定位模塊使用NMEA協(xié)議輸出的原始數(shù)據(jù)形如:5-1NMEA${,數(shù)值$ZDA語句主要表示時間和日期信息,此處表示:2017年01月日時分秒始NMEA語句的數(shù)據(jù)段為信息主體,不同類型的語句用于傳輸不同類型的,其語句類型又分為兩部分,如GNZDA前面兩個字符GN用于區(qū)分,其它類型的還有中國北斗(BD)、GPS(GP)、俄羅斯GLONASS(GL),見表5-2。表5-2發(fā)送器類P其中GN標(biāo)識符比較特殊,當(dāng)發(fā)送器具有多模功能時(即同時支持一個以上的定位系統(tǒng)),系統(tǒng)會把各系統(tǒng)的信息整合、處理后,再把這些綜合信息采用GN作為標(biāo)識符發(fā)送GNZDA語句,在這樣的系統(tǒng)中,GP、BD等標(biāo)識符僅用于表示對應(yīng)系統(tǒng)的信息,如GPGSA和BDGSA語句分別用于表示GPS系統(tǒng)NMEA-0183GGA、RMC、VTG、GLL、ZDA、GSA、GSV等。下面給出這些常用NMEA-0183語句的字5-3語句 hh——校驗和(checksum),$與*ASCII碼的校驗和(各字節(jié)做異或運算,得到校驗和后,再轉(zhuǎn)換16進(jìn)制格式的ASCII字符。) GPS固定數(shù)據(jù)輸出語句(Globalpositioningsystemfixdata)。 緯度半球,N或S(北緯或南緯 <10>高度單位,M<11>大地橢球面相對海平面的高度(-999.9<12>高度單位,M<13>差分GPS數(shù)據(jù)期限(RTCMSC-104)RTCM<15>推薦最小數(shù)據(jù)量的GPS信息( mendedMinimumSpecificGPS/TRANSITData)。$ 緯度半球N(北半球)或S(南半球 經(jīng)度半球E(東經(jīng))或W(西經(jīng) <11>Declination,磁偏角方向,E(東)W(西<12>ModeIndicator,模式指示(NMEA01833.00版本輸出,A=自主定位,D=<13>NavStatus,導(dǎo)航狀態(tài)標(biāo)示符(V表示系統(tǒng)不輸出導(dǎo)航狀態(tài)信息<14>格式:$ <10>定位地理信息(Latitudeandlongitudewithtimeofpositionfixand格式:$ 格式:$ GPS精度指針及使用(GNSSDOPandActiveSa 1212顆時不足的區(qū)域補(bǔ)空 HDOP水平精度因子(0.5 VDOP垂度因子(0.5- 0} 總的GSV 當(dāng)前GSV 0},01至 NMEA了解了NMEA格式有之后,我們就可以編寫相應(yīng)的程序了,而程序員Tim )提供了一個非常完善的NMEA庫,在以下可以到:,直接使用該庫,可以避免重復(fù)發(fā)明的工作。在秉火提供的GPS模塊資料的“NMEA0183庫源碼”文件夾中也包含了該庫的源碼,秉火提供的STM32程序就是使用該庫來NMEA語句的。該庫目前為0.5.3版本,它使用純C語言編寫,支持windows、winCE、UNIXGPGGA,GPGSA,GPGSV,GPRMC,GPVTG這五種語句(這五種語句已經(jīng)提供足夠多的GPS信息),解析得的GPS數(shù)據(jù)信息以結(jié)構(gòu)體,附加了地理學(xué)相關(guān)功能,可支持導(dǎo)航等數(shù)據(jù)工作,除了解析NMEA語句,它還可以根據(jù)隨機(jī)數(shù)產(chǎn)生NMEA語句,方便模擬。在該庫之上,秉火擴(kuò)展了其對NMEA-01834.0版本的支持。使用單片機(jī)系統(tǒng)控制BH-ATGM332D模通用控制說小節(jié)以秉火STM32開發(fā)板為例子說明如何使用STM32來控制BH-ATGM332D模塊。表6-1單片機(jī)與BH-ATGM332D模塊連接5V串口串口STM32開發(fā)板控制說連接模F103霸道、F103F407STM32表6-2秉火開發(fā)板與BH-ATGM332D模塊GPSGPSGPS注意:F103F407PA3/USART2_RXPA2/USART2_TX引腳與開發(fā)板上的MAX3232串口相連,為了防止引腳共用的影響,請把ISO板子左上角在表6-3中的跳線帽拔掉。表6-3要拔掉的12 秉火F429板子配套的例程,是通過STM32USART3BH-ATGM332D模塊表6-4秉火開發(fā)板與BH-ATGM332D模塊GPSGPSGPS程序簡
圖6-5定位模塊與F429者開發(fā)板連解壓秉火B(yǎng)H-ATGM332D資料后,在如下路徑可以找到配套各個開發(fā)板的例程:ATGM332D\2-開發(fā)板配套例程\。各個開發(fā)板配套例程的功能和定位模塊的驅(qū)動是基本一致的,只是不同平臺使用的引腳、液晶顯示部分稍有不同,根據(jù)自己使用的開發(fā)板,6-66-5圖6-6秉火各開發(fā)板配套BH-ATGM332D表6-5秉火B(yǎng)H-ATGM332D模塊配套例程說STM32開發(fā)板SD卡內(nèi)的GPS日志文件進(jìn)行,并把結(jié)果通過usart1輸出到電腦的串口不需要GPS模塊,把程序下的gpslog.txt文件到SD卡的根,并SD卡接入開發(fā)板,然后在電腦端使用串口調(diào)試助手(115200-N-8-1)可接收開使用STM32開發(fā)板通過GPSusart接口接收GPS模塊輸出的NMEA信息,并把結(jié)果通usart1輸出到電腦的串說明接入STM32開發(fā)板。然后使用串口調(diào)試助手可接收(115200-N-8-1)可接收開發(fā)板返回的GPS結(jié)果,在信號良好的使用STM32開發(fā)板通過GPSusart接口接收GPS屏?xí)敵鰷?zhǔn)確的時間、等信息。實驗現(xiàn)本程序?qū)Π遄由蟂D卡的gpslog.txt文件進(jìn)行(請確保卡內(nèi)有該文件),實驗時把USB線接入開發(fā)板的USBTOUART接口可接收開發(fā)板對GPS日志的信息,見圖6-7,串口調(diào)試助手顯示了接收到的信息。圖6-7GPS_Decode_SDCard實驗串口調(diào)試助手輸出的結(jié)助手會顯示出STM32后的實時,見圖6-8。圖6-8GPS_Decode_USART實驗串口調(diào)試助手載的液晶屏?xí)@示出實時的,見圖6-9。圖6-9GPS_Decode_LCD實驗屏幕截代碼分在本小節(jié)中分析如何使用NMEA庫GPS數(shù)據(jù)信息,秉火提供的GPS_Decode_SDCardGPS_Decode_USARTGPS數(shù)據(jù)信息的來源,前者從SD卡文件中獲取,后者從GPS通過串口模塊獲取,而它們獲取信息后的過程 例實驗描述及工程文件從板載SD卡的gpslog.txt文件加載GPS數(shù)據(jù)信息,使用NMEA庫,并把結(jié)果通過usart1輸出。nmealib/generatenmealib/gmathnmealib/parsenmealib/parsernmealib/sentencenmealib/timenmealib/tok流代碼7-1GPS_Decode_SDCardmain文1#include2#include3#include4#include56externvoidnmea_decode_test(void);8*@brief*@param*@retvalint{/*LED端口初始化 printf("\r\nGPS模塊測試?yán)蘚r\n");printf("\r\n本程序?qū)D卡內(nèi)的gpslog.txt文件定位日志數(shù)據(jù)進(jìn)行printf("\r\n若需要對GPS模塊串口傳回的數(shù)據(jù)printf("gps_config.h文件的宏GPS_LOG_FILEr\n"); /*GPS測試 while36 main函數(shù)先是用USART_Config初始化了調(diào)試串口,便于輸出GPS結(jié)果,使用GPS_ConfigGPSnmea_decode_test,它完成了整個流程,nmea_decode_test函數(shù)內(nèi)容見代碼7-2。代碼7-2nmea_decode_test函12/*gps_config.h文件中的宏3//定義這個宏,對SD卡上的gpslog.txt文件進(jìn)行4//不定義的話使用串口接收GPS56
7/*nmea_decode_test.c文件8//對SD卡上的gpslog.txt文件進(jìn)行;(需要在sd卡上存放gpslog.txt文件9 GPSLOG11FATFS12FIL13FRESULT14UINTbr,bw; /*FileR/Wcount*/16*@briefnmea_decode_testGPS文件信*@param*@retvalvoid{ deg_lat;//轉(zhuǎn)換成[degree].[degree]格式的 deg_lon;//轉(zhuǎn)換成[degree].[degree]格式的 nmeaINFO nmeaPARSER nmeaTIME //時 char /*盤符 res=f_mount(&fs,"0:",1); if(res!=FR_OK) printf("\r\n??!SD卡掛載文件系統(tǒng)失敗。SD卡 while /*打開記錄GPS信息的文件 res=f_open(&log_file,"0:gpslog.txt",FA_OPEN_EXISTING|FA_READ);if(!(res==FR_OK))printf("\r\n打開gpslog.txt文件失敗請檢查SD卡的 是否存放了gpslog.txt文件return /*設(shè)置用于輸出調(diào)試信息的函數(shù)nmea_property()->info_func=&gps_info; /*初始GPS數(shù)據(jù)結(jié)構(gòu) while{ f_read(&log_file,&buff[0],100,/*進(jìn)行nmea格式nmea_parse(&parser,&buff[0],br,&info);/*對后的時間進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成時間/*輸出得到的信息printf("\r\n時間%d-%02d- ,//info.latlon中的格式為//使用以下函數(shù)轉(zhuǎn)換成[degree].[degree]格deg_lat=deg_lon=nmea_ndeg2degree(info.lon);printf("\r\n緯度:%f,經(jīng)度printf("\r\n海拔高度:%f米printf("\r\n速度:%fkm/hprintf("\r\n航向:%f度info.direction);printf("\r\n正在使用的GPS:%d,可見GPS 正在使用的北斗:%d,可見北斗} /*GPS數(shù)據(jù)結(jié)構(gòu)/*關(guān)閉文件103 //對GPS模塊傳回的信息進(jìn)行nmea_decode_test.c文件的主體使用了“#if…#else…#endif”語句把代碼分成了兩部分,通過gps_config.h頭文件中的宏“GPS_LOG_FILE”來區(qū)分使用哪一部分代碼,當(dāng)定義了該宏時,nmea_decode_test函數(shù)對SD卡內(nèi)的日志文件進(jìn)行,若注釋了該宏的定義,則nmea_decode_test函數(shù)對串口接收到的GPS實時,本資料提供的三個工程都支持使用這個宏切換工作方式,默認(rèn)情況下GPS_Decode_SDCard工程定義了該宏,其余兩個工60while循環(huán)是本函數(shù)中最最重要的結(jié)構(gòu),每次循環(huán)開始前檢查是否已到文件尾,沒到文件尾即調(diào)用f_read函數(shù)GPS日志文件的內(nèi)容,緊接著調(diào)用NMEA庫函數(shù)nmea_parse進(jìn)行,的結(jié)果存放在數(shù)據(jù)結(jié)構(gòu)變量info中,由于結(jié)果得到的時間信息是時間,所以在輸出結(jié)果前,調(diào)用了GMTconvert函數(shù)把它轉(zhuǎn)化成北75-80nmea_ndeg2degreeinfo.latinfo.lon參數(shù)轉(zhuǎn)化到了deg_lat和deg_lon變量中。info.lat及info.lon的就是緯度、經(jīng)度信息,但它們的單位是[degree][min].[sec/60]格式,即NMEA語句后的原始ddmm.mmmm表示的數(shù)據(jù),結(jié)構(gòu)體nmeaPARSER和代碼7-2的第65行中,在調(diào)用nmea_parse函數(shù)時,輸入了四個參數(shù),其說明見表7-1。 上述參數(shù)中的parser及info變量的數(shù)據(jù)類型nmeaPARSER和nmeaINFO則是NMEA解碼庫特有的數(shù)據(jù)結(jié)構(gòu)。其中nmeaPARSER的定義見代碼7-3。代碼7-3nmeaPARSER數(shù)據(jù)結(jié)構(gòu)定typedefstruct_nmeaPARSERvoidvoidunsignedcharintint78} 可以看到,nmeaPARSER是一個鏈表,在時,NMEA庫會把輸入的GPS原始數(shù)據(jù)壓入到nmeaPARSER結(jié)構(gòu)的鏈表中,便于對數(shù)據(jù)管理及。在使用該結(jié)構(gòu)前,需要調(diào)用了nmea_parser_init函數(shù)分配動態(tài)空間,而結(jié)束時,調(diào)用了nmea_parser_destroy函數(shù)釋放分配的空間,見代碼7-3的第58和99行。NMEA庫良好的封裝特性使我們無需關(guān)注更深入的實現(xiàn),只需要再了解一下nmeaINFO數(shù)據(jù)結(jié)構(gòu)即可,所有GPS得到的結(jié)果都在這個結(jié)構(gòu)中,其結(jié)構(gòu)體定義見代碼7-4。代碼7-4nmeaINFO結(jié)構(gòu)體定1*SummaryGPSinformationfromallparsed*usedalsoforgeneratingNMEA*@see*@seenmea_GPGGA2info,typedefstruct_nmeaINFO /**<Maskspecifyingtypesoffromwhichdatahavebeenobtained*/ nmeaTIMEutc; /**<UTCofposition*/ /**<GPSqualityindicator(0=1=Fix;2=Differential,3=Sensitive) /**<Operatingmode,usedfor(1=Fixnotavailable;2=2D;3=3D)double /**<PositionDilutionOfPrecisiondouble /**<HorizontalDilutionOfPrecisiondoubleVDOP; /**<VerticalDilutionOfPrecision*/double /**<LatitudeinNDEG-+/-[degree][min].[sec/60]doublelon;/**<LongitudeinNDEG-+/-[degree][min].[sec/60]double /**<Antennaabove/belowmeansealevel(geoid)inmetersdouble /**數(shù)值對地速度,單位為節(jié)double /**<Speedoverthegroundinkilometers/hourdoubledirection;/**<TrackangleindegreesTruedoubledeclination;/**<Magneticvariation(Easterlyvar.subtractsfromtruecourse) /**字符定位模式標(biāo)志(A自主模式D差分模式E估算模式N數(shù)據(jù)無效nmeaSATINFOsatinfo;/**< litesinformationnmeaSATINFOBDsatinfo;/**北斗 intchar38} 7-2nmeaINFO接收到的GPS 度][分].[秒/60]度][分].[秒/60],,分配堆??沼捎贜MEA庫在進(jìn)行時需要動態(tài)分配較大的空間,所以我們需要在STM32的啟動文件startup_stm32f10x_hd.s文件中對堆??臻g進(jìn)行修改,本工程中設(shè)置的棧空間大小設(shè)置為0x ,堆空間大小設(shè)置為0x00001000,見代碼7-5。代碼7-5啟動文件中對堆空間的配;Amountofmemory(inbytes)allocatedfor;Tailorthisvaluetoyourapplication;<h>Stack <o>StackSize(inBytes)<0x0-;6 STACK,NOINIT,READWRITE, 13;<h>Heap14 <o>HeapSize(inBytes)<0x0-15;17Heap_Size HEAP,NOINIT,READWRITE, GPS_Decode_USARTGPS_Decode_USARTUSARTGPS模塊輸出的原始信息,并把結(jié)果使用USART1輸出。本例程與GPS_Decode_SDCard例程直接從SDGPS數(shù)據(jù),因此需要協(xié)調(diào)好接收數(shù)據(jù)和數(shù)據(jù)的關(guān)系,秉火例程使用DMA串口緩沖區(qū)方案,解決了nmealib/generatenmealib/gmathnmealib/parsenmealib/parsernmealib/sentencenmealib/timenmealib/tokDMA串先來閱讀GPS_Decode_USART例程的main文件,見代碼7-6,它與GPS_Decode_SDCard23GPS_Config函數(shù),它對與定位模塊連接的USART串口進(jìn)行初始化,以便于接收GPS模塊的信息。1#include2#include3#include4#include56externvoidnmea_decode_test(void);8*@brief*@param*@retvalint{/*LED端口初始化 printf("\r\nGPS模塊測試?yán)蘰rintf("\r\n本程序?qū)PS模塊串口傳回的數(shù) /*GPS測試while}初始了串口及串口配套的DMA模式。代碼7-7GPS_Config函1*@briefGPS_Configgps*@param*@retvalvoid{11GPS_USART_INITstm32USART串口外設(shè)作9600,其它跟普通串口配置無異。本例程重點在串口DMA的配置,GPS_DMA_Config函數(shù)定義見代碼7-8。代碼7-8GPS_DMA_Config函1#define #define GPS_DR_Base//GPS#define #define 67#define #define #define #define //GPS/*外設(shè)標(biāo)志#define #define #define #define #define #define /*中斷函數(shù) //GPS使用的DMA中斷服務(wù)函#defineGPS_DMA_IRQHANDLER 24*@briefGPS_DMA_Configgpsdma接收配*@param*@retvalstaticvoid{/*開啟DMA時鐘RCC_AHBPeriphClockCmd(GPS_DMA_CLK,/*設(shè)置DMA源:串口數(shù)據(jù)寄存器地址DMA_InitStructure.DMA_PeripheralBaseAddr=GPS_DATA_ADDR;DMA_InitStructure.DMA_MemoryBaseAddr=(u32)gps_rbuff;DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;/*傳輸大小DMA_InitStructure.DMA_BufferSize=GPS_RBUFF_SIZE;DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Byte;/*內(nèi)存數(shù)據(jù)單位DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Byte;/*DMA模式:不斷循環(huán)DMA_InitStructure.DMA_Mode=DMA_Mode_Circular; DMA_InitStructure.DMA_Priority=DMA_Priority_Medium;/*內(nèi)存到內(nèi)存的傳輸DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;/*配置DMA的通道DMA_Init(GPS_DMA_CHANNEL,//配置DMA/*使能DMA_Cmd/*配置串口向DMATX請求81本函數(shù)中使用到比較多的宏,部分定義見錯誤!未找到源。。GPS_DMA_Config函數(shù)主要工作如下:設(shè)置了外設(shè)地址為USART的數(shù)據(jù)寄存器,并把數(shù)據(jù)傳輸方向設(shè)置為從USART數(shù)據(jù)寄存器傳輸?shù)絻?nèi)存變量gps_rbuff512字節(jié)。最關(guān)鍵的74DMA半傳輸結(jié)束中斷及全傳輸結(jié)束中斷,所以它實際把緩沖區(qū)分為成了大小相等的A/B兩部分,每次DMA接收了半個緩沖區(qū)大小的數(shù)據(jù)時(本程序為256當(dāng)MA區(qū)A制U用中的數(shù)據(jù)進(jìn)行S,當(dāng)DMA使用B時,控制U用A進(jìn)行區(qū)的大小設(shè)置合適,即可避免前面說到的數(shù)據(jù)丟失問題,這種處理方式也稱“乒乓緩沖”,當(dāng)DMA的半傳輸中斷或全傳輸中斷產(chǎn)生時,進(jìn)入的中斷服務(wù)函數(shù)調(diào)用了1*@briefGPS_ProcessDMAIRQGPSDMA*@param*@retvalvoid{8ifDMA_GetITStatus(GPS_DMA_IT_HT /*DMA半傳輸完成GPS_HalfTransferEnd elseifDMA_GetITStatus(GPS_DMA_IT_TC/*DMA傳輸完成GPS_TransferEnd 17GPS_HalfTransferEnd和GPS_TransferEnd標(biāo)志位進(jìn)行標(biāo)記,在流程中根據(jù)這兩個標(biāo)志使用不同的緩沖區(qū)進(jìn)行處理,處理過程見代碼7-10。/*gps_config.h文件//定義這個宏,對SD卡上的gpslog.txt文件進(jìn)行//不定義的話使用串口接
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專用運輸車輛買賣協(xié)議條款一
- 2024版協(xié)議信息披露規(guī)范版B版
- 項目管理課程設(shè)計-小區(qū)
- 花兒朵朵課程設(shè)計
- 課程設(shè)計離合器設(shè)計
- 2024非物質(zhì)文化遺產(chǎn)數(shù)字化保護(hù)合作協(xié)議
- 2025年度餐飲項目投資合作協(xié)議3篇
- 2024龍湖地產(chǎn)工程招投標(biāo)合同2篇帶眉腳
- 2025至2030年中國海洋蠟燭數(shù)據(jù)監(jiān)測研究報告
- 2024年等離子切割槍配件項目可行性研究報告
- DB3303T 059-2023 政務(wù)信息化項目軟件開發(fā)費用測算規(guī)范
- 康復(fù)科宣傳展板
- 二零二五年度IT公司內(nèi)部技術(shù)文檔保密與使用規(guī)范協(xié)議3篇
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- 燃?xì)庥邢薰疚kU作業(yè)安全管理規(guī)定
- XX鎮(zhèn)“我為群眾辦實事”滿意度調(diào)查問卷
- (完整版)Brownbear繪本
- 常用嗎啡劑量滴定方法ppt課件
- 有關(guān)DPM的問題
- 石油石化用化學(xué)劑產(chǎn)品質(zhì)量認(rèn)可實施細(xì)則
- 木地板木基層隱蔽驗收記錄.doc
評論
0/150
提交評論