車(chē)規(guī)級(jí)CAN總線(xiàn)外圍電路設(shè)計(jì)方案探究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在現(xiàn)代汽車(chē)電子控制系統(tǒng)中,CAN(Controller Area Network,控制器局域網(wǎng))總線(xiàn)作為一種高效、可靠的通信協(xié)議,發(fā)揮著舉足輕重的作用。它不僅連接著發(fā)動(dòng)機(jī)控制單元(ECU)、變速器控制單元、制動(dòng)系統(tǒng)控制單元等多個(gè)關(guān)鍵模塊,還確保了這些模塊之間的實(shí)時(shí)數(shù)據(jù)交換和協(xié)調(diào)工作。為了實(shí)現(xiàn)卓越的性能和電磁兼容性(EMC),車(chē)規(guī)級(jí)CAN總線(xiàn)外圍電路的設(shè)計(jì)顯得尤為關(guān)鍵。本文將深入探討這一設(shè)計(jì)方案,并結(jié)合實(shí)際應(yīng)用給出代碼示例。
一、共模電感的設(shè)計(jì)
共模電感在汽車(chē)CAN網(wǎng)絡(luò)中起著抑制共模噪聲、提升EMC性能的重要作用。它通過(guò)在高阻抗?fàn)顟B(tài)下阻止噪聲傳播,有效濾除系統(tǒng)自身發(fā)射的干擾噪聲,同時(shí)抑制其他系統(tǒng)產(chǎn)生的干擾噪聲對(duì)CAN總線(xiàn)通信的干擾。
在設(shè)計(jì)共模電感時(shí),需要關(guān)注以下幾個(gè)關(guān)鍵特性:
電感值:為了有效抑制共模噪聲,共模電感在共模噪聲頻率處應(yīng)具備盡可能高的電感值。然而,過(guò)大的電感值會(huì)帶來(lái)尺寸和成本上的挑戰(zhàn)。因此,針對(duì)500kbps的CAN通信,推薦使用51uH電感值的共模電感;而對(duì)于2Mbps的CAN FD通訊,則建議采用100uH電感值。
泄漏電感:適量的泄漏電感能有效抑制CAN總線(xiàn)中的差模電流,提升系統(tǒng)的整體EMI性能。但過(guò)大的泄漏電感可能會(huì)引發(fā)CAN信號(hào)的振鈴現(xiàn)象,干擾正常通訊。因此,在選擇時(shí),應(yīng)確保既能發(fā)揮差模抑制作用,又不至于在總線(xiàn)信號(hào)上產(chǎn)生顯著的振鈴。
直流電阻:共模電感的直流電阻對(duì)總線(xiàn)信號(hào)的損耗具有直接影響。隨著直流電阻的增大,總線(xiàn)信號(hào)的損耗也會(huì)相應(yīng)增加,導(dǎo)致傳輸效率降低。因此,選擇直流電阻盡可能小的共模電感顯得尤為重要。
模式轉(zhuǎn)換特性:共模電感的模式轉(zhuǎn)換特性通過(guò)Ssd12/Sds21參數(shù)來(lái)衡量。當(dāng)Ssd12/Sds21參數(shù)的差異較大時(shí),意味著上下線(xiàn)圈存在較大的不對(duì)稱(chēng)性,這會(huì)引入額外的共模噪聲,降低EMI濾波效能。因此,應(yīng)傾向于選擇Ssd12/Sds21參數(shù)接近的器件。
二、終端分立電阻的設(shè)計(jì)
在包含多個(gè)節(jié)點(diǎn)的CAN網(wǎng)絡(luò)中,為了確保信號(hào)傳輸質(zhì)量,通常在首端節(jié)點(diǎn)和末端節(jié)點(diǎn)的總線(xiàn)上并聯(lián)一個(gè)與總線(xiàn)特征阻抗相匹配的電阻(通常為120Ω)。這個(gè)電阻的主要作用包括:
匹配總線(xiàn)特征阻抗,阻止信號(hào)反射:CAN總線(xiàn)的特征阻抗通常為120Ω,而CAN收發(fā)器在隱性狀態(tài)下的總線(xiàn)差分輸入電阻高達(dá)數(shù)十kΩ。阻抗不匹配會(huì)導(dǎo)致信號(hào)反射,產(chǎn)生振鈴現(xiàn)象,影響正常通信。
吸收外部干擾:CAN收發(fā)器的輸入差分電阻阻值較高,使得外部輕微干擾能在總線(xiàn)上產(chǎn)生足夠的差分電壓,改變總線(xiàn)狀態(tài)。并聯(lián)一個(gè)阻值相對(duì)較小的電阻(45Ω到70Ω之間)可以吸收這些干擾,防止其在總線(xiàn)上形成顯性差分電壓。
加速總線(xiàn)信號(hào)下降沿:總線(xiàn)顯隱切換的過(guò)程是對(duì)寄生電容的充放電過(guò)程。并聯(lián)一個(gè)匹配電阻可以顯著加速放電過(guò)程,使信號(hào)下降沿更加迅速,實(shí)現(xiàn)總線(xiàn)狀態(tài)從顯性到隱性的快速切換。
三、代碼示例
以下是一個(gè)簡(jiǎn)單的CAN總線(xiàn)初始化代碼示例,使用C語(yǔ)言編寫(xiě),適用于STM32微控制器:
c
#include "stm32f4xx_hal.h"
CAN_HandleTypeDef hcan1;
void CAN_Config(void)
{
// CAN結(jié)構(gòu)體初始化
hcan1.Instance = CAN1;
hcan1.Init.Prescaler = 9;
hcan1.Init.Mode = CAN_MODE_NORMAL;
hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ;
hcan1.Init.TimeSeg1 = CAN_BS1_6TQ;
hcan1.Init.TimeSeg2 = CAN_BS2_8TQ;
hcan1.Init.TimeTriggeredMode = DISABLE;
hcan1.Init.AutoBusOff = DISABLE;
hcan1.Init.AutoWakeUp = DISABLE;
hcan1.Init.AutoRetransmission = ENABLE;
hcan1.Init.ReceiveFifoLocked = DISABLE;
hcan1.Init.TransmitFifoPriority = DISABLE;
if (HAL_CAN_Init(&hcan1) != HAL_OK)
{
// 初始化錯(cuò)誤處理
Error_Handler();
}
// 激活通知
HAL_CAN_ActivateNotification(&hcan1, CAN_IT_TX_MAILBOX_EMPTY | CAN_IT_RX_FIFO0_MSG_PENDING);
}
int main(void)
{
HAL_Init();
SystemClock_Config();
CAN_Config();
// 主循環(huán)
while (1)
{
// CAN通信代碼
}
}
void Error_Handler(void)
{
// 用戶(hù)可以添加自己的錯(cuò)誤處理代碼
while(1)
{
}
}
該代碼示例展示了如何初始化CAN總線(xiàn),并設(shè)置了相關(guān)的時(shí)序參數(shù)。在實(shí)際應(yīng)用中,還需根據(jù)具體需求配置濾波器、發(fā)送和接收郵件箱等。
四、結(jié)論
車(chē)規(guī)級(jí)CAN總線(xiàn)外圍電路的設(shè)計(jì)是一個(gè)復(fù)雜但至關(guān)重要的過(guò)程。通過(guò)精心選擇共模電感和終端分立電阻等關(guān)鍵元件,并結(jié)合實(shí)際的代碼實(shí)現(xiàn),可以顯著提升CAN總線(xiàn)的通信質(zhì)量和電磁兼容性。這不僅有助于確保汽車(chē)電子控制系統(tǒng)的穩(wěn)定運(yùn)行,還為未來(lái)智能汽車(chē)的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。