99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網易首頁 > 網易號 > 正文 申請入駐

CANoe CAN采樣點測試方法及誤差分析

0
分享至

在車載控制器中,CAN采樣點的測試是控制器的基本測試之一,那CAN總線的采樣點一般怎么測試呢?今天一起來捋一捋。

首先CAN報文的位將分割為同步段(Sync Segment)、時間片段 1(TSEG1 Segment)和時間片段 2(TSEG2 Segment)。這些片段由不同數量的 TQ 組成, TQ 為該總線電平中最小的時間單位。預分頻(Prescaler)值以及收發器使用的時鐘頻率直接影響了一個位長度的總 TQ 數量。采樣點位置將由各個片段中 TQ 的數量計算得到。


1 個位中包含 8 或 16 個 TQ 的分段示意圖

采樣點的理論計算值可由下式得到:

= ( + 1)/( + 1 + 2)

在此必須知道所使用的 CAN 時鐘頻率,以此來計算一個標稱位時間所使用的總 TQ 數量。

例如:若一個 TQ 的長度為 0.0625us,時鐘頻率是 16MHz(通常 CAN 所使用的時鐘頻率),預分頻數為1。這就導致在 500kBaud 下一個位含有 32 個 TQ。若預分頻數為 2,則一個位包含 16 個 TQ。

同步段(Sync Segment)在任何情況下均僅為 1 個 TQ 長度,剩余的 TQ 將會被分為 TSEG1 和 TSEG2。

例如:若一個位的總 TQ 數為 16,采樣點位置為 75%,則 TSEG1 的 TQ 數為 11, TSEG2 的 TQ 數為 4。

CAN采樣點測試的原理是節點判斷信號邏輯電平的位置,對 CAN總線來說極其重要,尤其是在一個CAN網絡里,多個節點要保持同一個采樣點。如果其中一個偏差較大,有可能使整個網絡出現故障,所以對 CAN節點進行采樣點的測試顯得尤為重要,采樣點測試目的用于檢查控制器的采樣點設置是否遵守規范要求。

采樣點的位置不受控制器所處的收發狀態影響,故針對采樣點測試既可以干擾控制器發送的指定報文的某個位,也可以通過測試工具發送特定干擾報文去檢測控制器的行為。

下面以CANoe發送特定干擾報文的方法為例。VH6501 在檢測到總線空閑時,發送較高優先級的特定干擾報文,完成一個干擾循環。每次干擾循環發送結束,微調 CRC Delimiter 位長度,使其逐次縮短,導致后一位 ACK Slot前移,并將 ACK Slot 長度增加,保證整幀報文的長度不變。當顯性位電平由后往前,移至 DUT 采樣點位置,會被 DUT 采到并判定 CRC Delimiter 位為高電平,出現格式錯誤,DUT 隨即發送錯誤幀,并被 CANoe 采集到。另外每次干擾循環結束, VH6501 將發送 30 次控制器正常接收的任意一幀正常報文,從而使 DUT 始終保持 Error Active 狀態,因其主動錯誤幀容易辨認。


那CANoe工程如何配置呢?首先打開軟件后,選擇CANoe的示例工程Disturbance SamplePoint Test (CAN)。進入工程后,將 VH6501 通道分配給軟件通道 CAN1,在下圖所示界面設置 Mode 為 CAN,并勾選 Activate 選項使能 VH6501 總線干擾功能。


VH6501 的采樣點設置盡量靠前,確保優先干擾到控制器的采樣點,此處BTL Cycles(指的是TQ數量,將一個位分為16個TQ) 和SJW(同步跳變寬度) 要選擇數值較大的組合,可參考下圖配置。


配置完成之后,就可以寫capl測試腳本了。

