《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 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網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 99re视频这里只有精品 | 在线亚洲综合美国十次 | 伊人激情 | 欧美日韩亚洲一区 | 夜夜拍拍 | 国产黄色片网站 | 第一福利网址导航 | 成人欧美视频 | 亚洲欧美日韩不卡一区二区三区 | 久久黄色大片 | 国产又爽又黄又不遮挡视频99 | 亚洲免费在线视频 | 丰满老妇猛交视频 | 在线播放你懂的 | freexxxhd性欧美 | 2015永久免费观看平台 | 国产在线观看成人免费视频 | 久久久久avav久久久 | 亚洲精品在线影院 | 亚洲福利视频一区 | 无遮挡黄动漫在线观看播放 | 色亚洲影院 | 久久久精品国产免费观看同学 | 337p色噜噜人体大胆欧美 | 成人a一级毛片免费看 | 免费视频中文字幕 | www.伊人| 欧美h片在线 | 欧美一区二区视频在线观看 | 麻豆久久婷婷国产综合五月 | 国产黄三级三·级三级 | 国产精品福利影院 | aaa黑人一级毛片 | 亚洲日韩视频 | 韩日福利视频 | 色博影院| 香蕉网站99视频丝瓜视频 | 极品精品国产超清自在线观看 | 九九精品视频一区在线 | 欧美三级香港三级日本三级 | 欧美日韩黄色大片 |