国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于串口協(xié)議的程序燒寫(xiě)方法與改進(jìn)措施

2017-02-03 05:05李菁趙龍飛凌霄
電子設(shè)計(jì)工程 2017年21期
關(guān)鍵詞:波特率PC機(jī)字節(jié)

李菁,趙龍飛,凌霄

(北京航天發(fā)射技術(shù)研究所北京100076)

在英飛凌16位/32位控制器的開(kāi)發(fā)過(guò)程中,比較通用的方法是利用仿真器通過(guò)14針腳的JTAG端口對(duì)控制程序進(jìn)行在線調(diào)試與加載,該方法在硬件測(cè)試及軟件調(diào)試階段非常方便,但著眼于現(xiàn)有車(chē)載控制器機(jī)械外形,外接的有限接插件端子數(shù)便成為制約控制器性能的一個(gè)重要因素,如預(yù)留多個(gè)端子專(zhuān)供JTAG口程序加載,會(huì)造成控制器資源的巨大浪費(fèi),此時(shí)利用端口復(fù)用技術(shù)便成為解決此類(lèi)問(wèn)題的關(guān)鍵。

文中以16位的XC164單片機(jī)為例,設(shè)計(jì)并改進(jìn)了一種利用UART串口協(xié)議對(duì)其進(jìn)行程序加載的方法,該方法也稱(chēng)為BSL工作模式下的程序加載,它通過(guò)特定的引腳與PC主機(jī)進(jìn)行通信,采用標(biāo)準(zhǔn)的UART協(xié)議完成數(shù)據(jù)傳輸,從而完成控制器的程序下載功能。該方法硬件接口簡(jiǎn)單,并可復(fù)用為RS232/RS422接口,功能可靠,已在實(shí)際調(diào)試中取得良好效果。

1 XC164單片機(jī)的BSL模式簡(jiǎn)介

BSL(Bootstrap loader)是英飛凌單片機(jī)的內(nèi)嵌引導(dǎo)程序加載器提供的一種加載啟動(dòng)程序的機(jī)制,用于標(biāo)準(zhǔn)的系統(tǒng)啟動(dòng)。XC164系列單片機(jī)可支持3種協(xié)議/模式的BSL啟動(dòng)機(jī)制:標(biāo)準(zhǔn)UART協(xié)議,同步串行協(xié)議和CAN總線協(xié)議。不論哪種協(xié)議/模式,XC164系列單片機(jī)加載程序的處理方式是相同的。其中UART協(xié)議是實(shí)現(xiàn)設(shè)備之間低速數(shù)據(jù)通信的標(biāo)準(zhǔn)協(xié)議,是一種異步串行通信協(xié)議。

1.1 基于UART協(xié)議的BSL引導(dǎo)程序

引導(dǎo)程序加載器是通過(guò)預(yù)先定義好的一組接口引腳與外部主機(jī)通信的,BSL啟動(dòng)模式下,這些接口引腳被自動(dòng)使能,并由引導(dǎo)程序加載器控制。XC164根據(jù)外部引腳設(shè)置,上電復(fù)位后進(jìn)入BSL模式,同時(shí)禁止看門(mén)狗定時(shí)器和調(diào)試系統(tǒng),在與PC機(jī)建立通信之后,BSL進(jìn)入到下一個(gè)循環(huán)中,接收相應(yīng)個(gè)數(shù)的字節(jié),這些字節(jié)從地址E0'0000H開(kāi)始順序保存到片上PSRAM中。加載的代碼可能是最后的應(yīng)用代碼或是其他更為復(fù)雜的程序,該加載程序添加了傳送協(xié)議,從而增強(qiáng)了加載代碼或數(shù)據(jù)的一致性,還可能包含改變系統(tǒng)配置并使能總線接口,從而將接收到的數(shù)據(jù)保存在外部存儲(chǔ)器中的代碼序列。為了執(zhí)行加載的代碼,之后BSL使寄存器VECSEG指向地址E0'0000H,即要加載的第一條指令處,然后跳轉(zhuǎn)到該指令。

1.2 BSL模式下XC164與PC機(jī)的UART通信時(shí)序

XC164與PC機(jī)的硬件連接原理性框圖如圖1所示,通過(guò)PC的串行端口,經(jīng)RS232/RS422總線將加載程序發(fā)送給XC164單片機(jī),通過(guò)引導(dǎo)程序加載到芯片的FLASH中,完成控制器的程序下載功能。

