鈦極OS之TiSPIMaster
SPI是串行外設接口(Serial Peripheral Interface)的縮寫。SPI,是一種高速的,全雙工,同步的通信總線,並且在芯片的管腳上只佔用四根線,節約了芯片的管腳,同時爲PCB的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,如今越來越多的芯片集成了這種通信協議。具體可參考https://baike.baidu.com/item/SPI或https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus。
TiJOS Framework提供TiSPIMaster來支持SPI主機功能,其將SPI Master按照port分組,共支持256組,組號範圍0-255,即:port0-port255;每組都支持指定模式的單獨設置。
Java包
tijos.framework.devicecenter
TiSPIMaster工作模式定義
項目 | 參數 | 說明 |
工作模式 | MODE0/MODE1/MODE2/MODE3 | 模式0/模式1/模式2/模式3 |
通道類型 | TYPE_SIO/TYPE_DIO/TYPE_QIO/TYPE_PIO | 單通道/雙通道/四通道/並行通道 |
位傳輸模式 | ORDER_MSB/ORDER_LSB | 高位先傳輸/低位先傳輸 |
波特率 | 1/2/3... | 1Mbps/2Mbps/3Mbps... |
TiSPIMaster方法定義
TiSPIMaster類中主要的方法:
方法 | 說明 |
TiSPIMaster open(int portID) | 通過指定port打開指定SPI Master,返回TiSPIMaster對象 |
void close( ) | 關閉已打開的TiSPIMaster實例 |
void setWorkParameters(int mode, int type, int order, int baudRate) | 設置工作模式,類型、位傳輸模式、波特率 |
void selectSlave(boolean enable) | 從機選擇使能控制 |
int read(byte[] data, int offset, int len) | 讀取數據,返回實際讀取長度 |
int write(byte[] data, int offset, int len) | 寫入數據,返回實際寫入長度 |
TiSPIMaster類中他方法的技術說明請參考TiJOS Framework說明文檔。
TiSPIMaster對象創建與銷燬
TiSPIMaster對象的創建需要調用open靜態方法,傳入指定port參數,返回創建的接口對象。
TiSPIMaster對象的銷燬需要調用close方法。
- ...
- int spiPort0 = 0;
- TiSPIMaster spi0 = TiSPIMaster.open(spiPort0);
- ...
- ...
- ...
- spi0.close();
複製代碼
TiSPIMaster模式設置
TiSPIMaster模式設置通過setWorkParameters方法設置,設置參數爲工作模式、通道類型、波特率、位傳輸模式,波特率。
- ...
- //模式3, 單通道類型, 高位先傳, 8Mbps
- spi0.setWorkParameters(TiSPIMaster.MODE3, TiSPIMaster.TYPE_SIO, TiSPIMaster.ORDER_MSB, 8);
- ...
複製代碼
注意:模式支持受平臺特性限制,設置時須瞭解硬件平臺特性。
TiSPIMaster輸入輸出
TiSPIMaster的輸入輸出操作通過selectSlave、read和write方法完成。
- ...
- spi0.selectSlave(true);
- byte[] dataBuffer = {1, 2, 3, 4, 5};
- int writeLength = spi0.write(dataBuffer, 0, dataBuffer.length);
- int readLength = spi0.read(dataBuffer, 0, dataBuffer.length);
- spi0.selectSlave(false);
- ...
複製代碼
更多詳細介紹請見鈦雲物聯官網:www.tijos.net