標題:
STM32多機通信
[打印本頁]
作者:
liuqq
時間:
2015-5-20 14:25
標題:
STM32多機通信
利用
USART
可以進行
多機處理器通信
,
其原理就是使從機處于靜默模式,由主機在需要的時候發(fā)送指令喚醒從機,并傳輸數(shù)據(jù)。
STM32
靜默模式特點:
1
、所有接收狀態(tài)位都不會被設(shè)置;
2
、所有的接收中斷都被禁止;
3
、
USART_CR1
寄存器中的
RWU
位被置
1
,
RUW
可以硬件自動控制或者在某些條件下由軟件寫。
連接方法很簡單,主機的
TX
輸出與從機的
RX
端口直接相連,從機
TX
端口要經(jīng)過與非門與主機
RX
端口連接。
多機通信方式有
2
種:
空閑
幀喚醒和
地址
喚醒。
空閑幀喚醒可以同時喚醒所有從機,在從機處于靜默模式時發(fā)送空閑幀(即所有位均為
1
的數(shù)據(jù)),喚醒多個從機,實現(xiàn)多個從機同步。
地址喚醒可以喚醒單個從機,從機靜默時發(fā)送地址幀,從機自動對比地址,地址配對正確則該從機喚醒,否則繼續(xù)進入靜默。這樣只有被尋址者才被激活,來接收數(shù)據(jù),減少由未被尋址的接收機器參與帶來的多余的
USART
服務(wù)開銷。這種模式下,
MSB
為
1
的字節(jié)被認為是地址,否則被認為是數(shù)據(jù)(
MSB
一般為數(shù)據(jù)傳送的最高位,
8
位傳送則
MSB
為第八位;
9
位傳送則
MSB
為第九位)。在一個地址字節(jié)中,目標接收者的地址放在低
4
位。這
4
位會被接收器拿來和設(shè)置在
USART_CR2
寄存器中
ADD
位中的自身地址比較。當接收到一個和設(shè)置地址相匹配的地址字符時,
RWN
被清除,后面的字節(jié)將正常接收。因為
RWU
位已經(jīng)被清除,
RXEN
位會因為接收到地址符被置
1
。當從機再次接收到地址符,如若地址不匹配則從機再次進入靜默模式。
程序?qū)嶋H編寫時可以注意以下
3
部分的設(shè)置:
一、設(shè)置靜默模式:
函數(shù)原形
void USART_WakeUpConfig(USART_TypeDef* USARTx,
u16 USART_WakeUp
)
其中
USART_WakeUp
:
USART
的喚醒方式:
1
、
USART_WakeUp_
IdleLine
空閑總線喚醒
2
、
USART_WakeUp_
AddressMark
地址標記喚醒
二、地址喚醒中地址設(shè)置:
函數(shù)原形
void USART_SetAddress(USART_TypeDef* USARTx,
u8 USART_Address
)
其中
USART_Address
:是設(shè)置
USART
節(jié)點的地址。
例如:
USART_SetAddress(USART2, 0x5);
三、檢查是否進入靜默:
函數(shù)原形
void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx,
FunctionalState Newstate
)
其中
NewState: USART
靜默模式的新狀態(tài)這個參數(shù)可以取:
ENABLE
或者
DISABLE
。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1