【導(dǎo)讀】英飛凌的芯片在汽車電子里用得可謂是頗多,剛好小編也用過,最近剛好在摸TC3系列的CAN模塊,剛好簡單寫寫。
以TC387為例,共有3個(gè)MCMCAN模塊,分別為CAN0、CAN1、CAN2。下圖是三個(gè)CAN模塊的基本參數(shù),其中CAN0的功能最全。
從圖中可以看出,每個(gè)CAN模塊有4個(gè)CAN Node,每個(gè)Node均采用Bosch的M_CAN方法來實(shí)現(xiàn),支持CAN和CANFD,最高速率為5Mbps,每個(gè) Node有最多64個(gè)Rx Buffer,支持最多2個(gè)Rx FIFO,另外每個(gè)Node有最多32個(gè)Tx Buffer,支持最多1個(gè)Tx FIFO/Tx Queue。
其與TC2XX相比,其區(qū)別在于由原來的Message Object換成了Message RAM,增加了Pretended Networking特性,以及新增Range Filter功能。
下面就來說說細(xì)節(jié)。
01. 時(shí)鐘
首先來看看時(shí)鐘,對(duì)于CAN模塊來說,主要有Fsyn和Fasyn,如下圖所示。Fsyn 為CAN相關(guān)寄存器及Message RAM的訪問提供時(shí)鐘,F(xiàn)asyn為CAN/CAN FD波特率產(chǎn)生提供時(shí)鐘,其中為了MCMCAN有良好的性能,需要保證 Fsyn>=Fasyn 非常重要。
02. 數(shù)據(jù)發(fā)送接收管理
數(shù)據(jù)發(fā)送接收分為Dedicated Rx/Tx Buffer和RX FIFO,其中Dedicated Rx Buffer就是每個(gè)ID對(duì)應(yīng)一個(gè)Buffer,也就是FULL CAN。所有的Dedicated Rx Buffer地址必須連續(xù),并且占用的Message RAM大小必須相同。
每個(gè)Dedicated Rx Buffer寫入數(shù)據(jù)后都會(huì)被鎖住,不會(huì)再從CAN Bus上寫入新數(shù)據(jù),直到CPU訪問完Dedicated Rx Buffer后解鎖。
Rx Buffer其實(shí)就是多個(gè)Rx Buffer組成Rx FIFO進(jìn)行管理,每個(gè)CAN Node最多可以設(shè)置2個(gè)Rx FIFO,分別為Rx FIFO 0,Rx FIFO 1。每個(gè)Rx FIFO最多可以包含64個(gè)Rx Buffer數(shù)據(jù)。
Dedicated Rx Buffer和Rx FIFO都可以設(shè)置Filtering,確定CAN Bus上哪些Message被接收。
報(bào)文發(fā)送也一樣分為Dedicated Tx Buffer和Tx FIFO,不過多了一個(gè)Tx Queue,前兩者的含義也和接收管理中提到的一樣。在Tx管理中有幾個(gè)注意點(diǎn)的是,Dedicated Tx Buffer與Tx FIFO 或者是Tx Queue可以同時(shí)存在,但最多只能32個(gè)Tx Buffer.
對(duì)于Dedicated Tx Buffer、Tx FIFO共存而言,必須順序排布。每次發(fā)送仲裁,將所有Dedicated Tx Buffer和最老的Tx FIFO Tx Buffer比較優(yōu)先級(jí),Message ID最小的先發(fā)送。
對(duì)于Dedicated Tx Buffer、Tx Queue共存而言,也是按照Dedicated Tx Buffer、Tx Queue的順序排布,每次發(fā)送仲裁,將所有Dedicated Tx Buffer和Tx Queue中的Tx Buffer比較優(yōu)先級(jí),Message ID最小的先發(fā)送,Message ID相同則Tx Buffer順序在前的先發(fā)送。
03. MCAL配置
涉及的到MCU和CAN模塊,首先是設(shè)置CAN模塊的時(shí)鐘頻率,如下圖所示。
下面就是Port模塊,按照硬件接口表進(jìn)行配置,比如P20.8配置為輸出,如下圖所示。
下面就是CAN模塊的配置了,配置RXDB,以及發(fā)送和棘手以及wakeup的方式,如下配的是輪詢模式,在就是CAN時(shí)鐘源,以及相應(yīng)的波特率。
下面就是波特率的設(shè)置了,以及為了采樣點(diǎn)配置在80%左右,需要配置各個(gè)段的時(shí)間參數(shù),這個(gè)通常主機(jī)廠有要求,按照配就是了。
再接下來配置Hardware object,包括是幀類型,是FIFO還是其他類型,以及關(guān)聯(lián)的CAN模塊。
還可以配置過濾器,如下圖所示。
最后即使配置CAN模塊的主函數(shù)的運(yùn)行周期了,如下圖所示。
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理。
推薦閱讀: