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);
...

具体可参考TiJOS Framework说明文档。