飞思卡尔嵌入式课件KL25第十一章 SPI-I2C-TSI

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
19
4.I2C总线寻址约定 I2C总线规定起始信号后的第一个字节为寻址字节, 用来寻址被控器件,并规定数据传送方向。寻址字节由 被控器的7位地址位(D7~D1位)和一位方向位(D0位) 组成。方向位为0时,表示主控器将数据写入被控器,为 1时表示主控器从被控器读取数据。 5.主机向从机读/写1个字节数据的过程 1)主机向从机写1个字节数据的过程
12
(4)接收一字节数据:uint_8 SPI_receive1(uint_8 SPI_No); (5)接收N字节数据:uint_8 SPI_receiveN(uint_8 SPI_No,uint_8 n,uint_8 data[]); (6)使能SPI中断:void SPI_re_enable_int(uint_8 SPI_No); (7)关闭SPI中断:void SPI_disablere_int(uint_8 SPI_No); 2.SPI驱动构件头文件及源程序 具体代码见书P294
15
3.I2C总线的硬件相关术语与典型电路 1)I2C总线硬件相关术语 (1)主机(主控器):在I2C总线中,提供时钟信 号,对总线时序进行控制的器件。 (2)从机(被控器):在I2C系统中,除主机外的 其它设备均为从机。 (3)地址:每个I2C器件都有自己的地址,以供自 身在从机模式下使用。 (4)发送器:发送数据到总线的器件。 (5)接收器:从总线接收数据的器件。 (6)SDA(Serial DAta):串行数据线。 (7)SCL(Serial CLock):串行时钟线。
11.1.2 KL25的SPI模块概述
KL25内部具有两个SPI模块,分别是SPI0和SPI1。 这两个模块除了时钟源不一样之外,其他的地方完全相 同。SPI0的时钟源是总线时钟,SPI1的时钟源是系统时 钟。下表为KL25的SPI引脚及 SD-FSL-KL25-EVB实际 使用的引脚。
8
11.1.3 SPI模块寄存器
16
2)I2C总线的典型电路
3)I2C总线数据通信协议概要 (1)I2C总线上数据的有效性 I2C总线以串行方式传输数据,从数据字节的最高位 开始传送,每个数据位在SCL上都有一个时钟脉冲相对应。 在一个时钟周期内,当时钟线高电平时,数据线上必须保 持稳定的逻辑电平状态,高电平为数据1,低电平为数据0。 当时钟信号为低电平时,才允许数据线上的电平状态变化, 如下图所示。
2.I2C总线特点 (1)在硬件上,二线制的I2C串行总线使得各IC只 需最简单的连接,而且总线接口都集成在IC中,不需另 加总线接口电路。 (2)I2C总线还支持多主控(multi-mastering)。 (3)串行的8位双向数据传输位速率在标准模式下 可达100kbps(S08AW系列的I2C模块只支持标准模式), 快速模式下可达400kbps,高速模式下可达3.4Mbps。 (4)连接到相同总线的IC数量只受到总线最大电 容(400pf)的限制。
6)主出主入引脚MOMI 主出主入引脚MOMI(Master Out/Master In)是单 线传输时,主机的输出输入数据线,与MOSI引脚复用。 对于MCU被设置为主机方式,该引脚发送或接收从机的 数据。 7)从入从出引脚SISO 从入从出引脚SISO(Slave In/Slave Out)是单线传 输时,从机的输出输入数据线,与MISO引脚复用。对于 MCU被设置为从机方式,该引脚发送或接收主机的数据。 8)时钟极性 表示时钟信号在空闲时是高电平还是低电平。 9)时钟相位 时钟信号SCK的第一个边沿出现在第一位数据传输 周期的中央位置还是开始位置。
4. 模拟SPI 对于不带SPI串行总线接口的MCU来说,可以使用软 件来模拟SPI的操作。例如:我们可以使用三个普通I/O口, 分别定义为pin_SCK、pin_MISO、pin_MOSI来模拟SPI器 件的SCK、MISO、MOSI。我们假设某SPI外围芯片在SCK 的上升沿输入数据和在下降沿输出数据。则我们初始化 pin_SCK=1,在MCU正常工作后,置pin_SCK=0。这样, MCU在输出1位SCK时钟的同时,SPI外围芯片串行左移一 位,从而输出1位数据至MCU的pin_MISO线。然后再置 SCK为1,则MCU的pin_MOSI线输出1位数据(先高位,后 低位)到SPI外围芯片。至此,模拟1位数据输入输出便完成 了。此后再置SCK=0,模拟下1位数据的输入输出……,依 此循环8次,即可完成1次通过SPI总线传输8位数据的操作。 对于在SCK的下降沿输入数据和上升沿输出数据的器件,则 应初始化pin_SCK=0,在MCU正常工作后,置SCK=1,使 SPI器件输出1位数据(MCU接收1位数据),之后再置 SCK=1,使SPI外围芯片接收1位数据(MCU发送1位数据), 7 从而完成1位数据的传送。
2
2)从机选择引脚 一些芯片带有从机选择引脚 (Slave Select)也称 为片选引脚。若一个MCU的SPI工作于主机方式,则该 MCU的 引脚设为高电平。若一个MCU的SPI工作于从机 方式,当 =0时表示主机选中了该从机,反之则未选中 该从机。对于单主单从(One master and one slave)系 统,可以采用下图_C1) SPI控制寄存器一般情况下只能复位时写一次,以 后不再对其写入,不再更改对SPI的设置。SPIx_C1复位 后各位为0。
3.SPI控制寄存器2(SPIx_C2) SPIx_C2寄存器用于SPI系统可选项的设置,复位后 各位为0。
4.SPI波特率寄存器(SPIx_BR) 该寄存器用于为一个SPI主机设定预定标器和位速 率分频因子。它可以在任何时间被读取或写入,复位为0。
5
2.SPI的数据传输 从主机CPU发出启动传输信号开始,将要传送的数 据装入8位移位寄存器,并同时产生8个时钟信号依次从 SCK引脚送出,在SCK信号的控制下,主机中8位移位寄 存器中的数据依次从MOSI引脚送出,到从机的MOSI引 脚后送入它的8位移位寄存器。在此过程中,从机的数据 也可通过MISO引脚传送到主机中。所以,我们称之为全 双工主-从连接(Full-Duplex Master-Slave Connections)。 其数据的传输格式是高位(MSB)在前,低位(LSB) 在后。 3.SPI模块的时序 SPI的数据传输是在时钟信号SCK(同步信号)的 控制下完成的。数据传输过程涉及到时钟相位与时钟极 性两个概念。所谓时钟极性是指时钟信号在空闲时是高 电平还是低电平,所谓时钟相位是指时钟信号SCK的第 一个边沿出现在第一位数据传输周期的中央位置还是开 始位置。 6
3
3)主出从入引脚MOSI 主出从入引脚MOSI(Master Out/Slave In)是主机 输出、从机输入数据线。对于MCU被设置为主机方式, 主机送往从机的数据从该引脚输出。对于MCU被设置为 从机方式,来自主机的数据从该引脚输入。 4)主入从出引脚MISO 主入从出引脚MISO(Master In/Slave Out)是主机 输入、从机输出数据线。对于MCU被设置为主机方式, 来自从机的数据从该引脚输入主机。对于MCU被设置为 从机方式,送往主机的数据从该引脚输出。 5)SPI串行时钟引脚SCK SPI串行时钟引脚SCK(Serial Clock)用于控制主 机与从机之间的数据传输。串行时钟信号由主机的内部 总线时钟分频获得,主机的SCK引脚输出给从机的SCK 引脚,控制整个数据的传输速度。在主机启动一次传送 的过程中,从SCK引脚输出自动产生的8个时钟周期信号, 4 SCK信号的一个跳变进行一位数据移位传输。
17
(2)I2C总线上的信号类型 I2C总线在传送数据过程中共有四种类型信号,分别是开 始信号、停止信号、重新开始信号和应答信号。
18
(3)I2C总线上数据传输格式
由主机发送一个开始信号,启动一次I2C通信,主 机对从机寻址,然后在总线上传输数据。I2C总线上传送 的每一个字节均为8位,首先发送的数据位为最高位,每 传送一个字节后都必须跟随一个应答位,每次通信的数 据字节数是没有限制的;在全部数据传送结束后,由主 机发送停止信号,结束通信。时钟线为低电平时,数据 传送将停止进行。
11
11.1.4 SPI驱动构件封装
1.SPI驱动构件封装要点分析 在进行SPI编程时,首先在程序初始化部分必须进 行SPI系统初始化。SPI的初始化,主要是对SPI控制寄存 器SPIx_C1、SPIx_C2进行设置,定义SPI工作模式、时 钟的空闲电平及相位、允许SPI等,和对SPI的波特率寄 存器SPIx_BR设置,波特率根据传送速度要求计算而得 到。 可以设计SPI构件的几个基本功能函数。 (1)初始化函数:void SPI_init(uint_8 SPI_No,uint_8 SPI_mode,uint_16 BaudRate); (2)发送一字节数据:uint_8 SPI_send1(uint_8 SPI_No,uint_8 data); (3)发送N字节数据:void SPI_sendN(uint_8 SPI_No,uint_8 n,uint_8 data[]);
主机向从机读写1个字节数据的过程1主机向从机写1个字节数据的过程首先主机产生start信号然后发送一个7位从机地址第8位是数据方向位rw0表示主机发送数据这时候主机等待从机的应答信号ack收到应答信号发送要访问的地址等待从机的响应信号收到响应信号时发送1个字节的数据等待从机的响应信号当收到响应信号时产生停止信号结束发送信号212主机从从机读1个字节数据的过程首先主机产生start信号然后发送一个从机地址此时该地址的第8位为0表明是向从机写命令主机等待从机的应答信号ack收到应答信号时发送要访问的地址继续等待从机的应答信号当主机收到应答信号后主机要改变通信模式主机将由发送变为接收从机将由接收变为发送所以主机发送重新开始信号然后发送一个从机地址此时该地址的第8位为1表明将主机设置成接收模式读这时主机等待从机的应答信号当收到应答信号时就可以接收1个字节的数据当接收完成后主机发送非应答信号不再接收数据主机进而产生停止信号结束传送过程
13
11.2 I2C模块
11.2.1 I2C总线的基础知识
I2C(Inter-Integrated Circuit),可翻译为“集成 电路互联总线”,有的文献缩写为I2C、IIC,本书一律 使用I2C。主要用于同一电路板内各集成电路模块 (Inter-Integrated,IC)之间的连接。 1.I2C总线的历史概况 1992年PHILIPS首次发布I2C总线规范Version1.0, 并取得专利。1998年PHILIPS发布I2C总线规范 Version2.0。2001年PHILIPS又发布了I2C总线规范 Version2.1,完善和扩展了I2C总线的功能。目前较为著 名的I2C总线有ST Microelectronics、Texas Instruments、 Xicor、Intel、Maxim、Atmel、Analog Devices和 Infineon Technologies等,I2C总线标准已经属于世界性 14 的工业标准。
1.KL25内部SPI模块寄存器 SPI0和SPI1地址映射关系为: 0x4007_6000u+SPI_nub*0x00001000u,其中SPI_nub分 别可取0或是1,分别代表SPI0和和SPI1。两个SPI除了时 钟源不一样之外,其他的操作完全一样,这里只详细介 绍SPI0, SPI0寄存器映射如下表所示。对SPI1的应用可 参照SPI0。
第11章 SPI、I2C与TSI模块
11.1 串行外设接口SPI 11.2 I2C模块 11.3 触摸感应接口TSI模块 11.4 本章小结
1
11.1 串行外设接口SPI
11.1.1 串行外设接SPI的基础知识
1.SPI基本概念 串行外设接口(SPI,Serial Peripheral Interface) 是Freescale公司推出的一种同步串行通讯接口,用于微 处理器和外围扩展芯片之间的串行连接,现已发展成为 一种工业标准。在阐述SPI的特性之前,我们先来了解几 个概念。 1)主机-从机 SPI系统是典型的“主机-从机”(Master-Slave)系统。 一个SPI系统,由一个主机和一个或多个从机构成,主机 启动一个与从机的同步通讯,从而完成数据的交换。提 供SPI串行时钟的SPI设备称为SPI主机或主设备(Master), 其它设备则称为SPI从机或从设备(Slave)。
10
5.SPI状态寄存器(SPIx_S) 该寄存器有四个只读状态位,位3、2、1和0没有定 义,复位为0,写入无效。 6.SPI数据寄存器(SPIx_D) 读取该寄存器将返回从接收数据缓冲器中读取的数 据。写该寄存器将会把数据写入发送数据缓冲器。当SPI 被配置为主模式时,写入数据到传输数据缓冲器发起一 次SPI传输。 7.匹配寄存器(SPIx_M) 这个寄存器存储硬件比较值。当SPI接收数据缓冲 区收到的的值等于此硬件比较值时,SPI 匹配标志 (SPMF) 置位。
相关文档
最新文档