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