附送蘇大arm cortex-m4kinetis光盤sd fsl分章閱讀k60rev6ch48can中文_第1頁(yè)
附送蘇大arm cortex-m4kinetis光盤sd fsl分章閱讀k60rev6ch48can中文_第2頁(yè)
附送蘇大arm cortex-m4kinetis光盤sd fsl分章閱讀k60rev6ch48can中文_第3頁(yè)
附送蘇大arm cortex-m4kinetis光盤sd fsl分章閱讀k60rev6ch48can中文_第4頁(yè)
附送蘇大arm cortex-m4kinetis光盤sd fsl分章閱讀k60rev6ch48can中文_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

48下圖為一個(gè)常用的框圖,介紹了FlexCAN模塊的子模塊,包括了用來(lái)消息緩Rx隊(duì)列標(biāo)識(shí)過(guò)濾器。各個(gè)子模塊的功能將在隨后的章節(jié)介紹。概

圖48- 參考配置細(xì)節(jié)來(lái)了解在MCU內(nèi)配置的消息緩沖區(qū)的數(shù)目。CAN協(xié)議引擎(PE)子模塊管理CAN總線上的串行通信,請(qǐng)求存取RAM接收和FlexCAN模塊特可編程控制的波特率,數(shù)據(jù)傳輸速率可達(dá)1Mbps;與內(nèi)容相關(guān)的尋址方式。獨(dú)立的傳輸媒介(假定一個(gè)外部收發(fā)器發(fā)送緩沖區(qū)狀態(tài)(最低優(yōu)先級(jí)緩沖區(qū)或者空緩沖區(qū)256512(8)ID32操作模FlexCAN(用戶和管理員、凍結(jié)模式、模式以及閉環(huán)模式。同樣具有三種不同的低功耗模式:模式、正常模式(用戶與管理員在正常模式下,CAN模塊收發(fā)數(shù)據(jù)幀、處理錯(cuò)誤,CAN協(xié)議的所有功能全部開啟。對(duì)于一些控制比較嚴(yán)格的寄存器,在用戶模式和管理員模式下時(shí)是有區(qū)別的HALTMCU(DebugMode)MCR當(dāng)控制1寄存器的LOM位置位時(shí),模塊將進(jìn)入到模式。在該模式下,CAN模塊數(shù)據(jù)收發(fā),所有的錯(cuò)誤計(jì)數(shù)器都被凍結(jié),且該模塊工作在CAN錯(cuò)誤模式。只有被其他CAN節(jié)點(diǎn)應(yīng)答了的報(bào)文才可以被的節(jié)點(diǎn)接收。如果FlexCAN檢測(cè)到一個(gè)還沒(méi)有被應(yīng)答的報(bào)文,則標(biāo)記為一個(gè)BIT0錯(cuò)誤(不會(huì)改變REC),將如同它1LPB1模塊模MCR寄存器MDISCPU置位并LPM_ACKFlexCAN模塊置位時(shí),模塊將會(huì)進(jìn)入該低功耗模式。如果模塊被,那么模塊將會(huì)請(qǐng)求停止CAN協(xié)議以退出該模式。有關(guān)該模塊的信息參考“模塊模式”節(jié)。(negated測(cè)到CAN總線上有活動(dòng)并且自醒機(jī)制開啟時(shí)模塊將退出睡眠模式。信息可以CPUCANFlexCAN一共有兩個(gè)IO引腳用來(lái)連接外部的MCU引腳。下表將列出這兩個(gè)引48-1FlexCANCANCANCANRx引‘0狀態(tài)表示邏輯‘1CANTx引FlexCAN內(nèi)存映從模塊基址開始一共有128字節(jié)的地址空間用于FlexCAN模塊的寄存器定義,模塊基址開始與0x0080。每一個(gè)獨(dú)立的寄存器都通過(guò)其唯一的名字及助記符來(lái)表示。權(quán)限可以是管理員或者。大部分的寄存器都可以通過(guò)對(duì)MCR寄存器的SUPV位編程配置成管理員或者。表48-2的權(quán)限一列定義了這些寄存器的權(quán)限S/U。48-2S是是是否是是否否否否否否是是是是是是是是是是是是是否是是是是是是是是否否否否否否否否(MBs據(jù)了偏移地址的0x80到0x17F。 訪問(wèn)權(quán)限4002自由運(yùn)行定時(shí)器(CAN00000接 掩碼寄存(CAN0接 掩碼寄存40020000CRC寄存器R4002接收隊(duì)列信息寄存器(CAN0R000040020000接收個(gè)別掩碼寄存接收個(gè)別掩碼寄存接收個(gè)別掩碼寄存接收個(gè)別掩碼寄存接收個(gè)別掩碼寄存接收個(gè)別掩碼寄存接 掩碼寄存接 掩碼寄存CRC寄存器RR接收私有掩碼寄存接收私有掩碼寄存接收私有掩碼寄存接收私有掩碼寄存接收私有掩碼寄存接收私有掩碼寄存模塊配置寄存器地址:CAN0_MCR-4002_4000h(基址)+0h(偏移地址)4002_4000hCAN1_MCR-400A_4000h(基址)+0h(偏移地址)讀寫無(wú)效無(wú)效無(wú)效11011000100100009-76-讀000寫無(wú)效0000000000001111模塊位。該位用來(lái)控制是否FlexCAN模塊。當(dāng)時(shí),F(xiàn)lexCAN模塊將0開啟FlexCAN模1FlexCAN模凍結(jié)使能位。MCRHALT位置位或者當(dāng)MCU級(jí)請(qǐng)求調(diào)試模式時(shí),該位FlexCAN模塊的行為。FRZ被置位,F(xiàn)lexCAN將會(huì)進(jìn)入到凍結(jié)模式。該位置0將使FlexCAN模塊退出凍結(jié)模式。01開啟接收隊(duì)列。該位用來(lái)控制是否開啟接收隊(duì)列。當(dāng)該位被置位時(shí),MBs0MBs5不能用于正常的接收與傳輸,因?yàn)槠湎鄳?yīng)的內(nèi)存空間(0x80~0xDC)被隊(duì)列引擎以及MBs(32CTRL2[RFEN]位的設(shè)置用于接收隊(duì)列ID過(guò)濾器表元素RFEN同樣影響每一個(gè)CAN的外設(shè)時(shí)鐘的最小個(gè)數(shù)的定義,正如在表“外設(shè)時(shí)鐘頻率與CAN比特01開啟了接收隊(duì)FlexCAN模塊。該位置位會(huì)導(dǎo)FlexCAN模塊進(jìn)入到凍結(jié)模式。CPU在初始化報(bào)文緩沖區(qū)與控制寄存器之后應(yīng)該將該位清0。當(dāng)FlexCAN在任何一種低功耗模式下時(shí),都01如果FRZ位置位那么進(jìn)入到凍結(jié)模式FlexCAN模塊未準(zhǔn)備好。該位只讀,用來(lái)表示FlexCAN現(xiàn)在處于以下幾種模式:0FlexCAN模塊處于正常模式、模式或者回環(huán)模0喚醒中1開啟喚醒中軟件復(fù)位。該位置位,F(xiàn)lexCAN模塊將復(fù)位其內(nèi)部狀態(tài)機(jī)以及一些內(nèi)存映射寄存器。一軟件復(fù)位影響。以下寄存器不受影響:CTRL1、CTRL2、RXIMR0-RXIMR63、SOFTRST位將會(huì)一直置位,且它會(huì)在復(fù)位完成之后自動(dòng)取反。因此可以輪詢0沒(méi)有復(fù)位請(qǐng)1略,那FlexCAN模塊預(yù)分頻器又重新運(yùn)行,該位也會(huì)取反。如FlexCAN正處0FlexCAN處于用戶模式。所有受影響的寄存器可以以管理員或者的方式1FelxCAN處于管理員模式,所有受影響的寄存器只能以管理員的。訪FlexCAN模塊進(jìn)入到睡眠模式或者停止模式的時(shí)候該位被置位,那么FlexCAN模塊在這些模式下會(huì)CAN總線上尋找一個(gè)從隱性到顯性的轉(zhuǎn)變。在睡眠模式下,如果檢測(cè)性的轉(zhuǎn)變,使能了該功能,那FlexCAN將會(huì)CPU發(fā)出一個(gè)喚醒中斷,因此它可以0FlexCAN模塊自喚醒功1開啟FlexCAN使能警告中斷置位寄存器中的TWRNINT與RWRNINT中斷。如果該位被忽略TWRNINTRWRNINT標(biāo)志位將會(huì)一直為0,獨(dú)立于錯(cuò)誤計(jì)示止模式。FlexCAN模塊不會(huì)進(jìn)入到任何低功耗模式直到當(dāng)前所有的傳輸與接收操作都完使能睡眠模式。該位用來(lái)定義當(dāng)CPU級(jí)請(qǐng)求睡眠模式時(shí)是否允FlexCAN進(jìn)入到低0當(dāng)請(qǐng)求請(qǐng)求睡眠模式時(shí),F(xiàn)lexCAN模塊進(jìn)入到低功耗模位,由模塊傳輸出去的幀將不會(huì)在MB內(nèi),不管MB是否與傳輸幀ID匹配,并且0只能自接1自接RXMGMASK、RX14MASK、RX14MASKRXFGMASK構(gòu)成的掩碼機(jī)制。該位只能0個(gè)別接收掩碼和隊(duì)列功能,為了向后兼容,C/S字的將鎖定MB即使MB位的功能。主要用于在仲裁階段擴(kuò)展ID。有了擴(kuò)ID的概念,仲裁過(guò)程將會(huì)32比特的ID。該位只能在凍結(jié)模式下寫入,在其他模式下該位被硬件鎖定。0本地優(yōu)先功1能。該功能提供了一個(gè)安全的程序來(lái)中止正在進(jìn)行的傳輸,因此在CAN總線上如果沒(méi)警告:寫中止代碼到接收郵箱當(dāng)MCR[AEN]位置位時(shí),將導(dǎo)致不可預(yù)見的結(jié)果。0中止功1開啟中止功9-(它們具有相同的格式的)IDs;格式D:所有的幀7(預(yù)留6-最大報(bào)文緩沖區(qū)個(gè)數(shù)7位定義了將參與匹配及仲裁過(guò)程的最大報(bào)文緩沖區(qū)的個(gè)數(shù)。注意:MAXMB設(shè)置的值必須小于參NUMBER_OF_MB,不然最大有效報(bào)文個(gè)數(shù)將NUMBER_OF_MB-1。CANFlexCAN地址:CAN0_CTRL1-4002_4000h(基址)+4h(偏移地址)=CAN1_CTRL1-400A_4000h(基址)+4h(偏移地址)=讀寫0000000000000000讀0寫0000000000000000Sclock周期定CAN協(xié)議的最小時(shí)間份額,對(duì)于復(fù)位之后的值,Sclock頻率等PE除以256的值。該字段只能在凍結(jié)模式下寫入,在其他模式下該位被硬件鎖定。Sclock頻率=PE時(shí)鐘頻率再同步補(bǔ)償位。這兩位定義了在一次在同步過(guò)程中允許補(bǔ)償誤差的最(1個(gè)最小時(shí)間份額為Sclock時(shí)鐘周期。有效值為0~3,該字段只能在凍結(jié)模式下寫入,在其他模式相位段1=(PSEG1+1)×Time-Quanta相位段2=(PSEG2+1)×Time-Quanta0總線關(guān)閉中斷10錯(cuò)誤中斷1開啟錯(cuò)誤中斷(有PLL驅(qū)動(dòng))也可以是外部晶體振蕩器時(shí)鐘。所選擇的時(shí)鐘源供預(yù)分頻使用以產(chǎn)生串閉環(huán)模式選擇位。該位用來(lái)配置FlexCAN工作在閉環(huán)模式下。在該模式下,F(xiàn)lexCAN模式執(zhí)行內(nèi)部循環(huán)用于自測(cè)。發(fā)送器的輸出比特流返回到內(nèi)部的輸入引腳。Rx模塊和正常模式一樣,而則認(rèn)為接收它自己的報(bào)文與接收節(jié)點(diǎn)的報(bào)文相同。FlexCAN為保證能正確接收到自己發(fā)送的報(bào)文,將忽略應(yīng)答間隙內(nèi)的應(yīng)答字段。報(bào)文接收發(fā)送時(shí),如果中斷使能FlexCANCPU產(chǎn)生中斷。該位只有在凍結(jié)模式下才能注意:在該模式下MCR[SLFDIS]位不能被置位,因0閉環(huán)模式1開啟閉環(huán)模式警告中斷掩碼。當(dāng)MCR[WRNEN]位為0時(shí),該位讀出為0。只有當(dāng)MCR[WRNEN]位置0發(fā)送警告中斷1收警告中斷掩碼。MCR[WRNEN]0時(shí),該位讀出0MCR[WRNEN]0接收警告中斷1采樣模式選擇位。該位定義了接收引腳(Rxpin)的采樣模式。該位只有在凍結(jié)模式下才能被寫入,在其他模式下該位被硬件鎖定。0僅采樣一次來(lái)決定比特的值;1通過(guò)三則CAN2.0B協(xié)議規(guī)定從總線關(guān)閉狀態(tài)中恢復(fù)。如果該位被置位,總線關(guān)閉自關(guān)閉回復(fù),就BOFFREC沒(méi)有被置位過(guò)一樣。如果該位CAN總線上128次狀態(tài)時(shí)才生效。如果在模塊進(jìn)入總線關(guān)閉BOFFREC0,在總線關(guān)閉狀態(tài)下計(jì)數(shù)器同步模式位。該位定義計(jì)數(shù)器的同步模式MB0每接收到一個(gè)報(bào)文就復(fù)位自由運(yùn)行計(jì)數(shù)器的機(jī)制。該機(jī)制為同步多FlexCAN結(jié)點(diǎn)提供特定SYNC報(bào)文(全(通過(guò)CTRL2[RFEN]的設(shè)置)而不是MB0被用于計(jì)數(shù)器的同步。該位只有在凍結(jié)模式下0計(jì)數(shù)器同步1模式位。該位配置FlexCAN工作在模式。在該模式下,F(xiàn)lexCAN模塊數(shù)據(jù)發(fā)送,所有的錯(cuò)誤計(jì)數(shù)器都被凍結(jié),且該模塊工作在CAN錯(cuò)誤模式。只有被其他CAN結(jié)點(diǎn)應(yīng)答了的報(bào)文才可以被的結(jié)點(diǎn)接收。如果FlexCAN檢測(cè)到一個(gè)還沒(méi)有被應(yīng)答的報(bào)文,則標(biāo)記為一個(gè)BIT0錯(cuò)誤,就好像它試圖應(yīng)答報(bào)文一樣。模式應(yīng)答通過(guò)ESR1位的狀態(tài)可知,開啟模式時(shí),該位是一個(gè)錯(cuò)誤。該位只有在凍結(jié)模式下才能被寫入,在其他模式下該位被硬件鎖定。0停用模式;1FlexCAN2-

Time-Quantum=一個(gè)Sclock周期。自由運(yùn)行計(jì)數(shù)器該寄存器內(nèi)有一個(gè)16位自由運(yùn)行的計(jì)數(shù)器,可以通過(guò)CPU進(jìn)行讀寫。該寄存器復(fù)位值為0x0000,計(jì)數(shù)到0xFFFF后回到0x0000重新開始計(jì)數(shù)。該計(jì)數(shù)器通過(guò)FlexCAN位時(shí)鐘(位時(shí)鐘決定CAN總線波特率)來(lái)計(jì)數(shù)。在報(bào)文發(fā)送/接收期間,每率來(lái)計(jì)數(shù)。在凍結(jié)、、睡眠以停止模式下定時(shí)器將不再增加。在CAN總線上,不管是收到什么類型的幀,該計(jì)數(shù)值總是在ID字段的起始處被(TimeStamp)如果CTRL1[TSYN]CAN1_TIMER-400A_4000h(基址+8h(偏移地址B讀0寫復(fù)位0接收郵箱全局掩碼寄存器31-讀31-讀寫11111111111111110-00-110----110--110接收郵箱全局掩碼位。這些位用來(lái)作為掩碼匹配郵箱。注意郵箱ID字的對(duì)其并不如兩個(gè)最重MG比特字RTRIDE那么完善。這兩個(gè)字段位于郵箱的控制與狀態(tài)寄存器。下表詳細(xì)介紹了MG比特是如何掩碼每個(gè)郵箱的過(guò)濾字段的。接收掩碼寄存器MCR[IRMQ]位被置位時(shí),RX14MASK31-31-讀寫1111111111111111接收緩沖區(qū)14掩碼位。每一個(gè)掩碼比特用作郵箱14相應(yīng)過(guò)濾字段的掩碼,與RXMGMASK寄存器被設(shè)置為郵箱的過(guò)濾器的方式一樣。詳細(xì)信息可以參考CAN_RXMGMASK寄存器。0相應(yīng)的過(guò)濾器的相應(yīng)位“不受影響”;1接收掩碼寄存器MCR[IRMQ]位被置位時(shí),RX15MASK31-讀31-讀寫1111111111111111接收緩沖區(qū)15掩碼位。每一個(gè)掩碼比特用作郵箱15相應(yīng)過(guò)濾字段的掩碼,與RXMGMASK寄存器被設(shè)置為郵箱的過(guò)濾器的方式一樣。詳細(xì)信息可以參考CAN_RXMGMASK寄存器。0相應(yīng)的過(guò)濾器的相應(yīng)位“不受影響”;1錯(cuò)誤計(jì)數(shù)器輸錯(cuò)誤計(jì)數(shù)器(T字段)以及接收錯(cuò)誤計(jì)數(shù)器(T字段。這些寄FlexCAN可以響應(yīng)協(xié)議中所描述的任何的總線狀態(tài),例如傳輸“主動(dòng)錯(cuò)誤”或狀態(tài)下在總線上的任何影響。以下為用于FlexCAN總線狀態(tài)傳輸?shù)幕疽?guī)則。如果TT128“如果FlexCAN模塊的狀態(tài)為錯(cuò)誤”狀態(tài),并且T或者T自減到一個(gè)小于等于127的值并且其他的都已經(jīng)滿足條件,錯(cuò)誤與狀態(tài)寄存器的“如果T255FLTCONF段將會(huì)更新以表示“總線關(guān)閉”狀態(tài),并且可能會(huì)產(chǎn)生一個(gè)中斷。T的值會(huì)復(fù)位到0。如果FlexCAN模塊處于“總線關(guān)閉”狀態(tài),然后 T與另外一個(gè)內(nèi)部計(jì)數(shù)器級(jí)聯(lián)在CAN總線上達(dá)到第128個(gè)連續(xù)11個(gè)1位時(shí), T將會(huì)復(fù)位到0并且以這種方式計(jì)數(shù),在內(nèi)部計(jì)數(shù)器計(jì)數(shù)11個(gè)如此位且此后環(huán)繞遞增T的值。當(dāng) T達(dá)到128時(shí),錯(cuò)誤與狀態(tài)寄存器的FLTCONF字段會(huì)更新到“主動(dòng)錯(cuò)誤”并且兩個(gè)錯(cuò)誤計(jì)數(shù)器都會(huì)復(fù)位到0。在少于11個(gè)連續(xù)隱性位數(shù)據(jù)流之后出現(xiàn)顯性位,內(nèi)部計(jì)數(shù)器將會(huì)復(fù)位自己為0并且不會(huì)影響 T值。過(guò)錯(cuò)誤與狀態(tài)寄存器的ACKERR為來(lái)表征, T會(huì)在試圖發(fā)送每一個(gè)報(bào)文時(shí)增加1。當(dāng)轉(zhuǎn)變到“錯(cuò)誤”狀態(tài)之后, T增加到一個(gè)大于127的值,它將不會(huì)在增加,即使在接收時(shí)檢測(cè)到再多的錯(cuò)誤。在下一個(gè)報(bào)文正確接收時(shí),計(jì)數(shù)器將會(huì)被設(shè)置一個(gè)在119到7-讀0TT寫0000000000000000 7- 錯(cuò)誤與狀態(tài)寄存器CPU93000011XX10111000讀0寫0000000讀寫0000000000000000OO能夠參與到通信過(guò)程。該位FlexCAN模塊置位與清除。CAN_ESR1寄存器介發(fā)送警告中斷標(biāo)志位。MCR寄存器WRNEN位被置位TXWRN0變?yōu)?時(shí),TWRNINT位置位,意味著發(fā)送錯(cuò)誤計(jì)數(shù)器達(dá)到了96。如果控制寄存器的相應(yīng)掩碼位(TWRNMSK)被置CPU產(chǎn)生一個(gè)中斷。通過(guò)向該位1,可以清否則WRNEN位再次被置位時(shí)該位也會(huì)被置位。向該位0沒(méi)有影響。在“總線0不發(fā)生此;1發(fā)送錯(cuò)誤計(jì)數(shù)器的值將會(huì)從小于96轉(zhuǎn)換到大于等于接收警告中斷標(biāo)志位。如MCRWRNEN位被置位RXWRN標(biāo)志位從0轉(zhuǎn)變1RWRNINT位被置位,這意味著接收錯(cuò)誤計(jì)數(shù)器達(dá)到96。如果控制寄當(dāng)WRNEN位被清0,該標(biāo)志將會(huì)被。CPU必須在該位之前清除該標(biāo)志位。不然該WRNEN被再次置位時(shí)被置位。向該位0沒(méi)有影響。在凍結(jié)模式下該位不會(huì)被更新。0沒(méi)有如此;1接收錯(cuò)誤計(jì)數(shù)器的值將會(huì)從小于96轉(zhuǎn)變到大于Bit1錯(cuò)誤標(biāo)志。該位表示在一個(gè)報(bào)文內(nèi)傳輸與接收比特不一致。注意:該位不會(huì)被發(fā)送器置位如果在仲裁階段或ACK間隙,如果一個(gè)節(jié)點(diǎn)發(fā)送一個(gè)錯(cuò)誤標(biāo)志,該標(biāo)志表示檢測(cè)到一個(gè)顯性比特。0沒(méi)有如此;1至少有一個(gè)發(fā)送的比特被接0沒(méi)有如此;1至少有一個(gè)發(fā)送的顯形比特被接收為顯性比特與接收到的不一樣。0沒(méi)有CRC校驗(yàn)錯(cuò)誤;1從上次該寄存器之后發(fā)生了CRC校驗(yàn)錯(cuò)誤字段至少包含一個(gè)比特。0沒(méi)有格式錯(cuò)誤;1從上次該寄存器之后發(fā)填充錯(cuò)誤。該位表示檢測(cè)到一個(gè)填充錯(cuò)誤。0沒(méi)有填充錯(cuò)誤;1從上次該寄下更新。0沒(méi)有發(fā)送錯(cuò)誤警告 T的值大于等于更新。0沒(méi)有接收錯(cuò)誤警告 T的值大于等于存器的描述。0FlexCAN模塊沒(méi)有傳輸報(bào)文;1FlexCAN正在5-錯(cuò)誤界定狀態(tài)。這兩位用來(lái)表FlexCAN模塊的界定模式。如果控制寄LOM要一個(gè)CAN比特時(shí)間來(lái)使得他們?cè)僖淮我恢隆?0主動(dòng)錯(cuò)誤01錯(cuò)誤1X總線關(guān)FlexCAN模塊正在接收?qǐng)?bào)文。該位用來(lái)指示FlexCAN模塊正在接收?qǐng)?bào)文。相應(yīng)的掩碼(BOFFMSK)置位CPU產(chǎn)生一個(gè)中斷。通過(guò)向1清除該標(biāo)志位,寫0無(wú)影響。0沒(méi)有總線關(guān)閉中斷;1FlexCAN模塊進(jìn)入到總線關(guān)閉錯(cuò)誤中斷。該位標(biāo)志至少有一位錯(cuò)誤位(bits15-10)被置位。如果相應(yīng)的掩志位,寫0無(wú)影響。0沒(méi)有錯(cuò)誤中斷;1表示在錯(cuò)誤與狀態(tài)寄存器的任何一個(gè)斷;1表示當(dāng)FlexCAN模塊在睡眠模式或者停止模式時(shí),在CAN總線收到一中斷掩碼寄存器該寄存器允許32個(gè)報(bào)文緩沖區(qū)中斷的任何一個(gè)或者開啟。每一個(gè)緩沖區(qū)在該寄存器中都有一個(gè)相應(yīng)的位,允許CPU決定當(dāng)成功接收或者發(fā)送時(shí)緩沖區(qū)是否產(chǎn)生例如,當(dāng)IFLAG2位被置位么當(dāng)緩沖區(qū)2完成收發(fā)過(guò)程時(shí),會(huì)向CPU產(chǎn)生中斷。31-讀寫0000000000000000緩沖區(qū)MBi掩碼.用來(lái)使能或者相應(yīng)FlexCAN報(bào)文緩沖區(qū)中斷。注意:如果相應(yīng)者一個(gè)中斷請(qǐng)求。0相應(yīng)的緩沖區(qū)中斷;1開啟相應(yīng)的緩沖區(qū)中斷中斷掩碼寄存器寄存器允許32個(gè)報(bào)文緩沖區(qū)中斷的任何一個(gè)或者開啟。每一個(gè)緩沖區(qū)在該寄存器中都有一個(gè)相應(yīng)的位,允許CPU決定當(dāng)成功完成接收或者發(fā)送時(shí)緩沖區(qū)是否產(chǎn)生中斷。例如,當(dāng)IFLAG1位被置位時(shí),那么當(dāng)緩沖區(qū)1完成收發(fā)過(guò)程時(shí),會(huì)向CPU產(chǎn)生中斷。31-31-讀寫0000000000000000緩沖區(qū)MBi掩碼.用來(lái)使能或者相應(yīng)FlexCAN報(bào)文緩沖區(qū)中斷。注意:如果相應(yīng)蔽一個(gè)中斷請(qǐng)求。0相應(yīng)的緩沖區(qū)中斷;1開啟相應(yīng)的緩沖區(qū)中斷中斷標(biāo)志寄存器10無(wú)在更新MCR[MAXMB]字段之前,CPU必須首先處理值大于MCR[MAXMB]的中斷服務(wù)程序。不然他們會(huì)仍然置位并且與可用的MBs的個(gè)數(shù)不一致。31-讀寫0000000000000000緩沖區(qū)沒(méi)有成功地完成傳輸或者發(fā)送報(bào)文;1相應(yīng)的緩沖區(qū)已成功地完成傳輸或者接中斷標(biāo)志寄存器該寄存器為32個(gè)報(bào)文緩沖區(qū)中斷定義了標(biāo)志位。每一個(gè)緩沖區(qū)都有一個(gè)中斷標(biāo)志位。每一次成功地傳輸或者接收都會(huì)設(shè)置相應(yīng)的IA1比特。如果相應(yīng)的IMASK1寄存器位置位,那么就會(huì)產(chǎn)生一個(gè)中斷。向相應(yīng)的中斷標(biāo)記為寫1可以清除該位,寫0無(wú)影響。IFLAG比特位必須被清除。在更新MCR[MAXMB]字段之前,CPU必須處理MB值大于MCR[MAXMB]的IFLAG1比MBs7654-讀寫0000收隊(duì)列FIFO被),該位用來(lái)表示MB7的中斷標(biāo)志位。位被置位,那么該位用來(lái)表示“接收隊(duì)FIFO溢出”標(biāo)志。在這種情況下,該標(biāo)志位標(biāo)志一個(gè)報(bào)文將會(huì)因?yàn)榻邮贞?duì)列滿而丟失。注意當(dāng)接收隊(duì)列FIFO滿時(shí)該位不會(huì)被置位,并且報(bào)文被郵箱捕捉。0MB7緩沖區(qū)沒(méi)有完成接收或者發(fā)送(當(dāng)MCR[RFEN]=0)或者接收隊(duì)列FIFO溢出(當(dāng)MCR[RFEN]=1);1MB7完成發(fā)送或者接收(當(dāng)MCR[RFEN]=0)或者接收FIFO溢出(當(dāng)MCR[RFEN]=1)緩沖區(qū)MB6中斷或者“接收隊(duì)列警告”。當(dāng)MCR的RFEN位為0時(shí)(接收隊(duì)列或者接收隊(duì)列FIFO幾乎滿(當(dāng)MCR[RFEN]=1);1MB6完成傳輸或者接收(當(dāng)FlexCAN模塊清除MCR[RFEN]位置位時(shí),該位表示“接收隊(duì)列FIFO中有發(fā)生傳輸或者接收操作(當(dāng)MCR[RFEN]=0)或者在接收隊(duì)FIFO中可用的幀(當(dāng)MCR[RFEN]=1);1MB5完成傳輸或者接收操作(當(dāng)MCR[RFEN]=0)或者接收隊(duì)列4-隊(duì)列表示MB4到MB0的中斷標(biāo)志位。注意:當(dāng)MCR[RFEN]位被CPU寫入時(shí),F(xiàn)lexCAN將會(huì)清除這些位標(biāo)志。當(dāng)MCRRFEN位置4到緩沖區(qū)0的標(biāo)志位被保留。0相應(yīng)的緩沖區(qū)沒(méi)有發(fā)生發(fā)送或者接收(當(dāng)讀0寫1101100001001000讀0寫00000000000000000維持寫限制;1使能寫FlexCAN內(nèi)存最大的可選的過(guò)濾器數(shù)目由MCU來(lái)定義。該字段只能在凍結(jié)模式下被寫,在其他模目,這些MCR[MAXMB]所定義。注意:每8個(gè)過(guò)濾器2個(gè)報(bào)文緩沖內(nèi)存空間的數(shù)的過(guò)濾器的值,可以按照以下方式來(lái)計(jì)算:(SETUP_MB-接收隊(duì)列和ID過(guò)濾器表所占有的由接收隊(duì)列私有掩碼所影響的接收隊(duì)列ID由接收隊(duì)列全局掩碼所影響的接收隊(duì)ID8MB0-MB8-MB0-MB10-MB0-MB12-MB0-MB14-MB0-MB16-MB0-MB18-MB0-MB20-MB0-MB22-MB0-MB24-MB0-MB26-MB0-MB27-MB0-MB30-MB0-MB32-MB0-MB34-MB0-MB36-MB0-MB38-SETUP_MBNUMBER_OF_MBMAXMB之間最小的。仍然可用的郵箱數(shù)目為(SETUP_MB-8)-(RFEN×2).如果接收隊(duì)FIFO的值被設(shè)置為超最后剩余可用的郵箱數(shù)NUMBER_OF_MB1MCR寄存器MAXMB字段MBCAN波特率反比于外設(shè)時(shí)鐘頻率。優(yōu)化的仲裁時(shí)間為在CAN數(shù)據(jù)幀的間隔字段的第一個(gè)比特之前最后一個(gè)MB被掃描的時(shí)間。因此,如果有很少的MBs、系統(tǒng)與串行時(shí)鐘的比率很高并且CAN波特率很低,那么仲裁可以延遲反之亦然。如果TASD0,那么仲裁開始將不會(huì)延遲。因此CPU只有很少的時(shí)間來(lái)為下一次仲裁配置接收MB,但是可以有很長(zhǎng)的時(shí)間用來(lái)仲裁。另一方面,如TASD的值為24那么CPU可以推遲配置發(fā)送MB但是只會(huì)有很少的時(shí)間用于仲裁。如果用于仲裁的時(shí)間太少,F(xiàn)lexCAN可能不會(huì)及時(shí)地找CAN總線上相對(duì)于其他節(jié)MBs,仲裁優(yōu)先的MBs可能不是最適合傳輸?shù)摹ASD的最優(yōu)配置可以{fSYS×[1+(PSEG1+1)+(PSEG2+1)+(PROPSEG+1)]×(PRESDIV+1)}其中:fCANCLK為協(xié)議引擎(PE)時(shí)鐘,Hz;fSYS為外設(shè)時(shí)鐘,Hz;MAXMB位字段CTRL1[MAXMB]的值;RFEN位字段CTRL1[RFEN]的值;RFEN位字段PROPSEGCTRL1[PROPSEG]的值;PRESDIVCTRL1[PRESDIV]的值方 在相應(yīng)的報(bào)文緩沖區(qū)。不會(huì)自動(dòng)產(chǎn)生回應(yīng)幀。如果該位被清0,求幀會(huì)被提交以開始匹配過(guò)程并且如果一個(gè)消息緩沖區(qū)CODE=0b1010ID那么會(huì)產(chǎn)生一個(gè)自動(dòng)回應(yīng)幀。該位只有在凍結(jié)模式下被寫入,在其他模式下該位被硬件鎖定。0產(chǎn)生回應(yīng)幀;1請(qǐng)求幀被。位接收郵箱開啟整幀仲裁字段比較。在匹配過(guò)程中該位控制接收郵箱過(guò)濾器IDE和RTR位與接收到的幀的相應(yīng)位比較。該位不會(huì)影響接FIFO的匹配。該位只有在凍結(jié)模式下被寫入,在其他模式下該位被硬件鎖定。0接收郵箱過(guò)濾器IDE位總是比較RTR從來(lái)不比較不管其掩碼位是什么;1開啟接收郵箱過(guò)濾器IDERTR與接收幀的相應(yīng)位進(jìn)行比較。位不起作用錯(cuò)誤與狀態(tài)寄存器讀0寫0000000000000000讀0V0寫0000000000000000最低優(yōu)先權(quán)的發(fā)送郵箱。如果ESR2[VPS]位被置位,該位用來(lái)說(shuō)明最低數(shù)目的非激活郵箱。如果一個(gè)發(fā)送郵箱正在進(jìn)行傳輸操作,那么LPTM的計(jì)算將不會(huì)被考慮。如有效優(yōu)先權(quán)狀態(tài)。該位用來(lái)指IMBLPTM的內(nèi)容當(dāng)前是否有效。每一次成功地完成發(fā)送仲裁過(guò)程時(shí)VPS置位,除了在發(fā)送仲裁階段,CPU寫已經(jīng)掃描過(guò)的郵箱的控制狀態(tài)寄VPS0ESR2[VPS]不會(huì)因?yàn)槿蜟PU寫一個(gè)被退出機(jī)制而鎖定的當(dāng)輸?shù)腗BC/S的中止代碼或者任何企圖進(jìn)入MB將會(huì)被鎖定0IMB的內(nèi)容無(wú)效;1IMBLPTM的內(nèi)容有效0b10000b0000).在下列情況下該位被置位:1仲裁階段,如果發(fā)送LPTM該位被清0。注意:LPTM機(jī)制具有如下的行為MB被成功地傳輸并且ESR2[IMB]=0(沒(méi)有如果ESR2[VPS]被置位,那么會(huì)至少有一個(gè)非激活郵箱。LPTM為郵箱CRC寄存器讀00寫0CRC。該字段用來(lái)指示最后一個(gè)傳輸?shù)腃RC值。在發(fā)送中斷標(biāo)志位被接收隊(duì)列FIFO全局掩碼寄存器素,這些表元素由于CTRL2[RFEN]字段的設(shè)定并沒(méi)有相應(yīng)的RXIMR。31-讀31-讀寫A--B--C---下表詳細(xì)地描述了FGM位是如何對(duì)應(yīng)IDAF的每一位的。MCR[IDM]B14個(gè)最重要的標(biāo)識(shí)符比特和接收隊(duì)列FIFO的過(guò)濾器進(jìn)行比較。比特和接收隊(duì)列FIFO的過(guò)濾器進(jìn)行比較。接收隊(duì)列FIFO信息寄存器通過(guò)該寄存器CPU可以位于RAM的RXFIR隊(duì)列FIFO的輸出結(jié)果。當(dāng)有一收隊(duì)FIFO的結(jié)果也RXFIE隊(duì)列FIFO由FlexCAN寫入。該寄存器的介紹參見“接收隊(duì)列FIFO”章節(jié)。8-讀08-讀0寫8-當(dāng)接收私有掩碼寄存器FIFO,那么會(huì)給每個(gè)可用的郵箱提供一個(gè)掩碼寄存器,該掩碼控制器為郵箱的每一位提供ID掩碼功能。當(dāng)開啟了接收隊(duì)列FIFO(MCR[RFEN]位置位可以有高達(dá)32個(gè)接收私有掩碼寄存器以一對(duì)一的方式應(yīng)用于接收隊(duì)列FIFOID過(guò)濾器表元素,這取決于31-讀寫地址:4002_4000h(基址)+8831-讀寫收隊(duì)列過(guò)濾器表元素,可以參RXFGMASK寄存器的描述。0過(guò)濾器中相應(yīng)比特位48.3.56報(bào)文緩沖區(qū)結(jié)每一個(gè)私有MB都由16個(gè)字節(jié)組成。TIME這4位可以被CPU以及FlexCAN模塊所(讀和寫,用來(lái)作為報(bào)文緩沖區(qū)匹配與仲裁過(guò)程的一部分。該碼的如表48-109及表48-110所示。參見功能48-108接收到幀之0b0000:非激活MB沒(méi)有激---MB沒(méi)有參與0b0100:空MB激活并且為--如果一個(gè)幀被具體細(xì)節(jié)參見CODE是-在解鎖C/S字不會(huì)使codeEMPTY狀態(tài)。務(wù)之后有一個(gè)新幀MB,該-如果在CPU為其服務(wù)之前,MB位空并且一個(gè)新幀被移入到MB,那么code自動(dòng)更新為OVERRUN0b0110:OVERRUN-MB正被覆蓋是-如果CODE字段指示OVERRUNCPU已經(jīng)處MB,當(dāng)一個(gè)新幀移入到MB時(shí),CODE否-如果CODE字段已經(jīng)為且有另外一個(gè)那么MB將會(huì)被code會(huì)仍然處于OVERRUNOVERRUN態(tài)的細(xì)節(jié)參見0b1010:RANSWER4:一個(gè)新幀被-0—個(gè)遠(yuǎn)程應(yīng)答被配置用來(lái)識(shí)別接收到的遠(yuǎn)之后MB被設(shè)置為傳輸一個(gè)回復(fù)幀。Code自動(dòng)改變?yōu)椋?b1110。具CTRL2寄存器的RRS位0,當(dāng)收到ID的請(qǐng)求幀時(shí)發(fā)送--1在匹配與仲裁CODE[0]=1b1;BUSY-FlexCAN正MB--表示正在更新MB,他會(huì)被自動(dòng)清0并且不會(huì)干擾下一次的--M(Move- 48-110接收幀之前的成功發(fā)送之后的Tx--MB不參與到仲裁0b1001:ABORT--MB不參與到仲0b1100:DATA-MB的RTR位必為0)0MB自動(dòng)轉(zhuǎn)變?yōu)镮NACTIVE狀態(tài)0b1100:REMOTE-為一個(gè)發(fā)送請(qǐng)求(MB的RTR位必須1過(guò)之后,MB自動(dòng)以相同的ID轉(zhuǎn)0b1110:TANSWER--碼,如果與請(qǐng)由CHI自動(dòng)寫入到自動(dòng)轉(zhuǎn)變?yōu)椋?b1010)。CPU也可以寫該code并是其他遠(yuǎn)程請(qǐng)求RTR的值。參見“匹SRR——替代請(qǐng)求。固定隱性位只用于擴(kuò)展幀格式。在傳輸時(shí)(發(fā)送緩沖區(qū)該位必須設(shè)置為‘1,并且會(huì)將從CAN總線上的接收到的值于接收緩沖區(qū)。它RTR——傳輸請(qǐng)求。該位影響幀的行為并且是接收過(guò)濾器的一部分。FlexCAN傳輸‘1(性)接收‘0(顯性,這解釋為仲裁丟失。如果1=如果MB是發(fā)送MB,那么表示當(dāng)前的MB可能有一個(gè)請(qǐng)求幀等待發(fā)送;如果MB是接收MB,那么接收到的請(qǐng)求幀將會(huì)被起來(lái);0=表示當(dāng)前的MB有一個(gè)數(shù)據(jù)幀等待傳輸。接收MB可能會(huì)被用于匹配過(guò)程由FlexCAN模塊寫入,從接收幀的DLC(DataLengthCode)字段拷貝而得到。在傳輸階段,該字段由CPU寫入,并且與要傳輸幀的DLC字段相對(duì)應(yīng)。當(dāng)RTR=1時(shí),被傳輸?shù)膸瑸閹⑶也还蹹LC字段是什么都不包括在數(shù)據(jù)字段。TIMESTAMP——自由運(yùn)行計(jì)數(shù)器時(shí)間戳。該16位字段拷貝自自由運(yùn)行計(jì)數(shù)器,在當(dāng)標(biāo)識(shí)符字段的開始出現(xiàn)在CAN總線時(shí)用于捕捉傳輸或者接收幀。PRIO——本地優(yōu)先級(jí)。這3位只有當(dāng)MCR寄存器的LPRION_EN位置位時(shí)這三位才有用,并且只對(duì)傳輸郵箱有效。這些位不會(huì)被傳輸。他們經(jīng)常被附加到ID來(lái)定義來(lái)標(biāo)識(shí)接收或者發(fā)送的幀。18DATABYTE0-78據(jù)幀,從總線上接收到的數(shù)據(jù)幀以它被接收時(shí)的格式進(jìn)行存放。DATABYTE(n)只有當(dāng)n小于DLC的值時(shí)才有效。01DATA2345678當(dāng)MCR[RFEN]位被置位,內(nèi)存空間的0x80到0xDC(通常被MB0到MB5占用)將會(huì)被用于接收隊(duì)列FIFO引擎。區(qū)間0x80到0x8C包含隊(duì)列FIFO的輸出,該隊(duì)列必須被CPU當(dāng)作報(bào)文緩沖。該輸出主要包含最舊的沒(méi)有被的接收?qǐng)?bào)文。區(qū)間0x90到0xDC主要另外一個(gè)內(nèi)存區(qū)開始地0xE0并且可以擴(kuò)展到最大0x2D(MBs6到MBs37占用)這主要取決于CTRL2[RFEN]字段的設(shè)置,包含ID過(guò)濾器表(可配置8128個(gè)表元素)FIFO的幀制定過(guò)濾標(biāo)準(zhǔn)。MBs7(RFEN=0TIME0x90-0xDC預(yù) 0xE80x2D4ID過(guò)濾器表元2 每一個(gè)ID過(guò)濾器表元素占據(jù)一整個(gè)32位字并且可以被1個(gè)、2個(gè)或者四個(gè)IDAF(標(biāo)記符接收過(guò)濾器)所復(fù)合,這取決于MCR[IDAM]字段的設(shè)置。下圖顯示了IDAF索引。48-113ID表結(jié)0TXIDB_0(標(biāo)準(zhǔn)幀=29-19,擴(kuò)展幀=29-1=接收幀數(shù)據(jù)幀;到隊(duì)列FIFO。0——擴(kuò)展幀但是接收標(biāo)準(zhǔn)幀RXIDA——接收幀標(biāo)識(shí)符(格式A。表示被用作隊(duì)列FIFO接收標(biāo)準(zhǔn)的ID。在標(biāo)11(29-19)被用作幀標(biāo)識(shí)符。在擴(kuò)展幀格式RXIDB_0,RXIDB_1——接收幀標(biāo)志符(IDFIFO的接收標(biāo)準(zhǔn)。在一個(gè)標(biāo)準(zhǔn)幀格式中,有11個(gè)最重要的比特位(一個(gè)完全標(biāo)準(zhǔn)ID)(2919位以及從第13位到第3位)被用來(lái)作為幀的唯一標(biāo)志符。在擴(kuò)展幀格式中,字段的所有14ID進(jìn)行比較。CIDFIFO8個(gè)比特用來(lái)和接收ID8位比特進(jìn)行比較。FlexCAN模塊具有CAN協(xié)議引并且具有一個(gè)用于發(fā)送與接收CAN幀的非常靈活的郵箱系統(tǒng)。郵箱系統(tǒng)由高達(dá)64個(gè)報(bào)文緩沖區(qū)組成,這些報(bào)文緩沖區(qū)用于配置與控制數(shù)據(jù),時(shí)間戳,報(bào)文ID以及數(shù)據(jù)(參見報(bào)文緩沖區(qū)結(jié)構(gòu)。和前38MBs相對(duì)應(yīng)的內(nèi)存空間可以被配置成支持FIFO制,該機(jī)制具有一個(gè)很強(qiáng)大的ID過(guò)濾機(jī)能夠檢測(cè)接收幀的ID(最多可以是128個(gè)擴(kuò)展幀ID或者256個(gè)標(biāo)準(zhǔn)幀ID或者512個(gè)8比特的ID分片有高達(dá)32個(gè)ID表提供私有掩碼寄存器。同時(shí)支持通過(guò)隊(duì)列FIFO以及郵箱接收。對(duì)于郵箱接收,一個(gè)匹配算法可以使得將接收到的幀到MBs中,該MB的ID字段和接收到的幀具有相同的ID字段。掩碼機(jī)制可以使得MB中設(shè)置ID號(hào)與一系列CANID行匹配。對(duì)于傳輸,仲裁算法可以基于報(bào)文的ID(通過(guò)本地3個(gè)比特的優(yōu)先權(quán)字段來(lái)選擇)或者M(jìn)B的排序來(lái)決定將要發(fā)送的MBs的優(yōu)先權(quán)。在進(jìn)行功能描述之前,必須先解釋一個(gè)重要的概念。如果一個(gè)報(bào)文緩沖區(qū)即ACTIVE。一個(gè)具有0b0000code的接收MB0b1000b或者0b1001code的MB傳輸過(guò)MB(等待傳輸CODE0一旦在第四步中MB被激活,那么其就會(huì)參與到仲裁過(guò)程并且最終會(huì)根據(jù)它的優(yōu)先級(jí)被傳輸出去。在成功傳輸?shù)淖詈螅杂蛇\(yùn)行計(jì)數(shù)器的值會(huì)被寫入到時(shí)間戳字段,控制與狀態(tài)字的CODE字段也會(huì)被更新,CRC寄存器被更新,中斷標(biāo)志寄存器的狀態(tài)位被置位并且如果使能了相應(yīng)的中斷掩碼位則會(huì)產(chǎn)生一個(gè)中斷請(qǐng)求。在傳輸之后的CODE碼會(huì)在第四步中被用來(lái)激活MB的碼字。當(dāng)開啟丟棄功能時(shí)(MCR[AEN]被置位MB標(biāo)志位被置位時(shí),該MB會(huì)被鎖定因此CPU不會(huì)更新它直到中斷標(biāo)志被CPU。仲裁過(guò)當(dāng)CPU寫獲得優(yōu)先權(quán)的MB的控制與狀態(tài)字并且CANIntermission如果在CAN總線達(dá)到Intermission字段的第一個(gè)比特之前仲裁過(guò)程沒(méi)有能夠完FlexCAN下一次競(jìng)爭(zhēng)CAN總線。優(yōu)先權(quán)。當(dāng)CTRL1[LBUF]位置位時(shí),MCR[LPRIO_EN]位將不會(huì)產(chǎn)生作用。高優(yōu)先級(jí)郵箱優(yōu)CAN如他們以本地優(yōu)先權(quán)的方式在CAN幀中被傳輸一樣。表48-114當(dāng)本地優(yōu)先權(quán)是仲裁值的構(gòu)郵箱仲裁值(32比特IDE(1比特-(18比特-(1比特SRR(1比特IDE(1比特48-11548-115郵箱仲裁值(32比特PRIO(3特-(18比特-(1比特PRIO(3特仲裁過(guò)程(續(xù)區(qū)(TxSMB)的隱藏的輔助MB,它和普通的MB具有相同的結(jié)構(gòu),但是用戶不可。該操作稱之為“Move-out”并且在此之后,相應(yīng)MB的寫操作將會(huì)被鎖定(如MCR中的AEN為被置位。如果發(fā)生以下時(shí)間那么寫操作將會(huì)被釋放:CAN總線上的第一個(gè)機(jī)會(huì)窗口,位于TxSMB內(nèi)的報(bào)文將會(huì)依據(jù)CAN協(xié)議規(guī)則進(jìn)行傳輸。FlexCAN模塊最多傳輸8個(gè)數(shù)據(jù)字節(jié),即使DLC字段(DataLengthCode)的值遠(yuǎn)遠(yuǎn)大于該值。在發(fā)送與接收幀的從CANCRC字段到幀的最后,仲裁開始點(diǎn)取決于參數(shù)NUMBER_OF_MB以及TASD的初始化值。此外,可以改變TASD的值優(yōu)化仲裁開始在CAN總線關(guān)閉狀態(tài)T的值從124到128。開始點(diǎn)取決于NUMBER_OF_MB以及TASD參數(shù)的初始化值。另外,TASD的值在仲裁開始點(diǎn)可在總線的IDLE狀態(tài)時(shí),C/S的值被CPU寫入。第一個(gè)C/S寫操作將會(huì)啟動(dòng)仲裁過(guò)程并且在同一個(gè)仲裁中第二次寫C/S了其他的C/S操作,那么仲裁過(guò)程將會(huì)被中止。如果在仲裁過(guò)程完成之后沒(méi)有仲如果有一個(gè)沒(méi)有處理的仲裁過(guò)程并且開始了BusIdle狀態(tài),那么將會(huì)觸發(fā)仲裁過(guò)程。在這種情況下,在BusIdle狀態(tài)下的第一次與第二次的C/S寫將成仲裁并且下一個(gè)狀態(tài)為Idle。在這種情況下,掃描將不會(huì)被中斷,并且它將會(huì)在總線Idle狀態(tài)下完成。在這次仲裁過(guò)程中,寫C/S將不會(huì)導(dǎo)致重新開始線Idle狀態(tài)下進(jìn)行重同步,那么將會(huì)重啟仲裁過(guò)程。會(huì)像平常一樣掃描該MB。接收過(guò)(0b0100接收到的標(biāo)識(shí)符字段被48-110讀郵箱的內(nèi)容,一旦郵箱被鎖定那么它的內(nèi)容將不會(huì)被FlexCANinCPU應(yīng)該通過(guò)特定郵箱的IFLAG寄存器的狀態(tài)標(biāo)識(shí),與接收到的幀同步,而不是CPU會(huì)立即處理該郵箱(在郵箱之后C/S字),CODE字段并不會(huì)轉(zhuǎn)變?yōu)镋MPTY。它將仍然是FULL狀態(tài),正如表48-109所描述的那樣。如果CPU想在沒(méi)有安全失活郵箱之后,通過(guò)強(qiáng)制向C/S字寫EMPTY碼改變這種狀況,一個(gè)注意接收到的幀的標(biāo)志符字段總是在匹配的郵箱中,因此如果匹配被屏蔽,在郵箱中的ID字段的內(nèi)容可能會(huì)改變。同時(shí)也要注意如果存在一個(gè)匹配的接收郵箱,F(xiàn)lexCAN模塊可以自己來(lái)傳輸幀,只要MCR[SRXDIS]位沒(méi)有被置位。如果MCR[SRXDIS]為置位,那么FlexCAN將永不會(huì)在任何MB中自己被傳輸?shù)膸?,MB,并且沒(méi)有中斷標(biāo)志或者不會(huì)因?yàn)榻邮諑a(chǎn)生中斷信為了能夠通過(guò)接收隊(duì)列FIFO接收CAN幀,CPU必須在凍結(jié)模塊使能并且配置接收隊(duì)列FIFO只要接收到的幀在接收隊(duì)列FIFO中斷中可(參考IFLAG[BUF5I]的表CPU放MB并且允許CPU下一個(gè)接收隊(duì)列FIFO實(shí)體。匹配過(guò)匹配過(guò)程掃描MBCANIDMBs。FIFOFIFO下,匹配將從具有最小號(hào)的報(bào)文緩沖區(qū)向最大號(hào)的報(bào)文緩沖區(qū)進(jìn)行。如果在第一FIFO在FIFO的MB。串行報(bào)文緩沖區(qū)(RxSMB。DLC0,那么開始點(diǎn)為幀的DATA字段;如果在隊(duì)列FIFO表或者郵箱中找到一個(gè)匹配的ID,那么SMB的內(nèi)容會(huì)被傳入到FIFO或者通過(guò)move-in過(guò)程來(lái)匹配郵箱。如果檢測(cè)到任何CAN協(xié)議的錯(cuò)誤,那么不會(huì)有任何的匹配結(jié)果被傳入到FIFO或者在接收結(jié)束時(shí)傳入匹配的郵箱。FIFO(如果開啟)以及激活的接收郵箱(CODE字段為EMPTY,FULL,OVERRUN或者RANSWER)來(lái)尋找與從CAN總線上接收到的SMB元素匹配的IDSMB和郵箱具有相同的結(jié)(接收隊(duì)列FIFO或者郵箱)與具48-116]0-0no-0-110-110111----SMB[IDE]置位,ID字段為29比特(ID標(biāo)準(zhǔn)+ID擴(kuò)展。如果SMB[IDE]為清空,那么ID只有11位(ID標(biāo)準(zhǔn)。對(duì)于FIFO結(jié)構(gòu),ID長(zhǎng)度取決于IDAM。郵箱的CODE字段是FULLOVERRUN,并且該郵箱已經(jīng)被處理過(guò)(C/S字已經(jīng)被CPU過(guò)并且已經(jīng)被;FIFOMCR[IRMQ]0,那么匹配優(yōu)勝可以通過(guò)CTRL2[MRP]位選擇掃描的優(yōu)先級(jí)郵箱優(yōu)先還是接收隊(duì)列FIFO優(yōu)先。如果選擇的優(yōu)先級(jí)是接收隊(duì)列FIFO第一:如果接收隊(duì)列FIFO是匹配結(jié)構(gòu)并且是-to-receive,那么接收隊(duì)列FIFO就是匹配優(yōu)勝者而不再掃描郵箱;receive掃描接收隊(duì)列FIFO;FIFO如果上面的兩個(gè)情況都不滿足并且沒(méi)有找到一個(gè)匹配郵箱的MB中配FIFO中配00X-00X-01X-01X-01X-10X10X11X11X11X開啟FIFO,但是隊(duì)100X100(FIFO溢100100101101(FIFO出101X101X開啟FIFO,開啟110X110(FIFO溢110110111111X111111或者non--to-receive表示條件在MB的匹配中“ 不管其是否與非-to-receive匹配。FIFO不存在一樣(CTRL2[RFEN]=0在FIFO中的“NotFull”意味著該幀已經(jīng)和FIFO的過(guò)濾器相匹配并且有空余失活的郵箱是暫時(shí)的匹配優(yōu)勝者那么這個(gè)臨時(shí)匹配優(yōu)勝者將會(huì)變?yōu)榈?。匹配例如假設(shè)了FIFO,開啟了IRMQ并且有兩個(gè)MBs具有相同的ID,那么FlexCAN模塊將會(huì)ID開始接收?qǐng)?bào)文MBs是數(shù)組中的2個(gè)和5個(gè)。當(dāng)?shù)谝粋€(gè)報(bào)文到達(dá)時(shí)匹配算找到第一個(gè)與值相匹配的2號(hào)MB。該MB的code為EMPTY,因此該報(bào)文會(huì)存放在那里。當(dāng)?shù)诙€(gè)報(bào)文到達(dá)時(shí),匹配算又找到2號(hào)MB,但是它不為“-to-receive”,因此它將繼續(xù)尋找并且找到了5號(hào)MB然后將報(bào)文在那里。如果具有相同ID號(hào)的其他報(bào)文又到達(dá),匹配算發(fā)現(xiàn)已在多于一個(gè)的MB中匹配具有相同ID的能力可以被解釋為實(shí)現(xiàn)了一個(gè)接收隊(duì)列(除了全功能的FIFO)用來(lái)允許CPU可以處理多次MB。通過(guò)編程設(shè)置多于一個(gè)的具有相同ID的MB,接收到的報(bào)文必須排隊(duì)進(jìn)入到MBs。CPU可以測(cè)試MBs的時(shí)間通過(guò)使用ID接收掩碼使得匹配一系列的ID成為可FlexCan模塊的每一個(gè)MB(RXIMRx)的描述。在匹配算法階段,如果掩碼置位,那么將比較相應(yīng)的ID位。如果掩碼為0,那么將不比較相應(yīng)的ID位。請(qǐng)注意私有掩碼寄存器位于RAM中,因此他們?cè)趶?fù)位之后不會(huì)被初FlexCAN(RGXMASK,RX14MASK,RX15MASK以及RXFGMASK)主要是為了做到向后兼容。當(dāng)MCRIRMQ0移動(dòng)過(guò)移入(Move-移入過(guò)程是將由RxSMB接收到的報(bào)文拷貝到與之想匹配的接收郵箱或者接收FIFOFIFORXFIRFIFO內(nèi)。每一個(gè)RxSMB都有自己的移入過(guò)程,但是如前面描述的那樣在給定的時(shí)間內(nèi)只能有一個(gè)執(zhí)行自己的移入操作。只有當(dāng)擁有報(bào)文的RxSMB具有相應(yīng)的匹配優(yōu)勝CAN總線已經(jīng)達(dá)到或者已經(jīng)讓位于RxSMB的攜帶報(bào)文的幀的Intermission字段的第2個(gè)比特;通過(guò)或者讓位于RxSMB中攜帶報(bào)文的幀之后的一個(gè)過(guò)載幀的第整個(gè)文檔所出現(xiàn)的短語(yǔ)“pendingmove-in”RxSMB正在接收由FlexCAN模塊傳輸?shù)膸?,并且自我接收功能被(MCR[SRXDIX]位置位程。它將會(huì)等待退出凍結(jié)及低功耗模式并且等待被。如果MB在凍結(jié)模式下被解從RxSMB字DATA0-3及DATA4-當(dāng)正在進(jìn)行移入操作時(shí),目標(biāo)報(bào)文緩沖區(qū)的BUSY位(CODE字段最重要的一個(gè)比特)置位,用來(lái)警告CPU報(bào)文緩沖區(qū)的內(nèi)容會(huì)暫時(shí)的不一致。移出(Move-移出過(guò)程不是自動(dòng)完成的。只有當(dāng)CPU具 為了維持?jǐn)?shù)據(jù)的一致性以及FlexCAN模塊的正確操作,CPU必須遵守“傳輸過(guò)程”與“接收過(guò)程”所描述的規(guī)則。CPU以任何其他沒(méi)有指明的方式FlexCAN模MBFlexCAN傳輸終止機(jī)CPU傳輸是否終止或者幀是否能被終止或者該幀被傳輸了。(0b1001被配置用于傳輸?shù)募せ畹腗B第一次必須被終止然后更新它們。如果一個(gè)當(dāng)前正SMB止碼,那么寫操作將會(huì)被鎖定并且MB繼續(xù)保持激活,但是會(huì)捕獲到終止請(qǐng)求并且保如果上面所提到的條件都沒(méi)有滿足,那么MB會(huì)正確地傳輸,IFLAG寄存器的中CPU位時(shí)終止請(qǐng)求會(huì)被自動(dòng)清除。另一方面,如果滿足了以上條件中的任何一個(gè),幀將不會(huì)被傳輸;因此,終止碼會(huì)被寫入到CODE字段,IFLAG寄存器的中斷標(biāo)志置位并且向CPU產(chǎn)生一個(gè)中斷。如果在傳輸開始之前CPU寫終止碼,那么寫操作將會(huì)被鎖定;因此,MB被更新并且中斷標(biāo)志位置位。在這種方式下CPU僅僅需要終止碼以確定激活的MB被安這種情況下MB處于失活狀態(tài)并且不會(huì)終止。當(dāng)捕獲到一個(gè)終止請(qǐng)求時(shí)僅有一個(gè)郵箱CPUCODE字段以檢查該幀是被傳輸了(CODE=0b1000)還是被終止(CODE=0b1001FlexCAN過(guò)之后,即使在正常模式下,允許CPU依賴于郵箱數(shù)據(jù)的一致性。T000b1000;失活會(huì)自動(dòng)鎖定郵箱(參見章節(jié)“報(bào)文緩沖區(qū)鎖定機(jī)制FlexCAN模塊寫保護(hù)。當(dāng)RFEN置位時(shí),CPU必須維持FIFO區(qū)域的數(shù)據(jù)一致報(bào)文緩沖區(qū)鎖定除了MB的失活,F(xiàn)lexCAN模塊還有另外一個(gè)用于接收操作數(shù)據(jù)一致性的機(jī)制CPUCODEFULL或者OVERRUN的接收MB的控制與狀態(tài)字FlexCAN模CPU想以自動(dòng)的方式整個(gè)MBMBCPU自由運(yùn)行計(jì)數(shù)(全局操作時(shí),或者當(dāng)CPU不考慮其他的MB的CODE碼而其控制與狀態(tài)字時(shí),或者當(dāng)CPU向鎖定的MB中寫入C/S字時(shí),會(huì)釋放鎖定。MB的鎖定主要是為了避免在CPU某個(gè)MB時(shí)一個(gè)新幀寫入到MB中。注意:鎖定機(jī)制只用于接收MB,該MB不是FIFO隊(duì)列的一部分并且它的CODEEMPTY(0b0100例如,假定FIFO被并且數(shù)組的第二個(gè)與第五個(gè)MB被編程設(shè)置為具有相號(hào)MB的控制與狀態(tài)字時(shí),該MB被鎖定。文到達(dá)并且匹配算法發(fā)現(xiàn)已經(jīng)沒(méi)有當(dāng)一個(gè)報(bào)SMB移入MB時(shí),CODE字段BUSY為會(huì)置位CPU取控制與狀態(tài)字并且發(fā)現(xiàn)BUSY位被置位,那么它應(yīng)該延緩MB直到BUSY被清失活優(yōu)先于鎖定。如果CPU失活一個(gè)被鎖定的接收MB,那么它的鎖定狀態(tài)被忽略并且MB會(huì)在本輪的匹配中被標(biāo)記為無(wú)效。在SMB中任何未被處理的報(bào)文不會(huì)被傳入到任何的MB中。當(dāng)CPU讀自由運(yùn)行計(jì)數(shù)器或者另外一個(gè)MB的C/S字時(shí)一個(gè)MB不會(huì)被鎖定。接收隊(duì)列FIFOFIFO的輸出接口重復(fù)地報(bào)文緩沖區(qū)結(jié)構(gòu),CPU可以報(bào)文(以報(bào)文緩沖區(qū)的方式FIFO隊(duì)列的輸出、RXFIR寄存器然后清除該中斷。如果在FIFO中有多于一個(gè)的報(bào)文,通過(guò)清中斷操作將會(huì)以下一個(gè)報(bào)文來(lái)更新FIFO輸出并且會(huì)根據(jù)報(bào)文的屬性來(lái)更新RXFIR寄存器,再次CPU發(fā)出中斷。IFLAG[BUF6I](接收隊(duì)列警告)FIFO標(biāo)志位會(huì)一直置位直到CPU清除它。IFLAG[BUF7I]位會(huì)被置位。當(dāng)接收隊(duì)列滿并且該報(bào)文被郵箱所捕獲時(shí)該位不會(huì)被置位。該標(biāo)志位會(huì)一直置位直到CPU在FIFO隊(duì)列中每一個(gè)可用的幀都有相應(yīng)的IDHIT(標(biāo)志符可接收過(guò)濾命中指示符,該IDHIT可以通過(guò)RXFIR寄存器來(lái)。RXFIR[IDHIT]字段指示了在FIFO隊(duì)列輸出的報(bào)文,并且當(dāng)IFLAG[BUF5I]位置位時(shí)該字段是有效的。必須在清除該位之前RXFIR寄存器,RXFIR寄存器會(huì)給在FIFO隊(duì)列中的幀提供相關(guān)信過(guò)濾表中高達(dá)32個(gè)元素分別受私有掩碼寄存器(RXIMRx)的影響,通過(guò)CTRL2[RFEN]位的設(shè)置,允許定義非常高效的過(guò)濾標(biāo)準(zhǔn)。如果IRMQ位被清0,那么FIFO過(guò)濾器表會(huì)受到RXFGMASK的影響。CAN協(xié)議相關(guān)特幀幀是一種很特別的幀。用戶可以通過(guò)將郵箱傳輸時(shí)的RTR位設(shè)為“1”來(lái)編程一個(gè)郵箱為請(qǐng)求幀。請(qǐng)求幀發(fā)送成功之后,郵箱變?yōu)榱司哂邢嗤琁D的當(dāng)FlexCAN模塊接收到一個(gè)請(qǐng)求幀時(shí),可以對(duì)其采取三種處理方式,這取決于請(qǐng)求(CTRL2[RRS])以及接收隊(duì)列FIFO使能位(MCR[RFEN]:RRS0,IDCODE0b1010DID,么FlexCAN幀將不會(huì)存放在接收緩沖區(qū)。它僅僅用來(lái)觸發(fā)回應(yīng)幀的傳輸。掩碼寄存器不會(huì)用于遠(yuǎn)ID(RTR)將會(huì)被匹配。在接收到的DLC如果RRS位置位ID將會(huì)與CODE字段為0b0100,0b00100b0110的接收郵箱的ID進(jìn)行比較。如果有匹配的ID,那么該郵箱將會(huì)以與數(shù)據(jù)幀相同的格式來(lái)幀。不會(huì)自動(dòng)產(chǎn)生回應(yīng)幀。掩碼寄存器用于匹配過(guò)程。且當(dāng)成功完成接收隊(duì)列FIFO滿時(shí),會(huì)產(chǎn)生一個(gè)FIFO隊(duì)列溢出。過(guò)載時(shí)間在移入過(guò)程的最后在TIMESTAMP字段,為網(wǎng)絡(luò)行為提供時(shí)間參考。網(wǎng)絡(luò)時(shí)間同步。可以參考控制寄存器1(CTRL1)TSYN的描述。協(xié)議時(shí)下圖顯示了時(shí)鐘產(chǎn)生電路的結(jié)構(gòu)圖,產(chǎn)生的時(shí)鐘供給CAN協(xié)議引擎(PE)子模塊。CTRL1CLKSRC(振蕩器時(shí)鐘)還是連接到外設(shè)時(shí)鐘(PLL。為了保證運(yùn)行的可靠性,必須在模式(模塊配置寄存器的MDIS位)下來(lái)選擇時(shí)鐘源。48-104CAN產(chǎn)生的時(shí)鐘的抖動(dòng)性能應(yīng)該優(yōu)于PLL所產(chǎn)生的時(shí)鐘??梢詤⒁娍刂萍拇嫫?(CTRL1)的描述。CAN引擎所能處理的最小時(shí)間單位。一個(gè)位時(shí)間可以被分為三個(gè)部分(48-10548-118時(shí)間段1:該段包括CAN標(biāo)準(zhǔn)的段以及相位段1??梢酝ㄟ^(guò)CTRL1寄存PSEG1PROPSEG為416個(gè)最小時(shí)間份額;時(shí)間段2:該段代表CAN標(biāo)準(zhǔn)的相位段2.可以通過(guò)CTRL1寄存器的PSEG2字段來(lái)設(shè)置該段所占的時(shí)間份額,為28個(gè)不同的時(shí)間份額長(zhǎng)。48-105fCANCLK為協(xié)議引擎時(shí)鐘(PEHz;PSEG1為CTRL1[PSEG1]字段的值;PROPSEGCTRL1[PROPSEG]字段的值;PRESDIVCTRL1[PRESDIV]48-1185-21-4-31-5-41-6-51-7-61-8-71-9-81-使用二分之一的IPT(信息處理時(shí)間,該值完全滿足FlexCAN模塊。CAN48-10648-10748-108的2分頻;00111第一個(gè)要求的直接是:每個(gè)CAN比特的最小時(shí)間份額為8,因此晶振時(shí)鐘頻個(gè)比特時(shí)間參數(shù)(PRESDIVPROPSEGPSEG1,PSEG2,上表中所提到的最?。ㄍ庠O(shè)時(shí)鐘頻率大于晶振時(shí)鐘頻率CAN位的外設(shè)時(shí)鐘數(shù)可以通過(guò)PRESDIV的例如,考慮有64個(gè)MB的情況,如果晶振與外設(shè)時(shí)鐘頻率相等,那么CAN位時(shí)至少為2對(duì)于預(yù)分頻系數(shù)等于1并且CAN比特時(shí)間為每個(gè)比特8個(gè)最小時(shí)間份額,外設(shè)與晶振時(shí)鐘頻率之間的比率至少要為2。FlexCAN模塊一共具有4個(gè)功能性的模式(正常模式、凍結(jié)模式、模式以及回環(huán)模式,并且具有三個(gè)低功耗模式(模式、睡眠模式、停止模式。可以注意:FlexCAN模塊不支持CAN總線上的“恒顯性”錯(cuò)誤。如果在“恒顯性”階凍結(jié)模CPU可以通過(guò)設(shè)置MCR的HALT位或者當(dāng)MCU進(jìn)入到調(diào)試模式時(shí)請(qǐng)求凍結(jié)模式。在這兩種情況下,MCR寄存器的FRZ位必須置位并且模塊不應(yīng)處于以下任何一種低功耗模式(、睡眠、停止模式。FlexCAN模塊設(shè)置同一個(gè)寄存器的FRZ_ACK位來(lái)確認(rèn)已經(jīng)進(jìn)入到該模式。當(dāng)請(qǐng)求與確認(rèn)的條件都滿足時(shí),CPU認(rèn)為FlexCAN模塊處MCRFRZ_ACKFlexCAN模式下,任何映射的寄存器都是可的,除了CTRL1[CLK_SRC]位只讀但是不能在協(xié)議引擎確認(rèn)忽略凍結(jié)請(qǐng)求之

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論