圖1 XC164與PC機(jī)的硬件連接圖

標(biāo)準(zhǔn)UART引導(dǎo)程序加載通過(guò)USIC0通道0(UOCO)將程序代碼/數(shù)據(jù)傳送到PSRAM中。發(fā)送ID字節(jié)之后才能使能U0C0接收與主機(jī)進(jìn)行半雙工連接。在標(biāo)準(zhǔn)UART引導(dǎo)模式中,通信“握手”數(shù)據(jù)使用了不帶奇偶校驗(yàn)的異步8位數(shù)據(jù)幀(1個(gè)起始位,1個(gè)停止位),其通信時(shí)序如圖2所示。

圖2 標(biāo)準(zhǔn)UART引導(dǎo)程序加載時(shí)序

XC164進(jìn)入U(xiǎn)ART BSL模式并完成相應(yīng)的初始化之后,XC164掃描RXD線,接收一個(gè)零字節(jié)。零字節(jié)被認(rèn)為是包含1個(gè)起始位,8個(gè)0數(shù)據(jù)位以及1個(gè)停止位。在該零字節(jié)傳送期間,XC164以當(dāng)前CPU時(shí)鐘為單位,計(jì)算相應(yīng)的波特率因子,相應(yīng)的初始化串行接口U0C0并將引腳TXD切換到輸出,使用該波特率,向提供加載數(shù)據(jù)的主機(jī)返回一個(gè)ID字節(jié)。一旦發(fā)送ID字節(jié),BSL進(jìn)入下一個(gè)循環(huán),通過(guò)U0C0接收用戶數(shù)據(jù)。

1.3 BSL通信波特率設(shè)置

XC164系列單片機(jī)允許用戶在很寬的波特率范圍內(nèi)進(jìn)行引導(dǎo)程序加載操作,但為了確保正確的數(shù)據(jù)傳送操作,用戶波特率的設(shè)置必須滿足上限和下限的要求。XC164使用位域PDIV測(cè)量第一個(gè)零字節(jié)的長(zhǎng)度。量化誤差使得測(cè)量值可能與實(shí)際波特率有一定偏差。為了正確從主機(jī)向XC164傳送數(shù)據(jù),U0C0內(nèi)部初始化波特率和主機(jī)的實(shí)際波特率之間的最大偏差應(yīng)該低于2.5%。可根據(jù)式(1)計(jì)算XC164的波特率與主機(jī)波特率之間的偏差(FB,百分?jǐn)?shù))

注:函數(shù)(FB)不考慮振蕩器和其他支持串口通信的器件的容差。

該波特率偏差是一個(gè)非線性函數(shù),和系統(tǒng)時(shí)鐘以及主機(jī)波特率有關(guān)。由于較小的波特率預(yù)分頻因子容易導(dǎo)致較大的量化誤差,因此函數(shù)(FB)的最大值隨主機(jī)波特率增加而增大,如圖3所示。

圖3 主機(jī)與XC16X之間的波特率偏差

測(cè)量零字節(jié)時(shí),最小波特率BLow由位域PDIV最大計(jì)數(shù)能力決定,取決于系統(tǒng)時(shí)鐘,低于BLow的值會(huì)導(dǎo)致PDIV溢出,U0C0不能被正確初始化,可能導(dǎo)致與PC機(jī)通信失敗。最大波特率BHigh是指未超過(guò)偏差極限的最高波特率。主機(jī)與XC164單片機(jī)建立通信時(shí),通信波特率的設(shè)置最好在BLow和BHigh之間選取。

標(biāo)準(zhǔn)UART加載模式下,最小波特率BLow為2.4 K,BHigh為19.2 K。

2 基于串口協(xié)議的程序燒寫(xiě)方法的硬件實(shí)現(xiàn)

單片機(jī)選用型號(hào)SAK-XC164CS-32F40F,總線協(xié)議收發(fā)器選用MAX1490EBEPG,單片機(jī)配置引腳如圖4所示,信號(hào)EX_DL連同RS422的4條總線信號(hào)一起被引出控制器接插件,作為控制器的BSL模式配置端口和RS422通信端口,當(dāng)EX_DL通過(guò)開(kāi)關(guān)切換至低電平時(shí),單片機(jī)復(fù)位后進(jìn)入BSL加載模式;切換至高電平時(shí),串口僅作有RS422通信功能。

圖4 單片機(jī)XC164 BSL加載模式配置引腳

