STM32使用485介面通訊

2021-10-24 08:59:23 字數 2341 閱讀 3829

簡單來說,485通訊,實質還是串列埠通訊。通過電平轉換晶元,將ttl電平轉換成485電平,即可使用485介面通訊。

串列埠是一種介面標準,只是物理層的乙個標準。沒有規定介面外掛程式電纜以及使用的協議。

典型的序列通訊標準是rs232, rs485, rs422等,他們定義了電壓,阻抗等,但不對軟體協議給予定義。

串列埠通過電平轉換電路,可以將串列埠電平(ttl)轉換成485電平、232電平等。

傳輸速度高

抗干擾能力強

傳輸距離遠,支援多節點

rs485介面連線形式

常見介面

/*

函式名稱: rs485_bus_init(void)

輸入: 無

輸出: 無

功能: 設定485所在串列埠的埠與中斷

注意: 此處使用的是串列埠5,u5tx->pc12,u5rx->pd2

使用了巨集定義,請注意將巨集定義內容新增到.**件中

*/void

rs485_bus_init

(void

)

/*

函式名稱: uart5_irqhandler(void)

輸入: 無

輸出: 無

功能: 串列埠接收非空中斷,串列埠接收資料,存在串列埠快取buf中

注意: 無

*/void

uart5_irqhandler

(void)}

}

/*

函式名稱: rs485_bus_senddata(u8 *buf, u8 len)

輸入: u8 *buf 傳送資料的陣列

u8 *len 傳送資料的長度

輸出: 無

功能: 將本地資料通過串列埠傳送出去

注意: 無

*/void

rs485_bus_senddata

(u8 *buf, u8 len)

while

(usart_getflagstatus

(uart5,usart_flag_tc)

==reset)

; rs485_bus_rxcnt =0;

}

/*

函式名稱: rs485_bus_receivedata(u8 *buf,u8 *len)

輸入: u8 *buf 存放接收資料的陣列

u8 *len 存放接收資料的長度

輸出: 上述指標傳遞

功能: 從串列埠快取中接收資料到本地快取

注意: 串列埠快取最大只能64個位元組

*/void

rs485_bus_receivedata

(u8 *buf,u8 *len)

*len=rs485_bus_rxcnt;

rs485_bus_rxcnt=0;

}}

#define rs485_bus_bound				9600

#define rs485_bus_wordlength usart_wordlength_8b

//usart_wordlength_8b

//usart_wordlength_9b

#define rs485_bus_stopbits usart_stopbits_1

//usart_stopbits_1

//usart_stopbits_0_5

//usart_stopbits_2

//usart_stopbits_1_5

#define rs485_bus_parity usart_parity_no

//usart_parity_no

//usart_parity_even

//usart_parity_odd

#define rs485_bus_flowctrl usart_hardwareflowcontrol_none

//usart_hardwareflowcontrol_none

//usart_hardwareflowcontrol_rts

//usart_hardwareflowcontrol_cts

//usart_hardwareflowcontrol_rts_cts

#define rs485_bus_mode usart_mode_rx|usart_mode_tx

//usart_mode_rx

//usart_mode_tx

485通訊和串列埠通訊,對mcu來說是沒有差異的。了解串列埠通訊,通過電平轉換晶元即可以完成485通訊。

第一篇文章,多有錯漏還請各位斧正。

RS485介面定義

1.英式標識為 tda tdb rda rdb gnd 2.美式標識為 y z a b gnd 3.中式標識為 txd a txd b rxd rxd gnd rs485兩線一般定義為 a,b 或 date date 即常說的 485 485 rs485四線一般定義為 y,z,a,b,具體還要根據廠...

RS485介面定義

1.英式標識為 tda tdb rda rdb gnd 2.美式標識為 y z a b gnd 3.中式標識為 txd a txd b rxd rxd gnd rs485兩線一般定義為 a,b 或 date date 即常說的 485 485 rs485四線一般定義為 y,z,a,b,具體還要根據廠...

RS 485介面詳解

二 rs485介面詳解 串列埠是一種介面標準,它規定了介面的電氣標準,簡單說只是物理層的乙個標準。沒有規定介面外掛程式電纜以及使用的協議,所以只要我們使用的介面外掛程式電纜符合串列埠標準就可以在實際中靈活使用,在串列埠介面標準上使用各種協議進行通訊及裝置控制。典型的序列通訊標準是rs232和rs48...