在工業(yè)通信領(lǐng)域,RS-485 總線因其良好的抗干擾性、長傳輸距離和多節(jié)點通信能力而被廣泛應(yīng)用。MAX3485 作為一款 3.3V 供電的半雙工 RS-485/RS-422 收發(fā)器芯片,在構(gòu)建 485 通信外設(shè)時具有重要價值。本文將詳細(xì)介紹 MAX3485 芯片的核心特性、硬件設(shè)計要點、軟件功能實現(xiàn)以及在MCU芯片AS32S601-485通信外設(shè)中應(yīng)用注意事項,旨在為相關(guān)工程技術(shù)人員提供專業(yè)的技術(shù)參考。
一、核心特性
- 供電范圍 :MAX3485 芯片支持 3.0V 至 3.6V 的單電源工作模式,這一特性使其能夠與 3.3V 系統(tǒng)設(shè)計無縫兼容,確保了在不同系統(tǒng)架構(gòu)中的穩(wěn)定供電。
- 通信速率 :具備最高達(dá) 12Mbps 的傳輸速率,能夠滿足高速數(shù)據(jù)傳輸?shù)男枨?,適用于對通信速度要求較高的工業(yè)自動化控制系統(tǒng)。
- 節(jié)點容量 :支持最多 256 個節(jié)點并聯(lián)在同一總線上,為構(gòu)建大規(guī)模的分布式監(jiān)測與控制系統(tǒng)提供了硬件基礎(chǔ),可實現(xiàn)多個設(shè)備之間的協(xié)同通信與數(shù)據(jù)共享。
二、硬件設(shè)計要點
- 引腳功能 :
- RO 引腳(1 號引腳)通常與微控制器(MCU)UART 控制器的 RX 相連接,用于接收對端發(fā)送的數(shù)據(jù)。
- RE 引腳(2 號引腳)對 RO 起控制作用。當(dāng) RE 為低電平時,RO 可接收數(shù)據(jù);當(dāng) RE 為高電平時,RO 不接收數(shù)據(jù)。
- DE 引腳(3 號引腳)對 DI 起控制作用。DE 為高電平時,DI 可輸出數(shù)據(jù);DE 為低電平時,DI 不輸出數(shù)據(jù)。
- DI 引腳(4 號引腳)通常與 MCU UART 控制器的 TX 相連接,用于將數(shù)據(jù)發(fā)送到對端。
- GND 引腳(5 號引腳)在串口通信中起到關(guān)鍵作用,必須保證所有設(shè)備共地,以確保信號傳輸?shù)臏?zhǔn)確性和穩(wěn)定性。
- A 引腳(6 號引腳)與對端的 A 線相連接,輸出為正電壓。
- B 引腳(7 號引腳)與對端的 B 線相連接,輸出為負(fù)電壓,與 A 線共同構(gòu)成差分信號。
- VCC 引腳(8 號引腳)為 MAX3485 芯片提供工作電源。
2.電氣特性:
MAX3485為半雙工通信,即本端要發(fā)送數(shù)據(jù)時,應(yīng)保證所有對端都不發(fā)送數(shù)據(jù)。本地處于接收數(shù)據(jù)的狀態(tài),不應(yīng)該進(jìn)行數(shù)據(jù)發(fā)送。
MAX3485的總線電平由A線電平 - B線B電平得出,A - B > 2V,總線為高電平,A - B < -2V,總線為低電平;屬于差分信號。
A/B線的信號由芯片對DI上的電平做轉(zhuǎn)換得到,RO的電平由芯片對A/B線的信號轉(zhuǎn)換得到。
3.終端電阻與布線要求:
在總線首尾節(jié)點需接入匹配電阻,典型值為 100Ω,以減少信號反射和駐波效應(yīng),確保通信質(zhì)量。
在非惡劣環(huán)境下,可省略偏置電阻(R1/R2/R3)。但在復(fù)雜電磁環(huán)境下,適當(dāng)?shù)钠秒娮栌兄诜€(wěn)定總線電平。
采用 “手拉手” 拓?fù)浣Y(jié)構(gòu)連接多個節(jié)點,避免使用星型結(jié)構(gòu),以減少信號傳輸?shù)难舆t和失真,保證通信的可靠性。
三、軟件功能實現(xiàn)
(一)GPIO 初始化
通過配置 GPIO 引腳的功能,使其能夠與 USART5 進(jìn)行通信。以下是 GPIO 初始化代碼示例:
void MAX3485_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIOG_CLK_ENABLE();
*/* Set GPIO multiplex mapping */*
GPIO_PinAFConfig(GPIOG, GPIO_PinSource12, GPIO_AF_USART5); */* USART5_TX */*
GPIO_PinAFConfig(GPIOG, GPIO_PinSource13, GPIO_AF_USART5); */* USART5_RX */*
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11| GPIO_Pin_12|GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_Out_PP;
GPIO_InitStructure.GPIO_OStrength = GPIO_OStrength_18mA;
GPIO_Init (GPIOG, &GPIO_InitStructure);
}
}
(二)USART 初始化
對 USART5 進(jìn)行初始化設(shè)置,包括波特率、字長、停止位、校驗位等參數(shù)的配置。以下是 USART 初始化代碼示例:
void User_Print_Init(uint32_t BaudRate)
{
USART_InitTypeDef USART_InitStructure;
PLIC_InitTypeDef PLIC_InitStructure;
USART5_CLK_ENABLE();
*/* GPIO Configure */*
RE_DE_Init();
USART_DeInit(USART5);
USART_StructInit(&USART_InitStructure);
*/* Initializes the USART5 */*
USART_InitStructure.USART_BaudRate = BaudRate;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_InitStructure.USART_OverSampling = USART_OverSampling_16;
USART_Init(USART5, &USART_InitStructure);
USART_Cmd(USART5, ENABLE);
(三)軟件收發(fā)邏輯
半雙工控制 :在發(fā)送數(shù)據(jù)時,需將 DE 引腳置為 1,同時將 RE 引腳置為 1,以關(guān)閉接收功能;接收數(shù)據(jù)時,將 DE 引腳置為 0,RE 引腳置為 0。以下是發(fā)送數(shù)據(jù)的代碼示例:
void MAX3485_Send(void)
{
GPIO_SetBits(GPIOG,GPIO_Pin_11);
USART_SendData(USART5,0xBA);
delay_ms(1);
GPIO_ClearBits(GPIOG,GPIO_Pin_11);
}
空閑狀態(tài) :保持接收模式,即 DE 引腳與 RE 引腳都為低電平,使 RO 使能,DI 不使能,以便監(jiān)聽總線上的數(shù)據(jù)。
四、應(yīng)用注意事項
- 協(xié)議設(shè)計 :在使用 MAX3485 構(gòu)建的半雙工總線通信系統(tǒng)中,應(yīng)用協(xié)議必須確保同一時間只有一個設(shè)備處于發(fā)送狀態(tài),其他設(shè)備處于接收狀態(tài)。雖然總線上存在多個設(shè)備,但協(xié)議應(yīng)實現(xiàn)點對點通信,對于不屬于自己的數(shù)據(jù)應(yīng)進(jìn)行過濾。
- DE/RE 控制時機(jī) :DE 和 RE 引腳的控制對收發(fā)影響顯著,需要通過多次實驗確定控制這兩個引腳的精確時機(jī),以避免通信沖突和數(shù)據(jù)丟失。
- 數(shù)據(jù)接收問題 :在 DI 使能時,若讓 RO 也使能,可能會導(dǎo)致 MCU 的 TX 發(fā)送的數(shù)據(jù)被 RX 接收到,進(jìn)而引起數(shù)據(jù)異常。
- 共地通信 :所有連接在一起的設(shè)備必須共地通信,以確保信號傳輸?shù)臏?zhǔn)確性和穩(wěn)定性。
- 共模電阻配置 :共模電阻應(yīng)根據(jù)實際情況進(jìn)行調(diào)整。有時在本端加入共模電阻可能會導(dǎo)致在接收數(shù)據(jù)時,首先接收到一個 0 字符的情況,需要針對具體應(yīng)用場景進(jìn)行優(yōu)化。
- 發(fā)送時序控制 :芯片一般處于接收模式,即 DE 與 RE 都為低電平時,RO 使能,DI 不使能。在發(fā)送數(shù)據(jù)前,MCU 通過拉高與 DE/RE 相連接的引腳電平,使 MAX3485 處于發(fā)送模式,然后通過 UART 控制器發(fā)送比特位數(shù)據(jù)。MCU上一次數(shù)據(jù)發(fā)送完成后,需要等待20個bits的時間后再將DE/RE相直連的引腳拉低,因為MCU上最后一個字節(jié)發(fā)送后,其實只是寫入到了UART寄存器中,此時MAX3485至少還需要有一個字節(jié)的時間處于發(fā)送狀態(tài),即DI應(yīng)該還處于使能狀態(tài)。
-
mcu
+關(guān)注
關(guān)注
146文章
17955瀏覽量
365735 -
485總線
+關(guān)注
關(guān)注
1文章
30瀏覽量
16981 -
MAX3485
+關(guān)注
關(guān)注
1文章
6瀏覽量
9486
發(fā)布評論請先 登錄
RS485通信串口輪詢發(fā)送完成后立即拉低MAX3485芯片EN引腳,數(shù)據(jù)未能全部發(fā)出是為什么?
max3485接收出現(xiàn)錯碼
MAX3485串口通信,無法接收數(shù)據(jù)
使用STM32驅(qū)動MAX3485進(jìn)行485通信
RS-485接口電路MS3485,可兼容MAX3485,瑞盟一級代理
MAX3485原理設(shè)計和程序該如何去實現(xiàn)呢
怎樣去解決485通信亂碼/延時的問題呢
MAX3483, MAX3485, MAX3486 pdf
MAX3485芯片使用方法

max3485與max485區(qū)別詳解(解析為什么max3485不能代替max485)

MAX3485工作原理詳解(MAX3485引腳圖_內(nèi)部結(jié)構(gòu)_典型應(yīng)用電路)

EXAR品牌RS485通訊收發(fā)芯片:SP3485

評論