ARM微控制器外设:SPI通讯简介

SPI:

1、SPI——串行外围接口——4线同步串行通讯接口

2、方便连接各种外设/芯片

3、信号定义:

1、MOSI:主出从入,主设备发送到从设备的信号

2、MISO:主入从出,从设备发送到主设备的信号

3、SCK:由主设备控制产生的SPII工作时钟,每个SCK周期完成一个bit的传输

4、SS:从设备选择端,当从设备收到该端为低电平时,设备有效;对于主设备,该端平时为高电平,可以用于在有效传输周期内给出低电平选通

SPI的特点:

1、串行的

2、同步的

3、全双工的

4、主从模式的

5、点对点或总线的

6、灵活的时钟极性/相位格式

7、可变帧大小从4位到16位

SPI信号——SCK极性与相位:

1、通讯由片选信号的下降沿发起,然后时钟信号的奇数沿总是用来通知主机和从机去采集数据信号数据的值,时钟信号的偶数沿总是用来驱动我们的主机和从机去改变数据线上的值切换到下一个bit

2、通讯由时钟信号第一个沿发起,SS为低电平,奇数沿改变数据线上的值,偶数沿采集数据信号

主模式——Master mode:

1、控制整个传输过程:

1、通过SS信号选择对应的通信从节点

2、决定SCK波特率,相位,极性

3、产生SCK时钟信号

4、驱动MOSI信号

5、采样MISO信号

2、CPU通过向SPIx_D写入数据来启动一次传输过程

从模式——Slave mode:响应主节点的信号:

1、当SS信号被选通时才激活

2、根据预先约定的相位/极性来检测SCK信号

3、驱动MISO信号

4、采样MOSI信号

ARM微控制器外设:SPI寄存器与编程

步骤:

1、把SPI模块对应的时钟打开

2、把引脚指定给SPI模块使用

3、设置SPIx寄存器以接收/传输

SPIx_D:

1、发送和接收都是双缓冲结构

2、移位缓冲寄存器用于数据收发,CPU不能读写

3、数据寄存器能被CPU访问

4、发送时,数据自动从数据寄存器转移到移位寄存器

5、接收时,数据自动从移位寄存器转移到数据寄存器

6、发送和接收的数据寄存器使用相同的寄存器地址

7、读写该寄存器地址具有不同的含义

SPIx_C1

SPIx_C2

SPIx_BR

SPIx_S

ARM微控制器外设:SPI编程实例——OLED显示屏驱动

ARM微控制器外设:I2C通讯简介

I2C:

1、I2C——Inter-IC Bus:一种双向2线制同步串行通讯接口

2、顾名思义,简单、方便地连接各种外设/芯片:一种双向2线制串行总线

I2C的基本特征:

1、串行

2、同步

3、单端

4、双向(但非双工)

5、主从

6、总线

I2C电气特征:

1、两根信号线(还有共地):

1、SDA串行数据线

2、SCL串行时钟线

2、SDA和SCL引脚是特殊的,可线与:

1、漏极开路

2、漏电极开路

3、所有的SDA引脚,所有的SCL引脚,是逻辑“与”的关系

4、SDA和SCL都接了上拉电阻

5、总线空闲时,都是高电平(不耗电流)

6、兼容性好,可以是5V,也可以是3.3V

I2C的优点:

1、只需要2根信号线(节约面积、引脚、成本)

2、协议简单

3、协议容易实现(硬件模块、开漏引脚、GPIO)

4、支持的器件多,功能丰富

5、总线可以同时挂载多个器件

6、总线电气兼容性好

7、速率较高

8、距离较远

I2C的电平逻辑:

1、I2C是电平有效的,与SPI不一样(边沿有效)

2、信号定义:数据线SDA的电平,在时钟线SCL为低电平时,发生变化;数据线SDA的电平,在时钟线SCL为高电平时,保持稳定不变;SDA仅在特殊情况下(I2C总线开始或结束时),在SCL为高时变化

3、起始位:当SCL处于高电平时,SDA从高电平向低电平跳变,产生“起始”位。总线在起始条件产生后便处于忙的状态。可将“起始”位简记为S

4、停止位:当SCL处于高电平时,SDA从低电平向高电平跳变,产生“停止”位。总线在停止条件产生后处于空闲状态,可将“停止”位简记为P

ARM微控制器外设:I2C的通讯协议

I2C的通讯数据帧:

1、SA:从机地址:

1、I2C总线可以连接多个从机设备,但是无需额外的片选信号引脚

2、接在一起的多个的多个器件设备,使用地址进行区分

3、主机不需要地址,每个从机器件都必须有个地址

4、从机地址不能重复,地址为7bits

2、D:数据:8bits一个字节数据,MSB在先,LSB在后

3、A/A:应答(ACK)和无应答(NACK):

1、每传输一个字节,都需要数据的接收方给出一个应答

2、若应答位由从机给出,则从机短暂控制接管SDA,主机释放SDA线(但时钟SCL仍然由主机控制)

3、0表示应答ACK,1表示无应答NACK

4、遇到非应答NACK,应停止数据的发送

I2C高阶:重复起始和子地址:

1、Sr:重复起始:

1、I2C通讯中,有时需要切换数据收发的方向

2、例如I2C设备是个EEPROM存储器时,要读EEPROM,需要先写入地址(主→从),再读取数据(从→主)

3、此时无需给出停止位,然后再给开始位

4、而是直接再产生一次开始位,就可以了,称为“重复起始”位,记为Sr

2、子地址:

1、有一些I2C器件,除了器件自身的从机地址SA外,内部还有若干个单元可被访问,相应具有子地址

