《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > STM32串口多機通信
STM32串口多機通信
摘要: STM32 的UART數據寄存器是9位,數據傳輸先傳低位(LSB)--實際應用發現9位數據大時候有丟包錯包問題??利用USART可以進行多機處理器通信,其原理就是使從機處于靜默模式,由主機在需要的時候發送指令喚醒從機,并傳輸數據。STM
關鍵詞: STM32 UART 多機通信
Abstract:
Key words :

 STM32UART數據寄存器是9位,數據傳輸先傳低位(LSB)

--實際應用發現9位數據大時候有丟包錯包問題??

利用USART可以進行多機處理器通信,其原理就是使從機處于靜默模式,由主機在需要的時候發送指令喚醒從機,并傳輸數據。STM32靜默模式特點:1、所有接收狀態位都不會被設置;2、所有的接收中斷都被禁止;3、USART_CR1寄存器中的RWU位被置1,RUW可以硬件自動控制或者在某些條件下由軟件寫。

連接方法很簡單,主機的TX輸出與從機的RX端口直接相連,從機TX端口要經過與門與主機RX端口連接。

多機通信方式有2種:空閑幀喚醒和地址喚醒。

空閑幀喚醒可以同時喚醒所有從機,在從機處于靜默模式時發送空閑幀(即所有位均為1的數據),喚醒多個從機,實現多個從機同步。

地址喚醒可以喚醒單個從機,從機靜默時發送地址幀,從機自動對比地址,地址配對正確則該從機喚醒,否則繼續進入靜默。這樣只有被尋址者才被激活,來接收數據,減少由未被尋址的接收機器參與帶來的多余的USART服務開銷。這種模式下,MSB為1的字節被認為是地址,否則被認為是數據(MSB一般為數據傳送的最高位,8位傳送則MSB為第八位;9位傳送則MSB為第九位)。在一個地址字節中,目標接收者的地址放在低4位。這4位會被接收器拿來和設置在USART_CR2寄存器中ADD位中的自身地址比較。當接收到一個和設置地址相匹配的地址字符時,RWU被清除,后面的字節將正常接收。因為RWU位已經被清除,RXEN位會因為接收到地址符被置1。當從機再次接收到地址符,如若地址不匹配則從機再次進入靜默模式。

程序實際編寫時可以注意以下3部分的設置:

一、設置靜默模式:

函數原形

void USART_WakeUpConfig(USART_TypeDef* USARTx, u16 USART_WakeUp)

其中USART_WakeUp:USART的喚醒方式:

1、USART_WakeUp_IdleLine 空閑總線喚醒

2、USART_WakeUp_AddressMark 地址標記喚醒

二、地址喚醒中地址設置:

函數原形

void USART_SetAddress(USART_TypeDef* USARTx, u8 USART_Address)

其中USART_Address:是設置USART 節點的地址。

例如:USART_SetAddress(USART2, 0x5);

三、是否進入靜默:

函數原形

void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState Newstate)

其中NewState: USART 靜默模式的新狀態這個參數可以取:ENABLE或者DISABLE。

Address mark detection (WAKE=1)

In this mode, bytes are recognized as addresses if their MSB is a ‘1 else they are

considered as data. In an address byte, the address of the targeted receiver is put on the 4

LSB. This 4-bit word is compared by the receiver with its own address which is programmed

in the ADD bits in the USART_CR2 register.

The USART enters mute mode when an address character is received which does not

match its programmed address. In this case, the RWU bit is set by hardware. The RXNE flag

is not set for this address byte and no interrupt nor DMA request is issued as the USART

would have entered mute mode.

It exits from mute mode when an address character is received which matches the

programmed address. Then the RWU bit is cleared and subsequent bytes are received

normally. The RXNE bit is set for the address character since the RWU bit has been cleared.

The RWU bit can be written to as 0 or 1 when the receiver buffer contains no data (RXNE=0

in the USART_SR register). Otherwise the write attempt is ignored.

Bit 1 RWU: Receiver wakeup

This bit determines if the USART is in mute mode or not. It is set and cleared by software

and can be cleared by hardware when a wakeup sequence is recognized.

0: Receiver in active mode

1: Receiver in mute mode

Note: 1: Before selecting Mute mode (by setting the RWU bit) the USART must first receive a

data byte, otherwise it cannot function in Mute mode with wakeup by Idle line detection.

2: In Address Mark Detection wakeup configuration (WAKE bit=1) the RWU bit cannot

be modified by software while the RXNE bit is set.

Bit 11 WAKE: Wakeup method

This bit determines the USART wakeup method, it is set or cleared by software.

0: Idle Line

1: Address Mark

“logically ANDed ” 指的是邏輯上的關系。某些情況下,不需要另外加與門電路。

比如:板上有3個STM32,1主2從,中間未加電平變換芯片(直連),從機的發送腳都配置成open drain輸出并帶上拉,這種情況下2個從STM32芯片的TX腳可以 直接連到主STM32芯片的RX腳。

如果用了電平變換芯片比如MAX232,一般需要另外加與門電路。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 欧美三级免费网站 | 久久91亚洲精品中文字幕奶水 | 欧美在线视频观看 | 亚洲精品一区二区在线观看 | 久久最新免费视频 | 日韩欧美久久一区二区 | 成人毛片免费观看视频 | 色播亚洲精品网站 亚洲第一 | 乱子伦一级在线现看 | 一级做a爰片性色毛片小说 一级做a爰片性色毛片中国 | 欧美最黄视频 | 久青草视频在线 | 在线视频一区二区三区三区不卡 | 久久国产一片免费观看 | 欧美久久久久久久久 | 国产成人免费高清视频 | 久久se精品一区精品二区 | 日本一级高清片免费 | 国产精品资源在线 | 国产在线观看精品香蕉v区 国产在线观看免费人成小说 | 精品日韩在线视频一区二区三区 | 波多野结衣中文在线播放 | 日本一级特黄aa毛片免费观看 | 色综合久久88中文字幕 | 久久亚洲国产最新网站 | 亚洲在线观看 | 91人碰 | 久久一日本道色综合久 | 未成人做爰视频www 窝窝午夜精品一区二区 | 2019偷偷狠狠的日日 | 日本精品视频在线播放 | 日本欧美亚洲 | 欧美视频网站在线观看 | 欧美一级人与动毛片免费播放 | 日韩a级片| 久久性久久性久久久爽 | 亚洲欧美自拍一区 | 波多野结衣在线播放视频 | 欧美一级毛片一免费 | 免费观看a级毛片在线播放 免费观看a级网站 | 三级视频在线播放线观看 |