找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3185|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32多機通信

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80436 發(fā)表于 2015-5-20 14:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
利用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ù)開銷。這種模式下,MSB1的字節(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_WakeUpUSART 的喚醒方式:
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。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表