1.采樣點的定義
采樣點是CAN控制器讀取總線電平,并解釋各個比特的邏輯值的時間點。
首先我們需要了解Tq的概念,Tq是can控制器的最小時間周期稱作時間份額(Time quantum,簡稱Tq),它是通過芯片晶振周期分頻而來。傳輸的個bit位由若干個Tq組成,根據功能傳輸一個BIT位需要分成四個階段:同步段、傳輸段、相位緩沖段1和相位緩沖段2.
![]()
這4個階段的功能如下:
1.同步段(Sync_Seg):用于實現時序調整,總線上各個節點的跳變沿產生在同步段內,通常為1個Tq;
2.傳播段(Prop_Seg):用于補償網絡上的物理延遲時間。這些延遲時間包含信號在總線上的傳輸延遲和CAN節點內部的處理延遲。傳播段保證了2倍的信號在總線上的延遲時間;
3.相位緩沖段1(Phase_Seg1)和相位緩沖段2(Phase_Seg2):用于補償跳變沿的相位誤差,其長度會在重同步的實現過程中延長或縮短。
采樣點位于相位緩沖段1的結尾。由于相位緩沖段1和相位緩沖段2能夠延長或縮短,采樣點也能夠隨之變化。
2.can采樣點的計算
![]()
晶振時鐘周期:是由單片機振蕩器的晶振頻率決定的,指的是振蕩器每震蕩一次所消耗的時間長度,也是整個系統中最小的時間單位;
下面以TC377為例進行計算:
通過查看配置我們的canfd的,采樣分為仲裁場和數據場。仲裁場的波特率為500Kbit/s,數據場為2Mbit/s,can時鐘頻率為4.0E7。
查看TP377手冊Tq = (DBRP + 1) clock cycles
Tq=(1+1)1/4.0E7(s)=50(ns)
仲裁場計算采樣點:
對于仲裁場500k,傳輸一個bit位的時間1/500000s=2us,所以分配
2us/50ns=40個tq
如果采樣點設置為80%,則sync_seg+prop_seg+phase_seg1=4080%=32Tq
在ET tresos中可以這樣配置
![]()
數據場采樣點計算:
對于數據場2Mkbs,傳輸一個bit位的時間1/2000000s=500ns,所以分配
500ns/50ns=10個tq,
如果采樣點設置為80%,則sync_seg+prop_seg+phase_seg1=10*80%=8Tq
則對應在EB TRESOS中配置如下
![]()
3. CAN-FD與CAN發送速率的不同
CAN最大傳輸速率1Mbps,CAN-FD速率可變,仲裁比特率最高1Mbps(與CAN相同),數據比特率最高8Mbps。BRS位速率切換為,BRS位為0時CANFD速率保持恒定速率、BRS位為1時CANFD的數據段會被切換到高速率。
![]()
ESI錯誤狀態指示位:CAN報文中發送節點的錯誤狀態只有該節點自己知道,CANFD報文中可以通過ESI標志位來告訴其他節點該節點的錯誤狀態,當ESI為1時表示發送節點處于被動錯誤狀態、當ESI為0時表示發送節點處于主動錯誤狀態。
![]()
4. 發送延遲補償
![]()
CAN控制器發送信號時,是經過收發器后發往CAN總線后,再經過收發器反饋總線信號。那么發送過程中,控制器發送位信號到接收位信號就不可避免地存在環路延遲。發送延遲時間的總和如下:
1 ). CAN控制器內部產生TX信號到Tx引腳的傳播延遲;
2 ). Tx引腳到收發器TxD引腳的傳播延遲;
3 ).收發器環路延遲TxD到RxD;
4 ). 收發器RxD引腳到CAN控制器Rx引腳延遲;
5 ).CAN控制器Rx引腳到控制器內部收到Rx信號的延遲
CAN協議中規定:發送方發送位時,需檢測接收到的位與發送是否一致,若不一致則產生錯誤幀(位錯誤)。如果發送延遲過長,則將直接導致發送與接收位不一致而產生錯誤幀。由于傳統CAN協議規定最高波特率為1Mbps,即位寬1us,正常情況下,傳輸延遲不會超過位寬的采樣點(當然具體延遲取決于收發器環路延遲、傳輸距離、傳輸線纜質量等),因此不會因為發送延遲而產生錯誤。
在CANFD中,數據段的波特率是比CAN更高的(BRS位為隱性時),此時波特率越高,位寬越小,在發送報文時發送延遲影響越大,越容易產生位錯誤。由于發送延遲無法避免,此時就需要一種機制來保證發送與接收的位對應上,以避免產生位錯誤。這種機制就是發送延遲補償了。
5. 發送延遲補償(TDC)
TDC實際上就是在發送BRS位為隱性的CANFD報文時(BRS隱性即開啟數據域波特率),在發送時延遲一定時間后,在第二采樣點采樣接收位,以正確采樣到發送位對應的接收位。
6.發送延遲測量
那么延遲采樣的延遲時間是多久呢?實際上,開啟TDC后,控制器將自動測量Tx信號線上FDF位到r0位下降沿與Rx信號線上FDF位到r0位邊沿的之間的延遲時間,如下圖中所示,TDCV即為延遲時間。發送延遲測量的時間單位為CAN控制器時鐘(TDC寄存器中一般對TDCV的值有限制,若超過寄存器最大位數,則發送延遲測量失敗)。
![]()
不同于采樣點,第二采樣點在CAN FD控制器接收其他節點發送報文的過程中并不會起到任何作用。第二采樣點的作用,是在不改變傳輸延遲補償的情況下,實現CAN FD在數據場的位錯誤檢測要求。
根據TC377手冊
![]()
根據手冊TDCV是接收到數據時的發送延遲時間,是當TDC使能的時候會自己自動計算的。
TDCO就是設置的正常采樣點的時間。
本文來源于網絡,原文鏈接:
https://blog.csdn.net/jiushimanya/article/details/129354758
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.