Controller,泛指SPI設備里面的控制寄存器,可以通過(guò)配置它們來(lái)設置SPI總線(xiàn)的傳輸模式。
通常情況下,我們只需要對上圖所描述的四個(gè)管腳(pin)進(jìn)行編程即可控制整個(gè)SPI設備之間的數據通信:
SCK,SerialClock,主要的作用是Master設備往Slave設備傳輸時(shí)鐘信號,控制數據交換的時(shí)機以及速率;
SS/CS,SlaveSelect/ChipSelect,用于Master設備片選Slave設備,使被選中的Slave設備能夠被Master設備所訪(fǎng)問(wèn);
SDO/MOSI,SerialDataOutput/MasterOutSlaveIn,在Master上面也被稱(chēng)為T(mén)x-Channel,作為數據的出口,主要用于SPI設備發(fā)送數據;
SDI/MISO,SerialDataInput/MasterInSlaveOut,在Master上面也被稱(chēng)為Rx-Channel,作為數據的入口,主要用于SPI設備接收數據;
SPI設備在進(jìn)行通信的過(guò)程中,Master設備和Slave設備之間會(huì )產(chǎn)生一個(gè)數據鏈路回環(huán)(DataLoop),就像上圖所畫(huà)的那樣,通過(guò)SDO和SDI管腳,SSPSR控制數據移入移出SSPBUF,Controller確定SPI總線(xiàn)的通信模式,SCK傳輸時(shí)鐘信號。
2、Timing.
Bus-Width的作用是指定地址總線(xiàn)到Master設備之間數據傳輸的單位。
例如,我們想要往Master設備里面的SSPBUF寫(xiě)入16Byte大小的數據:首先,給Master設備的配置寄存器設置Bus-Width為Byte;然后往Master設備的Tx-Data移位寄存器在地址總線(xiàn)的入口寫(xiě)入數據,每次寫(xiě)入1Byte大小的數據(使用writeb函數);寫(xiě)完1Byte數據之后,Master設備里面的Tx-Data移位寄存器會(huì )自動(dòng)把從地址總線(xiàn)傳來(lái)的1Byte數據移入SSPBUF里;上述動(dòng)作一共需要重復執行16次。
Channel-Width的作用是指定Master設備與Slave設備之間數據傳輸的單位.與Bus-Width相似,Master設備內部的移位寄存器會(huì )依據Channel-Width自動(dòng)地把數據從Master-SSPBUF里通過(guò)Master-SDO管腳搬運到Slave設備里的Slave-SDI引腳,Slave-SSPSR再把每次接收的數據移入Slave-SSPBUF里。
通常情況下,Bus-Width總是會(huì )大于或等于Channel-Width,這樣能保證不會(huì )出現因Master與Slave之間數據交換的頻率比地址總線(xiàn)與Master之間的數據交換頻率要快,導致SSPBUF里面存放的數據為無(wú)效數據這樣的情況。
4、SSPBUF.
例如,在發(fā)送數據之前,我們應該先往Master的Tx-Data寄存器寫(xiě)入將要發(fā)
送出去的數據,這些數據會(huì )被Master-SSPSR移位寄存器根據Bus-Width自動(dòng)移入Master-SSPBUF里,然后這些數據又會(huì )被Master-SSPSR根據Channel-Width從Master-SSPBUF中移出,通過(guò)Master-SDO管腳傳給Slave-SDI管腳,Slave-SSPSR則把從Slave-SDI接收到的數據移入Slave-SSPBUF里.與此同時(shí),Slave-SSPBUF里面的數據根據每次接收數據的大小(Channel-Width),通過(guò)Slave-SDO發(fā)往Master-SDI,Master-SSPSR再把從Master-SDI接收的數據移入Master-SSPBUF。在單次數據傳輸完成之后,用戶(hù)程序可以通過(guò)從Master設備的Rx-Data寄存器讀取Master設備數據交換得到的數據。
5、Controller.
聯(lián)系客服