/*@!Encoding:936*/
includes
{

}
variables
{
CanDisturbanceFrameTrigger frameTrigger;
CanDisturbanceFrameSequence frameSequence;
CanDisturbanceSequence sequence;
CanDisturbanceTriggerRepetitions repetitions;
const int repetition_times_in_one_cycle = 10;
//Number of disturbance repetitions in a cycle
long result;
long errfrmcount; //The error frame count in one cycle
long first_err_bit_length,first_error_occur, ten_error_occur;
long validityMask;
long cycleFlag;
message 0x100 triggerMessage; //The trigger
message.(ID is not important.)
message 0x0 spTestMsg; //The disturbance frame sequence which CRC DEL need to be shorten.
message 0x1 Keep_DUT_ErrorActive;
const long CountMsgKeepErrorActive = 30;
long MsgCntKeepErrorActive = 0;
char spTestDone[33] = "SPDone";
}
on errorFrame
{
if(this.msgChannel == @sysvar::CANDisturbanceInterface1::ChannelNo)
{
errfrmcount++;
if((errfrmcount == 1) && (first_error_occur == 0))
{
      first_err_bit_length = frameSequence.CRCDelimiter.BitSequence[0].segmentLength[0];
first_error_occur = 1;
write("+++++++++First error frame occurs+++++++++++.");
}
if(errfrmcount == repetition_times_in_one_cycle)
{
ten_error_occur = 1;
testSupplyTextEvent(spTestDone);
}
}
}

on message 0x1
{
if(MsgCntKeepErrorActive <= CountMsgKeepErrorActive)
{
++MsgCntKeepErrorActive;
output(Keep_DUT_ErrorActive);
}
else
{
ActivateTriggerAgain();
}
}

void ActivateTriggerAgain()
{
if(ten_error_occur == 0)
{
errfrmcount = 0;
//CRC Delimiter is shorten with 6.25ns per cycle.
    --frameSequence.CRCDelimiter.BitSequence[0].segmentLength[0];
++frameSequence.AckSlot.BitSequence[0].segmentLength[0];
result = canDisturbanceTriggerEnable(@sysvar::CANDisturbanceInterface1::DeviceNo,frameTrigger, frameSequence, repetitions);
if(result == 1)
{
write("Trigger is enabled,
frameSequence.CRCDelimiter.BitSequence[0].segmentLength[0] = %d",
frameSequence.CRCDelimiter.BitSequence[0].segmentLength[0]);
}
else
{
write("Enable trigger error Result = %d", result);
}
}
}

on sysvar sysvar::CANDisturbanceInterface1::Trigger::State
{
//6501 is Idle after repetition_times_in_one_cycle finish
if(@sysvar::CANDisturbanceInterface1::Trigger::State == 0)
{
    //At the end of each disturbance cycle, the VH6501 need to outputsome normal message to prevent the DUT from being in a passive error state
    //because the passive error frame is not easily to be observed and
//identified.
MsgCntKeepErrorActive = 0;
output(Keep_DUT_ErrorActive);
}
}

testcase SamplePointTest_forVH6501()
{
first_error_occur = 0;
ten_error_occur = 0;
errfrmcount = 0;
cycleFlag = 1;
  frameSequence.SetMessage(@sysvar::CANDisturbanceInterface1::DeviceNo,spTestMsg);
validityMask = 0; //trigger on any CAN messages
frameTrigger.SetMessage(triggerMessage,
@sysvar::CANDisturbanceInterface1::DeviceNo, validityMask);
frameTrigger.TriggerFieldType =
@sysvar::CanDisturbance::Enums::FieldType::EndOfFrame;
  frameTrigger.TriggerFieldOffset = 9; //Trigger position is the thirdbit of IFS.
write("CRC Delimiter Bit Length = %d",
  frameSequence.CRCDelimiter.BitSequence[0].segmentLength[0]);
repetitions.Cycles = 1;
repetitions.HoldOffCycles = 0;
repetitions.HoldOffRepetitions = 0;
repetitions.Repetitions = repetition_times_in_one_cycle;
  result = canDisturbanceTriggerEnable(@sysvar::CANDisturbanceInterface1::DeviceNo,frameTrigger,frameSequence,repetitions);

if(result == 1)
  {
write("Trigger is enabled.");
  }
else
{
write("Enable trigger error Result = %d", result);
}
result = testWaitForTextEvent(spTestDone, 10000);
if(result == 1)
{
write("frameSequence.CRCDelimiter.BitSequence[0].segmentLength[0] = %d
, sample point lies in %f%%~%f%%",
frameSequence.CRCDelimiter.BitSequence[0].segmentLength[0],
(frameSequence.CRCDelimiter.BitSequence[0].segmentLength[0] * 100.00) /
frameSequence.DLC.BitSequence[1].segmentLength[0], (first_err_bit_length *
100.00) / frameSequence.DLC.BitSequence[1].segmentLength[0]);
}
}