2、典型的例如上述的EEPROM存储器,本课实验用到的加速传感器

3、子地址可以是1字节~N字节,通讯时当做I2C的数据发送

ARM微控制器外设;I2C寄存器与编程

步骤:

1、配置好时钟打开

2、把引脚配置给I2C模块使用

3、设置I2C寄存器以接收/传输

加速传感器所用的4个寄存器:

1、I2Cx_F

2、I2Cx_C1

3、I2Cx_S

4、I2Cx_D

ARM微控制器外设:I2C编程实例——加速度传感器

I2C接口定义

ARM控制器外设(史上最全)一相关推荐

  1. 操作系统面试题(史上最全、持续更新)

    尼恩面试宝典专题40:操作系统面试题(史上最全.持续更新) 本文版本说明:V28 <尼恩面试宝典>升级规划为: 后续基本上,每一个月,都会发布一次,最新版本,可以联系构师尼恩获取, 发送 ...

  2. 史上最全的iOS面试题及答案

    史上最全的iOS面试题及答案 1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encodin ...

  3. 史上最全 2019 ICRA顶会四足机器人文献整理

    史上最全 2019 ICRA顶会四足机器人文献整理 一.ICRA论文集中相关文献对应subsession时间 二.文献整理内容 一.ICRA论文集中相关文献对应subsession时间 15:15-1 ...

  4. 史上最全电子产品接口知识大全(含实物图40种,收藏)

    史上最全电子产品接口知识大全(含实物图40种,收藏) 2017-07-31 EDN电子技术设计 1.IDE接口(一种硬盘接口) IDE的英文全称为"Integrated Drive Elec ...

  5. Spring面试题(70道,史上最全)

    转载自 Spring面试题(70道,史上最全) 1.什么是spring? 2.使用Spring框架的好处是什么? 3.Spring由哪些模块组成? 4.核心容器(应用上下文)模块. 5.BeanFac ...

  6. idea mac 替换_史上最全的IntelliJ IDEA For Mac快捷键!快来收藏吧!

    原标题:史上最全的IntelliJ IDEA For Mac快捷键!快来收藏吧! IntelliJ IDEA 2020 for Mac适用于JVM的功能强大且符合人体工程学的IDA! IDEA对新手来 ...

  7. 键盘上每个键作用!!! (史上最全的)­

    键盘上每个键作用!!! (史上最全的)­ F1帮助 ­ F2改名 ­ F3搜索 ­ F4地址 ­ F5刷新 ­ F6切换 ­ F10菜单 ­ CTRL+A全选 ­ CTRL+C复制 ­ CTRL+X剪 ...

  8. 值得收藏!史上最全WINDOWS安全工具锦集

    "工欲善其事,必先利其器." 近日,深信服安全团队整理了一些常见的PE工具.调试反汇编工具.应急工具.流量分析工具和WebShell查杀工具,希望可以帮助到一些安全行业的初学者. ...

  9. 你可能不知道的——史上最全Windows安全工具锦集

    史上最全Windows安全工具锦集 "工欲善其事,必先利其器." 近日,深信服安全团队整理了一些常见的PE工具.调试反汇编工具.应急工具.流量分析工具和WebShell查杀工具,希 ...

  10. 玩转Python必备:史上最全的Python库,【值得收藏,事半功倍】

    库名称     简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器 ...

最新文章

  1. Centos 编译安装sphinx-0.9.9全文检索
  2. 五分钟部署一台vCenter Server 5.0 -- vCSA问与答
  3. 【Linux入门到精通系列讲解】Ubuntu下使用gcc编译并运行C程序
  4. 六、Excel中重要的数据透视表,必须要学会
  5. GDCM:gdcm::Base64的测试程序
  6. 【2010福建】收稻子 (校BSOJ1114)
  7. python post上传大文件分片上传_基于七牛 用python实现分片上传 创建文件报错701...
  8. 【轨迹跟踪】基于matlab无人机轨迹跟踪【含Matlab源码 1152期】
  9. Redis在Window的启动方式(包括安装包也送)
  10. 网页内嵌多媒体内容的完美实现
  11. SAE J1939 协议源代码分析(二)-程序移植
  12. 【学习笔记】软考中级【数据库系统工程师】下午题技巧
  13. Linux调试智能卡环境搭建(二),其中包含Linux编译链接动态库相关
  14. 私域运营之“小程序商城微信生态工具运营”——分销系统
  15. 如何将图片转成png格式?图片的格式怎么转换
  16. android 根据宽度调整字体大小,android根据分辨率自动调整字体大小的实例代码
  17. 【JavaLearn】(24)Session、Cookie、ServletContext、MVC开发模式、JSP九大内建对象及四个作用域、JSTL及EL表达式、过滤器、监听器
  18. mysql级联更新_Mysql实现级联操作(级联更新、级联删除)(转)
  19. 力扣1438——绝对差不超过限制的最长连续子数组(滑动窗口+单调队列)
  20. [美]杰克·韦尔奇《赢》

热门文章

  1. 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)A-小乐乐的组合数+
  2. Java学习笔记之Enum枚举(1)
  3. 工程建材企业必看:应用集中采购协同系统,实现降本增效,提升企业效益!
  4. c语言综合设计作业学籍管理系统,C语言课程设计----学生学籍管理系统
  5. edge-connect 论文代码复现
  6. html中div加滚动条
  7. 核范数和l1范数_向量和矩阵的各种范数比较(1范数、2范数、无穷范数等等
  8. R语言中的Rtools的安装以及环境变量配置
  9. Rtools安装方法
  10. 【bzoj4631】踩气球