STM32再學(xué)習(xí)——實(shí)現(xiàn)完美的RS485
在遠(yuǎn)距離通訊中,難免受干擾,因此,偉大的牛人們就創(chuàng)造了一種差分傳輸?shù)姆绞?mdash;—RS485通訊方式(以下簡(jiǎn)稱RS485)。RS485由兩根差分線來傳輸數(shù)據(jù),比起RS232來說,其傳輸?shù)木嚯x更遠(yuǎn),搞干擾性更強(qiáng)。當(dāng)然,也為了節(jié)省銀子,因此,只保留了一組差分線,也就只能完成同一時(shí)刻只接收或發(fā)送數(shù)據(jù)的半雙工通訊了。
本文引用地址:http://2s4d.com/article/182410.htm在設(shè)計(jì)中,我們經(jīng)常使用一個(gè)名為Max485的芯片來完成TTL電平至差分電平的轉(zhuǎn)換,這款芯片有一個(gè)DE(發(fā)送使能)引腳控制著RS485線的數(shù)據(jù)傳輸方向,而這個(gè)引腳何時(shí)高電平,何時(shí)低電平對(duì)我們的數(shù)據(jù)交換質(zhì)量也就起著重大的作用。
我們先來看一下DE引腳的作用。當(dāng)主設(shè)備完成發(fā)送后,其需要在1byte的時(shí)間內(nèi)釋放RS485總線,否則從設(shè)備在收到數(shù)據(jù)后,再回送數(shù)據(jù)時(shí)就會(huì)與主設(shè)備對(duì)總線占用的問題而產(chǎn)生沖突,這在RS485總線上是不允許的——RS485總線沒有仲裁機(jī)制。因此,DE引腳就需要在主設(shè)備發(fā)送完成最后一個(gè)字節(jié)的最后一位數(shù)據(jù)的一位時(shí)間內(nèi)將DE引腳從高電平拉到低電平。
STM32微處理器提供一個(gè)應(yīng)用實(shí)例來實(shí)現(xiàn)精確、高效地控制DE引腳。這里我們使用DMA方式通過UART發(fā)送與接收數(shù)據(jù),那么我們將會(huì)用到DMA發(fā)送完成中斷與USART發(fā)送完成中斷。DMA控制器監(jiān)控著整個(gè)發(fā)送過程,待發(fā)送數(shù)據(jù)將會(huì)不斷地被存入U(xiǎn)SART數(shù)據(jù)寄存器直到DMA計(jì)數(shù)減至零。當(dāng)DMA發(fā)送完成后將觸發(fā)DMA發(fā)送完成中斷,我們就在這個(gè)中斷中,將DE引腳的電平拉低。
我親愛的網(wǎng)友們,你們學(xué)會(huì)了嗎?
數(shù)字通信相關(guān)文章:數(shù)字通信原理
評(píng)論