void maintest()
{
SamplePointTest_forVH6501();
}

那采樣點的測試結果一般受什么影響呢?一般來說受3個因素影響。


在總線信號和 RxD 引腳信號上影響采樣點測試結果的因素示意圖

?指VH6501每次縮短或增長的步進長度。

?指控制器的CAN參數配置中一個TQ的時間長度。

?指總線上一個位的電平長度與控制器內部主控芯片 RxD 引腳上的一個位電平長度的時間差。? = () - ()

如果一個 CAN 的設備使用的時鐘對應的最小 TQ 時間長度在?的范圍內,并且實際 TQ 配置在此范圍內,則?所帶來的誤差需要考慮在采樣點測試的結果中 。ISO11898-2: 2015規定了在2MBaud下,規定了?的允許范圍為-65ns 到+40ns。而對于 2MBaud下,一個位時間長度為500ns, 這意味著在RxD引腳上的為時間長度將會比在總線上的為時間長度短13%或長 8%。而 TQ 時間長度的計算公式為:? =/

如果在 2MBaud 下, 一個 TQ 的時間長度小于一個位的 13%, 則?將會被考慮進采樣點測試的結果當中。具體的誤差將取決于 CAN 發送器和使用的波特率。

假設 CAN 時鐘頻率為 80MHz, ?為 25ns,預分頻(Prescaler) 為 1, ?為 12.5ns, ?為6.25ns。仲裁相為 500kBaud,數據相為 2MBaud。

這意味著?所帶來的誤差在仲裁相為 1.25%,在數據相則會上升到 5%(由于單個位時間長度縮短了) 。這幾乎相當于 2 個 TQ 的時間長度。測試工具 VH6501 步進長度?所帶來的誤差分別為0.3125%和 1.25%。

由于 CAN 協議 11898 中并未規定重同步后跳變沿一定要在同步段(Sync Segment) 的哪個位置,從同步段(Sync Segment) 的開始到結束均可以,因此這會帶來 1 個 TQ 的誤差。在仲裁相和數據相中帶來的誤差分別為 0.625%和 2.5%。

因此綜上所述,在仲裁相中總的最大誤差為 2.1875%(1.25% + 0.3125% + 0.625%) ,在數據相中總的最大誤差為 8.75%(5% + 1.25% + 2.5%)。

由上可知, 由 VH6501 所帶來的誤差所占比例是很小的。而大部分是由于 CAN 協議本身所帶來的誤差。

-end-

分享不易,懇請點個【】和【在看】

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

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.

相關推薦
熱點推薦
4-1!新的億元先生誕生!準帽子戲法,20歲,暫列世俱杯最佳射手

4-1!新的億元先生誕生!準帽子戲法,20歲,暫列世俱杯最佳射手

bwb足球算個球
2025-06-23 05:54:16
又反轉了!記者:巴薩不打算下周支付尼科的解約金

又反轉了!記者:巴薩不打算下周支付尼科的解約金

雷速體育
2025-06-22 23:56:24
央視八套《長安的荔枝》演員表刪除那爾那茜

央視八套《長安的荔枝》演員表刪除那爾那茜

現代快報
2025-06-22 22:55:06
你遇到過超級主動的女生是啥樣?網友:為什么沒有女人主動接近我

你遇到過超級主動的女生是啥樣?網友:為什么沒有女人主動接近我

娛樂圈人物大賞
2025-04-10 00:30:23
英國衛報怒批:3個平均年齡82歲的老頭子,恐害慘全世界

英國衛報怒批:3個平均年齡82歲的老頭子,恐害慘全世界

司馬平邦
2025-06-21 20:15:55
自己宣!確定了,文班亞馬!

自己宣!確定了,文班亞馬!

左右為籃
2025-06-22 13:40:43
卡萊爾:這是一輪精彩的系列賽 為我們的球員感到無比驕傲

卡萊爾:這是一輪精彩的系列賽 為我們的球員感到無比驕傲

直播吧
2025-06-23 11:23:11
實驗 12 周!男性能力暴漲 83%?哈佛黑科技終結小藍丸時代!

實驗 12 周!男性能力暴漲 83%?哈佛黑科技終結小藍丸時代!

詩意世界
2025-06-21 23:36:39
農村白事怪象:越來越多人寧愿出錢請一條龍服務,也不請鄰居幫忙

