基于Mbed平台的SPI接口使用方法

前言

本文不具体详解SPI接口的原理特性等等,只负责解释说明Mbed平台中SPI类的部分公共函数。
笔者目前仍在学习阶段,为了自身能够更好理解才写下本文,如有错误请多多指教。(手动土下座)

Reference

SPI - SPIマスター
SPI - API references and tutorials | Mbed OS 6 Documentation

简单介绍

SPI总线规定了4个保留逻辑信号接口:
1. MOSI - Master Output Slave Input - 主设备输出 从设备输入
2. MISO - Master Input Slave Output - 主设备输入 从设备输出
3. SCLK - Serial Clock - 时钟信号 由主设备发送给从设备
4. SS - Slave Select - 片选信号 由主机发出

其工作模式有4个模式:

Mode Polarity Phase
0 0 0
1 0 1
2 1 0
3 1 1

Polarity表示极性,按笔者的理解可以大概是指默认传输电平为高还是为低。
Phase表示相位,大概指识别电平开始变化的一瞬间或者电平失去变化的一瞬间。
可以借助下图帮助思考。
基于Mbed平台的SPI接口使用方法_第1张图片

了解到这里有助于理解后面的函数,详细部分请浏览其他文章。

正文

  • 初始化

    SPI (PinName mosi, PinName miso, PinName sclk, PinName ssel=NC)

    SPI name(mosi, miso, sclk);
    // 定义一个名为name的SPI类,且必须输入mosi,miso和sclk的引脚
    
  • 通信模式

    void format (int bits, int mode=0)

    name.format(bits, mode);
    // 配置传输数据的模式,bits指传输数据的比特数,mode为上文提到的工作模式
    
  • 时钟频率

    void frequency (int hz=1000000)

    name.frequency(hz);
    // 设置时钟的频率
    
  • 发送与接收

    virtual int write (int value)

    val = name.write(data);
    // data为发送的数据,val为函数接收到数据时返回的数据
    

你可能感兴趣的:(arm开发)