你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

转发:ARM®mbed OS入门开发(五)SPI

[复制链接]
anywill 提问时间:2016-10-10 08:38 /
本帖最后由 anywill 于 2016-10-10 10:35 编辑

ARM®mbed OS入门开发(五)SPI2016-10-05 Summerain [url=]小白学嵌入式[/url]
Serial communications with SPI
1. mbed SPI master library functions(SPI主机库函数)
//建立SPI master连接到SPI通信引脚,如果不手动设置格式和频率的话,默认是8bits, mode=0, 频率1MHz
SPI(PinName mosi, PinName miso, PinName sclk, PinName _unused=NC);
//设置SPI工作的传输模式和传输一帧的比特数,mode取值为0-3,bits取值为4-16
void format(int bits, int mode = 0);
//设置SPI bus clock frequency
void frequency(int hz = 1000000);
//SPI master向Slave发送数据,返回Slave的返回值
virtual int write(int value);

2. SPI master应用过程:
    1. SPI初始化,包括工作模式format,工作频率frequency;
        频率要根据从机设备slave device (最高70 MHz)
    2. SPI主机的收发
        1)主机将从机片选信号(CS) 拉底至0 V
        2)接着,主机通过SCLK,传输时钟脉冲,表明数据将要被传输
        3)同时,主机通过MOSI发送数据,同时从机通过MISO返回数据

3. SPI Master读写操作:
之前提到,如果只进行操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节Dummy Byte)来引发从机的传输。当主机发送一个连续的数据流时,有些外设能够进行多字节传输。多数具有SPI接口的存储芯片就以这种方式工作。在这种传输方式下,从机的片选端必须在整个传输过程中保持低电平

下面以Bosch BMP280传感器为例:
根据Datasheet所述:
(1) SPI 模式:

  • BMP280的SPI支持两种传输模式:模式0和模式3。
  • 寄存器地址的最高位MSB指示SPI读写操作,其中,0表示写寄存器,1表示读寄存器。7位的寄存器地址与最高位的读写控制bit组成了控制字Control Byte. (The control byte consists of the SPI register address (= full register address without bit 7) and the write/read command.)


SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK);
DigitalOut CS(SPI_CS);

(2)SPI写操作流程:
拉低片选,Set CS low: CS=0;
发送写控制字,Send Write_Control byte: spi.write(regAddr & ~0x80);
发送要写的数据,Send Data byte: spi.write(data);
拉高片选,Set CS high: CS=1。
其中,片选有效后,发送一个Control byte, 写一个Data byte,然后发送地址增加1后的下一个Control byte, 写Data byte。可以一直写,直到结束然后将CS拉高。

(3)SPI读操作(4线SPI为例):
Set CS low: CS=0;
Send Read_Control byte:  spi.write(regAddr | 0x80);
发送空字节,引发传感器传输,读取返回值:Send Dommy byte:
data=spi.write(0x00);
Set CS high: CS=1。
其中,片选有效后,先发送一个Control byte,而后每发送一个空字节,寄存器地址会自动增加1,读取返回值。直到结束将CS拉高

作者微信
微信截图_20161010090612.png
收藏 1 评论5 发布时间:2016-10-10 08:38

举报

5个回答
anywill 回答时间:2016-10-10 08:50:28
先占位
stary666 回答时间:2016-10-10 09:08:56
顶一下,,,,,,,,
zhangdaijin 回答时间:2016-10-10 09:31:06
   支持楼主
slotg 回答时间:2016-10-10 09:42:42
很不错的帖子,感谢分享。
xyx365 回答时间:2016-10-10 10:55:42
不错的教程

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版