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

查看: 1320|回复: 5

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

[复制链接]

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2016-10-10 08:38:08 | 显示全部楼层 |阅读模式
本帖最后由 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
<
回复

使用道具 举报

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2016-10-10 08:50:28 | 显示全部楼层
先占位
回复 支持 反对

使用道具 举报

100

主题

3617

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2016-10-10 09:08:56 | 显示全部楼层
顶一下,,,,,,,,
回复 支持 反对

使用道具 举报

31

主题

1951

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-12-4
发表于 2016-10-10 09:31:06 | 显示全部楼层
   支持楼主
回复 支持 反对

使用道具 举报

26

主题

1984

回帖

6

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2016-10-10 09:42:42 | 显示全部楼层
很不错的帖子,感谢分享。
回复 支持 反对

使用道具 举报

0

主题

159

回帖

0

蝴蝶豆

高级会员

最后登录
2017-3-9
发表于 2016-10-10 10:55:42 | 显示全部楼层
不错的教程
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版