農村白事怪象:越來越多人寧愿出錢請一條龍服務,也不請鄰居幫忙

明月讀書吧
2025-06-22 14:25:03
俄媒:澤連斯基呼吁盟友用GDP的0.25%援烏

俄媒:澤連斯基呼吁盟友用GDP的0.25%援烏

參考消息
2025-06-22 16:29:14
那爾那茜事件真正恐怖的地方,是背后一整張“內蒙古”關系網

那爾那茜事件真正恐怖的地方,是背后一整張“內蒙古”關系網

得得電影
2025-06-20 13:51:31
美媒調侃有關SGA和喬治的交易:這仍然是有史以來最糟糕的交易

美媒調侃有關SGA和喬治的交易:這仍然是有史以來最糟糕的交易

雷速體育
2025-06-23 11:16:54
路虎攬勝運動版降價30萬仍賣不動!4月僅銷663臺,市場格局生變

路虎攬勝運動版降價30萬仍賣不動!4月僅銷663臺,市場格局生變

阿芒娛樂說
2025-06-22 14:00:45
其實,很多單位已經爛透了!

其實,很多單位已經爛透了!

大道微言
2025-06-16 20:00:39
不交奢侈稅也能奪冠!雷霆本賽季薪資僅1.65億&排聯盟第25

不交奢侈稅也能奪冠!雷霆本賽季薪資僅1.65億&排聯盟第25

雷速體育
2025-06-23 11:23:20
改名不影響熱度!《撈女游戲》Steam在線玩家超4萬

改名不影響熱度!《撈女游戲》Steam在線玩家超4萬

游民星空
2025-06-21 16:58:42
洪森公開他信英拉“密室照”,30年情誼當眾翻臉,佩通坦陷外交危機

洪森公開他信英拉“密室照”,30年情誼當眾翻臉,佩通坦陷外交危機

娛樂的宅急便
2025-06-22 11:25:41
TOP15位身高170以上的女神,演技、身材、顏值綜合榜

TOP15位身高170以上的女神,演技、身材、顏值綜合榜

吃瓜黨二號頭目
2025-06-15 10:02:35
肋骨紋身真的不疼嗎?以前沒發現周冬雨有紋身,而且面積還挺大

肋骨紋身真的不疼嗎?以前沒發現周冬雨有紋身,而且面積還挺大

小嵩
2025-06-07 08:51:34
雷霆103-91步行者搶七奪得總冠軍,亞歷山大29+5+12

雷霆103-91步行者搶七奪得總冠軍,亞歷山大29+5+12

懂球帝
2025-06-23 10:51:17
2025-06-23 11:36:49
新能源自動駕駛 incentive-icons
新能源自動駕駛
專注于半導體行業資訊
947文章數 344關注度
往期回顧 全部

汽車要聞

單電機200kW 奔馳純電長軸距CLA申報信息曝光

頭條要聞

萬斯:美國不打算向伊朗派地面部隊

頭條要聞

萬斯:美國不打算向伊朗派地面部隊

體育要聞

比起雷霆三少,他才是真正隊魂

娛樂要聞

小S二女兒疑似整容,外貌模樣大變

財經要聞

關稅重磅!美國宣布,今起加征

科技要聞

特斯拉自駕出租車終于來了!4.2美元一口價

態度原創

本地
房產
健康
家居
數碼

本地新聞

被貴妃帶火的“唐代頂流”,如今怎么不火了

房產要聞

8.1億拿下三亞核心宅地!華僑城又殺回海南樓市!

呼吸科專家破解呼吸道九大謠言!

家居要聞

山水之間 墨染風雨云間

數碼要聞

華為新一代擎云 C5 商用平板將于近期上市:架構級可信安全

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 正蓝旗| 宁德市| 化州市| 新和县| 藁城市| 杭锦旗| 富宁县| 阿瓦提县| 金秀| 龙川县| 江阴市| 扶绥县| 筠连县| 安庆市| 江津市| 固原市| 古丈县| 屏山县| 电白县| 沂源县| 南溪县| 沙洋县| 华蓥市| 禹州市| 武鸣县| 彭山县| 大关县| 舟曲县| 法库县| 兰溪市| 衢州市| 新闻| 伽师县| 德江县| 红河县| 宁远县| 罗山县| 上高县| 嵊州市| 平凉市| 天峻县|