亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        車用CAN總線控制器的研究與設計*

        2020-08-11 00:47:04焦繼業(yè)牛雨萌
        計算機與數(shù)字工程 2020年6期

        李 晨 焦繼業(yè) 牛雨萌

        (1.西安郵電大學計算機學院 西安 710121)(2.西安郵電大學電子工程學院 西安 710121)

        1 引言

        CAN(Controller Area Network)即控制器局域網(wǎng)絡,是由德國Bosch公司開發(fā)的一種能有效支持分布式控制或實時控制的串行通信網(wǎng)絡,其憑借可靠性、實時性和性價比高等突出特點已經(jīng)成為現(xiàn)代汽車的標準協(xié)議[1]。世界上一些著名的汽車制造廠商,如奔馳、寶馬、保時捷和勞斯萊斯等都采用了CAN總線來實現(xiàn)汽車內(nèi)部控制系統(tǒng)與各檢測和執(zhí)行機構間的數(shù)據(jù)通信。國內(nèi)使用CAN總線技術的有奇瑞、大眾等部分汽車[2]。隨著CAN總線在汽車通信系統(tǒng)中的廣泛應用,以SoC設計的嵌入式應用中需要集成CAN總線控制器的要求也越來越高,雖然已有20多家公司開發(fā)了超過110多種價格便宜的CAN總線控制器芯片,但是國外CAN總線控制器的IP價格很貴[3];國內(nèi)CAN總線的IP相對較少,可移植性也不是很好[4]。針對該問題設計了一種支持CAN2.0協(xié)議的可移植性較好的車用CAN總線控制器IP核。

        2 CAN總線

        2.1 CAN總線特點

        CAN總線以多主機的串行通信方式代替?zhèn)鹘y(tǒng)的點對點通信方式,減少了線束數(shù)量,降低了設備能耗,縮短了控制系統(tǒng)的控制信號以及傳感器采集的信息交換延時,提高了信息傳輸?shù)膶崟r性;其通信介質(zhì)選擇靈活,可以是光纖、雙絞線或電纜,通信速率可達1Mbps/40m,通信距離可達10km/40Kbps;其采用短幀結構,每個幀信息都有CRC(Cyclic Redundancy Check)校驗和其他糾錯機制,以及其總線仲裁技術[5],并且所有仲裁都不會破壞優(yōu)先級高的報文,也不會對發(fā)送產(chǎn)生任何時延[6],使得CAN總線具有強大的監(jiān)視與控制能力、高可靠性與故障容限。

        2.2 CAN協(xié)議分層結構

        CAN協(xié)議分層結構如圖1所示[7],物理層定義實際信號的傳輸方法,協(xié)議規(guī)范中沒有定義物理層,以便允許根據(jù)實際應用,對發(fā)送媒體和信號電平進行優(yōu)化。傳輸層是CAN協(xié)議的核心。它把接收到的報文提供給對象層,以及接收來自對象層的報文。傳輸層負責位定時及同步、報文分幀、仲裁、應答、錯誤檢測和標定、故障界定。對象層的功能是報文濾波以及狀態(tài)和報文的處理[8]。

        圖1 CAN協(xié)議分層結構

        2.3 幀格式

        CAN總線的數(shù)據(jù)幀的11位標識符的標準幀格式和29位標識符的擴展幀格式[9],如圖2所示。

        圖2 標準幀和擴展幀幀格式

        3 CAN總線控制器的設計

        3.1 CAN總線控制器整體設計框圖

        本文設計的CAN控制器的整體設計框圖[10],如圖3所示。CPU通過地址,輸入數(shù)據(jù)和輸出數(shù)據(jù)總線訪問CAN控制器。要傳輸?shù)南⒎湃氚l(fā)送緩沖器,由位流處理器發(fā)出。從總線上接收的消息經(jīng)過接收濾波器過濾后,放入接收FIFO。位定時邏輯模塊可產(chǎn)生的波特率范圍為125Kbaud-1Mbaud。CAN總線的接口由發(fā)送信號TX和接收信號RX提供。下面,對各模塊做具體介紹。

        圖3 CAN控制器整體設計框圖

        3.1.1 寄存器控制模塊

        寄存器控制模塊中,本文設計了25個寄存器,用于存放CAN控制器的工作狀態(tài)、命令、中斷、要發(fā)送和接收到的的幀信息等。微控制器通過地址總線ADDRESS和數(shù)據(jù)總線WDATA、RDATA對這些寄存器的進行讀/寫操作[11],控制CAN控制器實現(xiàn)數(shù)據(jù)的收發(fā)。

        接收機模塊主要完成以下功能:按照協(xié)議中的格式,接收CAN總線上發(fā)來的消息;在接收幀起始段到數(shù)據(jù)段結束部分的過程中,用于發(fā)送方相同的生成多項式計算并更新CRC校驗值,并且在ACK(Acknowledgement)槽之前與接收到的CRC值做比較,若相同,則在ACK槽發(fā)出確認信號;檢測接收消息中的位錯誤、位填充錯誤、CRC錯誤和格式錯誤。

        如圖4是無錯情況下的接收狀態(tài)轉移圖,接收狀態(tài)機的各個狀態(tài)與協(xié)議中規(guī)定的每一段相對應,idle表示總線空閑,狀態(tài)的轉移由get_sampled、receive_finished、stuff_detected三個信號控制,get_sampled接收消息的采樣信號[12]。總線空閑時,當此信號有1變?yōu)?時,表示接收到了幀開始字段,接著開始接收ID(Identifier)標識符的高11位標識符,切換到下一個狀態(tài)的條件是receive_finished&!stuff_detected。receive_finished信號表示接收到的位數(shù)與協(xié)議對應的應該接收到的位數(shù)相同,即該字段接收完成。stuff_detected信號表示檢測到六個連續(xù)的相同值的位,即發(fā)生了位填充錯誤。所以,切換條件就是接收的位數(shù)夠,并且沒有發(fā)生位填充錯誤。圖中未標出的切換條件都是(receive_finished&!stuff_detected)。當從 rec_ide向下一個狀態(tài)切換時,若get_sampled=1,則表示接收到的是擴展幀,下一個狀態(tài)應該接收低18位ID標識符,若get_sampled=0,則表示接收到的是標準幀,下一個狀態(tài)為接收填充位。當接收完數(shù)據(jù)長度段rec_dlc時,下一狀態(tài)由rtr位決定,當rtr=1,表示接收的是遠程幀,沒有數(shù)據(jù)段,下一狀態(tài)開始接收crc段,當rtr=0,表示是數(shù)據(jù)幀,下一狀態(tài)應該接收數(shù)據(jù)段。

        圖4 無錯情況下的接收狀態(tài)轉移圖

        3.1.3 發(fā)送機模塊

        發(fā)送機模塊主要完成以下功能:按照協(xié)議中的格式,檢測總線空閑時向CAN總線上發(fā)送消息;在發(fā)送幀起始段到數(shù)據(jù)段結束部分的過程中,用與接收方相同的生成多項式計算并更新CRC校驗值;檢測發(fā)送消息中的ACK錯誤、位填充錯誤和位錯誤。

        如圖5所示,是沒有過載、錯誤情況下的發(fā)送狀態(tài)轉移圖[13]。!tr&!srr_transmit為真時,表示消息傳輸中止,回到idle狀態(tài)。sent_bits_ok表示對應的比特位已經(jīng)正常發(fā)送,它為真時,則跳變到下一狀態(tài)。CAN總線中的各節(jié)點在向總線發(fā)送電平的同時,也會讀取總線上的電平,從仲裁段的第一位開始進行仲裁,當該節(jié)點失去仲裁時,則退出發(fā)送狀態(tài),變?yōu)榻邮諣顟B(tài),直到下一次總線空閑的時再參與總線的仲裁競爭??偩€上其余的節(jié)點繼續(xù)上述過程,直到總線上只剩下1個節(jié)點在發(fā)送的電平。圖中所有的由sent狀態(tài)變?yōu)閞ec狀態(tài)都是因為失去仲裁。例如,由sent_std_id到rec_std_id和rec_srr狀態(tài)的轉變就是因為該節(jié)點在仲裁競爭中失利變?yōu)榻邮諣顟B(tài)。不同的是在失去仲裁時,std_id是否發(fā)送完,完成則進入到rec_srr,否則進到rec_std_id。圖中由sent_ide向下一狀態(tài)轉變時,分為兩路,當滿足條件ide段發(fā)送完成后,若檢測eff位,為真時,即sent_bits_ok&eff,表示正在發(fā)送擴展幀,下一發(fā)送狀態(tài)應該為發(fā)送擴展id部分,否則,即sent_bits_ok&!eff,表示正在發(fā)送標準幀,下一發(fā)送狀態(tài)應該為發(fā)送填充位r0。同理,由sent_dlc向下一狀態(tài)轉變時,分為兩路,一路是發(fā)送遠程幀,沒有數(shù)據(jù)段,即sent_bits_ok&remote,下一狀態(tài)為發(fā)送crc段,另一路是數(shù)據(jù)幀,即sent_bits_ok&!remote,下一狀態(tài)為發(fā)送數(shù)據(jù)段。

        圖5 沒有過載、錯誤情況下的發(fā)送狀態(tài)轉移圖

        3.1.4 接收濾波模塊

        在CAN網(wǎng)絡中,所有節(jié)點都接收在總線上傳輸?shù)南ⅲ邮諡V波模塊的功能就是實現(xiàn)節(jié)點忽略與其無關的消息。每條消息仲裁場中的ID標識符與節(jié)點的標識符進行匹配,決定是否接收這條消息。

        本文設計中的接收濾波器由四個八位的接收碼寄存器ACR0、ACR1、ACR2、ACR3和四個八位接收屏蔽寄存器 AMR0、AMR1、AMR2、AMR3來定義[14]。ACR寄存器是預設的接收碼值,AMR寄存器是選擇ACR對應位是否對接收濾波有效。濾波器既可以作為單個4字節(jié)濾波器應用,也可以作為兩個較短濾波器應用。通過模式寄存器MOD的AFM位進行選擇。若使用兩個濾波器,標識符與任一濾波器匹配,則接收該消息。

        總體來說美國倦怠科室穩(wěn)中有變,重癥醫(yī)學和急診醫(yī)學倦怠高發(fā),家庭醫(yī)學最近兩年都有上榜。重癥醫(yī)學和急診醫(yī)學的倦怠發(fā)生比率一直都很高,這似乎不意外,但是家庭醫(yī)學醫(yī)生在近三年都表現(xiàn)了比較高的倦怠(2016年排名第4,2017年排名第3,2018年排名第3)。我國為了解決基本醫(yī)療資源不足的問題,從2011年起開始在全國推行家庭醫(yī)生制度,家庭醫(yī)生群體會逐漸擴大,一般認為家庭醫(yī)生服務較基礎,患者需求較簡單,但從美國經(jīng)驗看,仍然需要關注這個群體的任務量,預防可能的職業(yè)倦怠。

        對于標準幀,11位標識符、RTR位、數(shù)據(jù)場前兩個字節(jié)參與濾波;對于擴展幀,29位標識符和RTR位參與濾波。幀的濾波預設值和屏蔽碼與接收緩沖器中的ID和數(shù)據(jù)段的對應關系如圖6所示,復位模式下對ACR和AMR的值進行設置。

        圖6 幀的濾波預設值和屏蔽碼與接收緩沖器中的ID和數(shù)據(jù)段的對應關系

        3.1.5 位時序邏輯模塊

        位時序邏輯模塊主要完成產(chǎn)生波特率;總線同步;確定采樣、發(fā)送點的位置三個功能。

        本文設計中,先由由振蕩器周期Tclk分頻得出系統(tǒng)時鐘周期Tclockout,即單位時間。CAN總線協(xié)議規(guī)定的一個位的傳輸時間如圖7所示,四個時間段都是個單位時間的整數(shù)倍,而倍數(shù)由總線時序寄存器BTR1的設置計算出各位定時段的長度。每一位的傳輸時間為Tbit=Tss+Tpts+Tpbs1+Tpbs2,則總線波特率為1/Tbit。

        本文設計中采樣點在如圖7中采樣點1的位置上,也可通過將BTR1中的SAM位置位進行多次采樣求平均值,其他兩個采樣點之間分別間隔一個單位時間;發(fā)送點如圖7中所示,在與SS同步的位置上。

        圖7 位時間圖

        CAN總線協(xié)議使用同步機制解決節(jié)點工作頻率上的細微導致的采樣點偏離,甚至產(chǎn)生接收錯誤的問題[15]。在每一幀數(shù)據(jù)傳輸?shù)拈_始,通過一個下降沿(幀起始)來完成,此時不管有沒有相位誤差,所有節(jié)點的位時間重新開始(硬同步)。在每一幀數(shù)據(jù)的傳輸過程中,若節(jié)點發(fā)現(xiàn)自己和總線上的時鐘不同步時,通過比較edge_time_quanta和nominal_sample_time_quanta的大小確定沿變化發(fā)生在PBS1還是PBS2段中,若在PBS1段中則表示是沿晚到了edge_time_quanta個單位時間,則在PBS1段加上晚到的時間長度以重新同步;若在PBS2段中則表示是沿提前了edge_time_quanta-nominal_bit_time_quanta個單位時間,則在PBS2段減去提前的時間長度以重新同步。其中edge_time_quanta表示從每一位開始到沿變化的單位時間數(shù);nominal_sample_time_quanta表示從每一位開始到未同步前的采樣點的單位時間數(shù);nominal_bit_time_quanta表示定義的一個位的單位時間數(shù)。

        3.1.6 接收FIFO模塊和發(fā)送緩沖器模塊

        若接收到的消息沒錯誤,且經(jīng)過了驗收濾波,CAN控制器會將接收到的報文存儲到接收FIFO中。本文設計的接收FIFO是同步FIFO,深度為64字節(jié),以循環(huán)方式使用,一次最多可容納五個擴展幀格式消息。CPU通過作為接收緩沖器的13字節(jié)窗口訪問接收FIFO,接收FIFO和接收緩沖器的配合,使得CPU可以在處理一條消息的同時接收另一條消息。

        本文設計使用兩個指針read_ptr,write_ptr來指示數(shù)據(jù)可以被讀/寫的位置,即讀/寫地址。對于讀指針read_ptr,每讀完一幀,指針值就要加上讀出的幀長度,也就是釋放的消息長度released_message_length;對于寫指針write_ptr,每寫完一幀,其值加上存儲幀的長度,也就是根據(jù)接收消息中的仲裁和控制段計算出的需要的存儲空間的長度req_storage_space。若寫fifo操作,并且fifo中剩余的存儲空間小于需要的存儲空間,即(write_strobe&free_byte<req_storage_space),就 會產(chǎn)生數(shù)據(jù)溢出,并發(fā)出溢出信號dos_int,通知CPU來處理。其中,write_strobe表示寫操作信號,free_byte表示FIFO剩余空間。

        與接收緩沖器的類似,本文設計的發(fā)送緩沖器也是13字節(jié),可以一次存儲一條完整的消息。消息由CPU寫入發(fā)送緩沖器,由位流處理器中的發(fā)送機發(fā)送出去。

        4 FPGA驗證

        CAN控制器掛接在SoC系統(tǒng)中,采用Xilinx Vivado工具綜合出門級網(wǎng)表電路,下載到Xilinx XC7K410T FPGA開發(fā)板,作為CAN節(jié)點,另一個CAN節(jié)點由CANmini分析儀來充當。[4]使用Keil軟件配置相關寄存器,編寫測試程序,下載到開發(fā)板中。測試程序以標準幀格式消息的發(fā)送和接收做驗證。驗證環(huán)境如圖8所示。

        圖8 驗證環(huán)境

        消息的發(fā)送:上電后,開發(fā)板會發(fā)出一幀標準數(shù)據(jù)幀,CAN分析儀這邊使能接收,因為CAN分析儀的濾波功能不需要測試,所以這里不設置濾波預設值,接收到的數(shù)據(jù)在CAN分析儀調(diào)試軟件ECANTools下方的收發(fā)列表中顯示,如圖10中第一行所示。測試程序中發(fā)送的消息是0×05,0×00,0×20,0×01,0×02,圖9為標準幀在緩沖器中存儲格式,按照上述格式解析,收到的ID號應該為0×001(ECANTools中不管是標準幀還是擴展幀都統(tǒng)一按32位顯示,所以中ID會顯示為0×0001,下述接收到的0×003也是相同原因),數(shù)據(jù)長度應該為0×05,數(shù)據(jù)部分應該為0×01,0×02,0×00,0x00,0×00(未寫數(shù)據(jù)部分自動填充為0)。圖10中數(shù)據(jù)表明CAN控制器發(fā)送正常。

        圖9 標準幀在緩沖器中存儲格式

        圖10 CAN分析儀接收和發(fā)出數(shù)據(jù)

        消息的接收:CAN分析儀發(fā)出一幀數(shù)據(jù)幀,如下圖10中收發(fā)列表中第二行所示,ID是0×0003,長度是0×08,數(shù)據(jù)部分為0×07,0×08,0×00,0×00,0×00,0×00,0×00,0×00。CAN控制器接收到這幀數(shù)據(jù)后,開始匹配濾波器中的ID標識符,確定是接收這條消息還是丟棄這條消息。此時,CAN控制器設置為濾波預設值為0×00,0×60,0×00,0×00,屏蔽碼為0×00,0×00,0×FF,0×FF,為單濾波模式。如圖11所示,是接收到的消息按字節(jié)顯示的結果,顯然是通過了濾波,按照圖9的格式解析,0×08表示收到的長度為8個字節(jié);0×00,0×60部分是ID標識符,0×60對應的二進制數(shù)為0110 0000,所以接收的數(shù)據(jù)幀的ID為0000 0000 011,即為0×003,數(shù)據(jù)部分為0×07,0×08,0×00,0×00,0×00,0×00,0×00,0×00。圖11中結果表明CAN控制器接收正常。

        圖11 keil中觀察到的CAN控制器接收到的數(shù)據(jù)

        5 結語

        本文設計的基于CAN2.0協(xié)議的車用CAN控制器集成在Cortex-M0 SoC處理器內(nèi),通過軟件驅動實現(xiàn)通信。實驗表明,該控制器可以實現(xiàn)符合協(xié)議的數(shù)據(jù)傳輸。同時該控制器的可移植性使其可以復用于SoC設計中,具有良好的應用前景。但現(xiàn)代汽車中信息種類多而復雜,本文的濾波方案只能滿足一些規(guī)律性較高的或個數(shù)較少的標識符的過濾,為了增加標識符的任意性,今后將會對濾波方案做進一步的優(yōu)化。

        在线观看网址你懂的| 午夜亚洲av日韩av无码大全| 最新亚洲人成网站在线观看 | 亚洲欧美另类自拍| 亚洲国产高清在线视频| av影片手机在线观看免费网址| 中国美女a级毛片| 色一情一区二| av无码电影一区二区三区| 久久久精品国产亚洲av网麻豆| 国产成人精品999视频| 国产精品无码日韩欧 | 日韩精品自拍一区二区| 狠狠色噜噜狠狠狠狠97首创麻豆| 中文字幕在线亚洲日韩6页| 在线a亚洲视频播放在线观看| 人妻少妇激情久久综合| 麻豆亚洲一区| 午夜不卡av免费| 亚洲av人妖一区二区三区| 新视觉亚洲三区二区一区理伦| 日韩av无码一区二区三区不卡| 国产主播一区二区三区在线观看| 国产强伦姧在线观看| 国产精品熟女视频一区二区三区| 亚洲精品成人片在线观看精品字幕| 熟女俱乐部五十路二区av| 搡老女人老妇女老熟妇69| 中文字幕乱码在线人妻| 久久久av精品波多野结衣| 亚洲国产成人手机在线观看| 国产少妇露脸精品自拍网站| 日本丰满少妇裸体自慰| 欧洲-级毛片内射| 蜜桃一区二区三区自拍视频| 亚洲精品av一区二区| 亚洲日韩精品无码专区网站 | 五十路熟妇高熟无码视频| 无码一区二区三区久久精品| 国产性虐视频在线观看| 久久亚洲私人国产精品va|