《如何制作STM32開發(fā)板》之通信接口部分
上一篇文章,我們規(guī)劃了一下STM32開發(fā)板串口(UART),這一篇文章介紹剩下的通信接口。我們?cè)诘谝徽n畫STM32F103VET6單片機(jī)原理圖的時(shí)候,我們就看到,它除了UART,還有SPI、CAN、I2C等通信接口。
一個(gè)單片機(jī),為什么會(huì)有這么多的通信接口?一種接口不夠用么!這是一部分小伙伴的疑問。
基于單片機(jī)的電子產(chǎn)品,從簡(jiǎn)單的到復(fù)雜的,基本上沒有只用單片機(jī)就可以完成了。這一點(diǎn),大家在看到很多電子產(chǎn)品的電路板之后就發(fā)現(xiàn)了,上面有若干個(gè)芯片。帶有單片機(jī)的電路板上,其他的芯片都被稱作單片機(jī)的外圍芯片。
根據(jù)不同的應(yīng)用,有不同的外圍芯片。這些外圍芯片有很多種,例如加速度傳感器芯片、數(shù)字收音機(jī)芯片、存儲(chǔ)芯片、無線通信芯片、放大器芯片、溫度傳感器芯片等等。當(dāng)然,除了外圍芯片,還會(huì)有很多的電子元件,諸如電阻電容三極管MOS管等。
下面就開始介紹我們開發(fā)板所要連接的一些如果芯片。
I2C通信芯片
STM32F103VET6有2個(gè)I2C口,分別是I2C1和I2C2,我們用I2C1口來學(xué)習(xí)。和它連接的芯片我們選擇AT24C02,這是一個(gè)EEPROM類型的存儲(chǔ)芯片。
EEPROM芯片是我們做任何產(chǎn)品時(shí)經(jīng)常會(huì)用到的芯片,最常見的是Atmel公司的AT24XX系列。所以這個(gè)芯片也是我們開發(fā)板上必須要有的芯片。這個(gè)芯片說白了,就是個(gè)存儲(chǔ)芯片。(一般的單片機(jī)由ROM和RAM構(gòu)成,ROM用來放程序,RAM用來放程序運(yùn)行時(shí)的數(shù)據(jù),單片機(jī)運(yùn)行完了關(guān)機(jī)后,ROM中的內(nèi)容還是原來的程序,RAM中的內(nèi)容也都沒有了。如果想要保存數(shù)據(jù),就需要外加一個(gè)存儲(chǔ)芯片了。)
這個(gè)芯片的用途就是保存一些不允許掉電丟失的數(shù)據(jù)。舉個(gè)例子,一個(gè)產(chǎn)品需要限定用戶的使用次數(shù),每開機(jī)一次,就記錄一次,如果達(dá)到10000次,就需要維護(hù),這里的使用次數(shù),就需要掉電不丟失。
這里雖然連接的是硬件I2C口,但是也可以把I2C口的兩個(gè)引腳配置為普通的IO口模擬I2C時(shí)序來學(xué)習(xí)I2C通信,作為單片機(jī)的初學(xué)者,強(qiáng)烈建議要先學(xué)習(xí)普通IO模擬I2C時(shí)序。
SPI通信芯片
STM32F103VET6有2個(gè)SPI接口,分別是SPI1和SPI2,我們用無線通信芯片NRF24L01和W25Q16來連接SPI1口,SPI2口用作和觸摸屏芯片XPT2046通信。
作為初學(xué)者,看到SPI1口同時(shí)連接了W25Q16和NRF24L01兩個(gè)芯片,感到詫異,為什么一個(gè)SPI口可以連接2個(gè)芯片?要理解這個(gè)原因,需要先簡(jiǎn)單的知道一下SPI通信的原理,SPI通信都會(huì)有一個(gè)CS片選引腳,聽名字,片選引腳,也就是“選擇哪一個(gè)芯片”的意思,也就是說,你的SPI口可以連接很多SPI通信的芯片,只要每個(gè)芯片的CS引腳連接到單片機(jī)不同的CS引腳就可以了。到時(shí)候,你要和哪個(gè)芯片通信,就把哪個(gè)芯片對(duì)應(yīng)的CS引腳拉低就可以了。
W25Q16也是存儲(chǔ)芯片,它與前面說的AT24C02的不同之處是,W25Q16是FLASH類型的存儲(chǔ)芯片。你有機(jī)會(huì)的話,就會(huì)見到在實(shí)際的產(chǎn)品中,也有同時(shí)出現(xiàn)EEPROM和FLASH兩種存儲(chǔ)芯片的時(shí)候。FLASH類型的存儲(chǔ)芯片一般要比EEPROM類型的芯片存儲(chǔ)更多的內(nèi)容,容量更大。
我們使用的時(shí)候,有一點(diǎn)非常重要,就是EEPROM可以一個(gè)字節(jié)一個(gè)字節(jié)的修改,而FLASH的話,即使你要修改一個(gè)字節(jié),也需要先擦除一整頁(yè)(256個(gè)字節(jié))。所以,如果我們要存儲(chǔ)字節(jié)為單位的數(shù)據(jù)的話,就用EEPROM,如果要存儲(chǔ)很多數(shù)據(jù)的話,就用FLASH。
在這里,仔細(xì)的朋友會(huì)注意到,前面的原理圖中,單片機(jī)引腳與芯片之間采用雙排排針,利用短路帽連接,如果不接短路帽,單片機(jī)引腳就是獨(dú)立的引腳,還可以用杜邦線引出和電路板之外的各種芯片模塊連接,這就是開發(fā)板的一大功能,如果直接相連,那就失去了“開發(fā)板”的意義了。而在這里,SPI1實(shí)際上也沒有與NRF24L01直接相連,因?yàn)槲覀冞@里使用的是一個(gè)NRF24L01的插座,拔掉模塊以后,實(shí)際上就是不連接的。
(NRF24L01接口示意圖)
(短路帽連接示意圖)
CAN通信芯片
CAN通信使用TI公司的SN65HVD230。CAN通信一般用于汽車相關(guān)的產(chǎn)品。
好了,今天就到這里!