《如何制作STM32開發(fā)板》之串口
一說到串口,大家應(yīng)該在腦海中出現(xiàn)下面這個畫面就對了:
看到?jīng)]有,這就是正兒八經(jīng)的串口。在現(xiàn)在的工控機上,和以前的家用電腦上,都有串口,現(xiàn)在的家用電腦上,已經(jīng)沒有串口了。(千萬不要把VGA口看成串口,VGA口是15針,串口是9針)
我們要搞單片機,就必須會用串口。所以,開發(fā)板上,就必須要有學(xué)習(xí)串口的功能。
串口的硬件應(yīng)用,現(xiàn)在最多的有3種:
USB轉(zhuǎn)TTL串口
232串口
485通信
在我們的開發(fā)板上,把這3種功能都實現(xiàn)。
一、USB轉(zhuǎn)TTL串口
這個功能,在講程序下載方式的那一篇文章已經(jīng)講過了。STM32VET6有5個串口,但是只有串口1可以下載程序,所以我們默認把USART1與CH340G轉(zhuǎn)成的RXD和TXD放到一起。
我們看圖,CH340G的2腳和3腳分別是RXD和TXD。同時,單片機上面也有RXD和TXD,那么只需要將CH340G上面的TXD和單片機的RXD連接,就可以在電腦上用“串口調(diào)試助手”給單片機發(fā)送數(shù)據(jù),再把CH340G上面的RXD和單片機的TXD連接,單片機就可以給電腦上的“串口調(diào)試助手”發(fā)送數(shù)據(jù)了。
這就是初學(xué)者需要注意的,串口的RXD和TXD是“交叉”連接的。這里的“交叉”,是指這個設(shè)備的RXD和另一個設(shè)備的TXD連接,同理,這個設(shè)備的TXD再和那個設(shè)備的RXD連接。
(真人真事:有一天,一個小伙伴做兩個設(shè)備的串口通信,問我怎么就不能收發(fā)數(shù)據(jù),我說你的RXD和TXD兩條線交叉了嗎?,他說沒有,我說必須要交叉連接才可以。結(jié)果,他把兩條線扭成了麻花,RXD還是連接到了RXD上面…..還問我要多交叉才可以啊…..)
二、232串口
這種串口,就是文章最上面圖片上顯示的串口。我們用USART3來學(xué)習(xí)232串口。用的是SP3232芯片。
232串口和USB轉(zhuǎn)TTL串口的區(qū)別:它們的區(qū)別就是RXD和TXD引腳電壓大小。232和TTL說的是兩種電平。作為初學(xué)者,一說到電平,大家腦海中就應(yīng)該有個“高低”的概念。電平屬于數(shù)字電路的概念,有“高電平”和“低電平”兩種。多大電壓是高電平,多大電壓是低電平,完全是由人決定和規(guī)定的。
232電平:+12V表示低電平,-12V表示高電平。(你沒有看錯,就是這樣的)
TTL電平:那要看你的器件供電電壓,如果是5V供電,高電平是5V,低電平是0V;如果是3.3V供電,高電平是3.3V,低電平是0V。
看上面SP3232的圖,SP3232這個芯片是“TTL電平轉(zhuǎn)232電平”芯片。它的9腳和10腳和單片機的RXD和TXD相連接,9腳和10腳是TTL電平,高低電平分別是3.3V和0V。7腳和8腳是232電平引腳,是可以產(chǎn)生正負12V的引腳,和別的設(shè)備的232串口通信。同樣是交叉連接。
三、485通信
說到485通信,你的腦海中應(yīng)當浮現(xiàn)的是A和B兩個字母。485通信用的是兩條線通信,一條叫做A,一條叫做B,屬于差分通信。兩臺設(shè)備,如果用485通信,線是這樣連接的:
485通信的距離要比232長,所以485一般用作遠距離通信,232一般用作近距離通信。(一般10米以內(nèi)用232,10米之外到幾公里,用485通信。這里的10米,就是個一般數(shù),不要再糾結(jié)的問我:“12米可以用232通信嗎?”,“對不起,你的情商需要充值了”。)
我們用USART2來做485通信實驗,用SP3485芯片,SP3485的1腳連接單片機的RXD,4腳連接單片機的RXD,2腳和3腳是“發(fā)送數(shù)據(jù)”和“接收數(shù)據(jù)”控制引腳,DE高是發(fā)送數(shù)據(jù),RE低是接收數(shù)據(jù),因為發(fā)送數(shù)據(jù)的時候不能接收數(shù)據(jù),接收數(shù)據(jù)的時候不能發(fā)送數(shù)據(jù),所以DE和RE的電平,在一種狀態(tài)下(發(fā)送或者接收),電平是一樣的。所以把這兩個引腳連接在一起,用單片機一個引腳控制就實現(xiàn)了發(fā)送和接收。
關(guān)于485控制引腳的選擇,STM32帶485自動控制功能,所以我們用STM32的PA1來控制,PA1有一個復(fù)用功能是USART2_RTS,STM32自動485就是用這個引腳控制數(shù)據(jù)收發(fā)。當然,如果我們不用自動收發(fā)功能,也可以把PA1當做普通的IO口,然后用寫程序控制收發(fā)數(shù)據(jù)。這里就實現(xiàn)了485的兩種控制方式,這個功能,好像別的開發(fā)板很少有哦。
好了,今天就說到這里,下期再見!