spi接口 android,Android Things:外設I/O接口-SPI

一、接口簡介

串行外圍接口(Serial Peripheral Interface)設備通常需要快速的數據傳輸速率。SPI適合高帶寬使用情況,如外部非易失性存儲器和圖形顯示,許多傳感器除了I2C也支持SPI。

SPI總線是一種同步的串行接口:這意味着它依賴於共享的時鍾信號來同步設備之間的數據傳輸。控制時鍾信號的設備被稱為master。其它所有連接的外設被認為是Slaves。每個設備連接到同一組數據信號以形成總線。從理論上講,SPI數據傳輸率是僅限於master切換時鍾信號的快慢。時鍾速度通常在16MHz到25MHz范圍。高速共享時鍾允許SPI外設更快的傳輸數據,比UART錯誤更少。

SPI支持全雙工數據傳輸:意味着master和slave可以同時交換數據。為了支持全雙工傳輸,總線必須提供下列單獨的信號,使得SPI最少四線接口:

Master出Slave入(MOSI);

Mater入Slave出(MISO);

共享時鍾信號(CLK);

共同的接地參考(GND);

SPI支持同一總線連接多個從設備:和I2C不同,slave設備使用硬件尋址。每個slave都需要外部芯片選擇信號,來讓master定位特定的設備作為數據傳輸的目標。如果僅僅使用一個slave這個信號就不必須。

90cc06b89d9ae4ba890777c5f30f036f.png

二、接口使用

打開連接

創建PeripheralManagerService對象,使用你想打開端口的名稱,調用open()方法打開連接。public class HomeActivity extends Activity {

// SPI Device Name

private static final String SPI_DEVICE_NAME = ...;

private SpiDevice mDevice;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// Attempt to access the SPI device

try {

PeripheralManagerService manager = new PeripheralManagerService();

mDevice = manager.openSpiDevice(SPI_DEVICE_NAME);

} catch (IOException e) {

Log.w(TAG, "Unable to access SPI device", e);

}

}

@Override

protected void onDestroy() {

super.onDestroy();

if (mDevice != null) {

try {

mDevice.close();

mDevice = null;

} catch (IOException e) {

Log.w(TAG, "Unable to close SPI device", e);

}

}

}

}

配置時鍾和數據模式

在一個SPI總線連接建立之后,配置數據傳輸速率和操作模式來匹配同一條總線上的Slave設備。為

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值