UART BSL程序加載是通過(guò)特定的端口進(jìn)行的,串口與XC164的硬件連接如下圖5所示,MAX1490是RS422收發(fā)器,實(shí)現(xiàn)PC機(jī)與422總線間的電平轉(zhuǎn)換,XC164的P3.10和P3.11既可以用于串口加載程序和RS232/RS422通信,也可以復(fù)用普通IO端口。

串口協(xié)議的引導(dǎo)程序加載功能可以通過(guò)Memtool實(shí)現(xiàn)。Memtool是英飛凌提供的免費(fèi)下載軟件,可以對(duì)目前英飛凌單片機(jī)所有產(chǎn)品進(jìn)行編程,包括片內(nèi)存儲(chǔ)器編程和外部Flash編程。Memtool 4.2軟件的主界面如圖6所示,選擇菜單欄“Target”菜單下的“Change”欄,在XC16X系列中配置具體的目標(biāo)芯片,串口使用的波特率115200和COM端口。

圖5 串口總線與單片機(jī)的硬件連接

圖6 Memtool 4.2軟件主界面

Memtool軟件配置完成后,控制器重新上電復(fù)位,點(diǎn)擊“connect”,XC164芯片則進(jìn)入引導(dǎo)程序硬件初始化和與PC主機(jī)建立通信的階段,通信建立的實(shí)測(cè)時(shí)序如圖7所示。從圖6中可看出,PC主機(jī)向控制器發(fā)送10位的0字節(jié),每位占據(jù)時(shí)間約10 μs,由此計(jì)算出波特率為115 200,與設(shè)置值相符合,之后控制器向PC主機(jī)發(fā)送D5H的ID字節(jié),每位時(shí)間也為10 μs,波特率相同。通訊建立完成后,用戶程序的加載可以通過(guò)“Program”實(shí)現(xiàn)。

圖7 XC164與PC機(jī)建立通信實(shí)測(cè)時(shí)序

3 影響串口程序加載的因素及改進(jìn)

RS422標(biāo)準(zhǔn)規(guī)定了收發(fā)器門(mén)限為±200 mV,這樣規(guī)定能夠提供比較高的噪聲抑制能力。當(dāng)接收器正端(A)電平比負(fù)端(B)高+200 mV以上時(shí),輸出為正邏輯,反之,輸出為負(fù)邏輯。但由于第三態(tài)的存在,即總線空閑時(shí)沒(méi)有任何信號(hào)驅(qū)動(dòng)總線,使AB之間的電壓在-200 mV~+200 mV直至趨于0 V,這帶來(lái)了一個(gè)問(wèn)題:接收器輸出狀態(tài)不確定。MAX1490收發(fā)器本身解決了這個(gè)問(wèn)題,當(dāng)總線空閑時(shí),MAX1490通過(guò)自身的內(nèi)部電路,將總線驅(qū)動(dòng)為高電平狀態(tài)。

RS422通信為避免長(zhǎng)線信號(hào)傳輸時(shí)信號(hào)的反射和回波,一般在信號(hào)接收端接入終端匹配電阻,典型值為120 Ω。但這樣做有可能引入一種后果,當(dāng)總線上有超過(guò)-200 mV的雜波電平干擾時(shí),接收器輸出為低電平,如果雜波的干擾電平一直未達(dá)到+200 mV以上,則接收器的輸出就一直為低電平,XC164芯片則進(jìn)入引導(dǎo)程序硬件初始化后接收不到0字節(jié)(因?yàn)榭偩€一直被驅(qū)動(dòng)為低),與PC主機(jī)不能成功建立通信,從而導(dǎo)致程序燒寫(xiě)失敗。

雜波電平干擾問(wèn)題可以通過(guò)設(shè)置適宜的偏置電阻解決,偏置電阻可以加在下載工裝電纜中,控制器接插件引出電源是24 V,所以偏置電阻阻值的計(jì)算是根據(jù)24 V電源來(lái)計(jì)算的,偏置電阻添加的目的是在總線空閑狀態(tài)下,匹配電阻120 Ω上的分壓達(dá)到+200mV以上。改進(jìn)后的硬件電路圖如圖8所示。

圖8 工裝電纜的改進(jìn)

4 結(jié)論

基于串口協(xié)議的程序燒寫(xiě)方法充分利用了英飛凌flash系列芯片所提供的BSL功能,硬件實(shí)現(xiàn)結(jié)構(gòu)簡(jiǎn)單,可以與RS422通信接口復(fù)用,不占用控制器有限的接插件資源,程序下載無(wú)需額外的下載器,減少了控制器的生產(chǎn)成本,簡(jiǎn)化了控制器生產(chǎn)流程。改進(jìn)后的串口協(xié)議程序燒寫(xiě)方法成功解決了串口燒寫(xiě)失敗的問(wèn)題,該方法已經(jīng)廣泛應(yīng)用于控制器的批產(chǎn)工作中。

[1]張立強(qiáng),宋玲,劉寶娟.JTAG并口下載設(shè)計(jì)[J].微處理機(jī),2013(1):280-285.

[2]鄔子?jì)?,步鑫,任齊鳳.邊界掃描JTAG控制器設(shè)計(jì)與實(shí)現(xiàn)[J].航空電子技術(shù),2016,1(7):31-34

[3]姚海濱,高磊,黃貴晨.RS232串口直連線與交叉線可變裝置[J].黑龍江科技信息,2016(5):106.

[4]孫慧強(qiáng).基于單片機(jī)的數(shù)據(jù)串口通信研究[J].數(shù)字技術(shù)與應(yīng)用,2016(3):24.

[5]HuiZhao,Tiejun Xiao,Xiaoru Han.The Application of Boundary-Scan Technology to FPGA-Based ExperimentSystem:The Ninth International Conference on Electronic Measurement&Instruments[C]//Beijing,China,2009:2629-2632.

[6]Wen-Cheng Hsieh.U-BootPorting And Implementation On Embedded System[M].National Taiwan University of Science and Tecnology,NTUST Library,2005:8-15.

[7]崔旭晶,李天雷.基于SOPC的UART IP核設(shè)計(jì)與驅(qū)動(dòng)開(kāi)發(fā)及系統(tǒng)移植[J].電子設(shè)計(jì)工程,2014(6):121-125.

[8]鄧偉.徐揚(yáng)婧.基于SOPC技術(shù)的異步串行通信IP核的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2012,20(3):185-188.

[9]夏柯.門(mén)蘭寧.基于ZYNQ-7000 DMA控制器的UART數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)[J].信息化建設(shè),2014(9):113-114.

[10]黃毓芯.基于FPGA的UART電路設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)電技術(shù),2014(4):33-35.

[11]劉浩淼,卞樹(shù)檀.基于CPLD的RS 422串口通信實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2011(12):153-155.

[12]李洋洋,吳武臣.基于斷言的驗(yàn)證方法在UART模塊中的應(yīng)用研究[J].微電子學(xué)與計(jì)算機(jī),2012(1):151-153.

[13]孟敬,王冬青,姜璐璐,等.基于單片機(jī)的CAN/UART協(xié)議轉(zhuǎn)換器的設(shè)計(jì)[J].青島大學(xué)學(xué)報(bào),2012(12):38-42.

[14]桂桂,李吉.王珍.基于UART的AVR和FPGA 的通信設(shè)計(jì)及實(shí)現(xiàn)[J].儀表技術(shù),2013(11):44-46.

[15]薛志遠(yuǎn),朱浩,張鐵軍.一種基于串口通信的DSP調(diào)試平臺(tái)設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2013(12):151-154.

猜你喜歡
波特率PC機(jī)字節(jié)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
CAN 總線波特率自適應(yīng)程序設(shè)計(jì)
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
基于PC機(jī)與單片機(jī)的多機(jī)通信技術(shù)及抗干擾方法
基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實(shí)現(xiàn)
簡(jiǎn)談MC7字節(jié)碼
VC.NET下實(shí)現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
排除OLT設(shè)備登錄故障
C*Core芯片SCI串口波特率容限優(yōu)化
UART波特率發(fā)生電路設(shè)計(jì)
紫金县| 赤城县| 邯郸县| 白城市| 山东| 凤冈县| 昭平县| 怀远县| 黔南| 肥城市| 土默特左旗| 海城市| 湟源县| 金山区| 镇江市| 溧水县| 哈尔滨市| 三门县| 大冶市| 郑州市| 浮梁县| 大城县| 华亭县| 汽车| 民丰县| 和田县| 石首市| 阜康市| 星子县| 龙陵县| 乡宁县| 花垣县| 宿松县| 吴旗县| 闽侯县| 宜君县| 原平市| 天台县| 莲花县| 宁化县| 崇义县|