嵌入式硬件基础知识之I2C总线

目录

I2C总线简介

主器件与从器件

工作原理

主要特点

数据传输

字节格式

应答响应

时钟同步

 I2C 仲裁

传输模式

快速模式

高速模式

I2C协议标准代码 

 起始信号&停止信号

起始信号代码

停止信号代码

发送一个(8bit)字节

读取一个字节

应答


  • I2C总线简介

I2C 总线是由 Philips 公司开发的一种简单、双向二线制同步串行总线。它只需要两根线 SDA 、SCL 即可在连接于总线上的器件之间传送信息,I2C 总线数据传输速率在标准模式下可达 100kbit/s,快速模式下可达 400kbit/s,高速模式下可达 3.4Mbit/s,在超高速模式下可达到 5Mbit/s。

  • 主器件与从器件

主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。

  • 工作原理

SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接口都有一定的等效电容.而线路中电容会影响总线传输速度.当电容过大时,有可能造成传输错误.所以,其负载能力为400pF,因此可以估算出总线允许长度和所接器件数量。

主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。

  • 主要特点

  1. 在硬件上,I2C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特殊的接口电路,而且片上接口电路的滤波器可以滤去总线数据上的毛刺.因此I2C总线简化了硬件电路PCB布线,降低了系统成本,提高了系统可靠性。因为I2C芯片除了这两根线和少量中断线,与系统再没有连接的线,用户常用IC可以很容易形成标准化和模块化,便于重复利用。
  2. I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏,每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其他器件正常工作。
  3. I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试,故障可以立即被寻址,软件也利于标准化和模块化,缩短开发时间。
  4. 连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。
  5. 总线具有极低的电流消耗.抗高噪声干扰,增加总线驱动器可以使总线电容扩大10倍,传输距离达到15m;兼容不同电压等级的器件,工作温度范围宽。 

 

  • 数据传输

  1. 主设备往从设备中写数据,如下图:

  2. 主设备从从设备中读数据,如下图:

  • 字节格式

发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。

  • 应答响应

数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA 线(高)。

在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。

通常被寻址的接收器在接收到的每个字节后,除了用CBUS 地址开头的数据,必须产生一个响应。当从机不能响应从机地址时(例如它正在执行一些实时函数不能接收或发送),从机必须使数据线保持高电平,主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。

如果从机接收器响应了从机地址,但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平,主机产生一个停止或重复起始条件。

如果传输中有主机接收器,它必须通过在从机发出的最后一个字节时产生一个响应,向从机发送器通知数据结束。从机发送器必须释放数据线,允许主机产生一个停止或重复起始条件。

I2C总线数据传输和应答

  • 时钟同步

所有主机在SCL线上产生它们自己的时钟来传输I2C总线上的报文。数据只在时钟的高电平周期有效,因此需要一个确定的时钟进行逐位仲裁。

时钟同步通过线与连接I2C 接口到SCL 线来执行。这就是说SCL 线的高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL 线保持这种状态直到到达时钟的高电平。但是如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL 线的状态。因此SCL 线被有最长低电平周期的器件保持低电平。此时低电平周期短的器件会进入高电平的等待状态。

当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平。之后,器件时钟和SCL线的状态没有差别,而且所有器件会开始数它们的高电平周期。首先完成高电平周期的器件会再次将SCL线拉低。

这样产生的同步SCL 时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。

  •  I2C 仲裁

    (1)I2C 仲裁:在多节点的 I2C 通信中,为解决两个或两个以上节点同时向一条总线发送数据形成的冲突,需要进行 I2C 总线仲裁。

    (2)仲裁机制:根据总线线“与”逻辑原理,当有一个节点发送低电平时,总线上表现为低电平,而发送高电平的节点将会失去仲裁。(如果节点1为低电平0,总线表现也是低电平0,那么节点1与总线线与相同;如果节点2为高电平1,总线为低电平,那么节点2与总线线与结果不相同,那么节点2就会被制裁。

    (3)以下图 两个节点为例,DATA1 和 DATA2 分别是节点向总线所发送的数据信号,SDA 为总线上所呈现的数据信号,SCL 是总线上所呈现的时钟信号

    起始:DATA 1 和 DATA 2 发送起始信号,DATA 1 和 DATA 2 为高电平,根据总线线“与”功能,总线为高电平,DATA 1、DATA 2 与 总线电平相同,继续发送数据。

    第一个时钟周期:DATA1 和 DATA 2 为高电平,总线为高电平,DATA 1、DATA 2 继续发送数据。

    第二个时钟周期:DATA1 和 DATA 2 为低电平,总线为低电平,DATA 1、DATA 2 继续发送数据。

    第三个时钟周期:DATA1 为高电平,DATA2 为低电平,SDA 总线为低电平,DATA1 继续发送数据,DATA 2 与 SDA 总线电平不同失去仲裁。

  • 传输模式

  • 快速模式

快速模式器件可以在400kbit/s 下接收和发送。最小要求是:它们可以和400kbit/s 传输同步,可以延长SCL 信号的低电平周期来减慢传输。快速模式器件都向下兼容,可以和标准模式器件在0~100kbit/s 的I2C 总线系统通讯。但是,由于标准模式器件不向上兼容,所以不能在快速模式I2C 总线系统中工作。快速模式I2C 总线规范与标准模式相比有以下特征:

1、最大位速率增加到400kbit/s;

2、调整了串行数据(SDA) 和串行时钟(SCL )信号的时序;

3、快速模式器件的输入有抑制毛刺的功能,SDA 和SCL输入有施密特触发器

4、快速模式器件的输出缓冲器对SDA 和SCL 信号的下降沿有斜率控制功能;

5、如果快速模式器件的电源电压被关断,SDA 和SCL 的I/O 管脚必须悬空,不能阻塞总线;

6、连接到总线的外部上拉器件必须调整以适应快速模式I2C 总线更短的最大允许上升时间。对于负载最大是200pF 的总线,每条总线的上拉器件可以是一个电阻,对于负载在200pF~400pF 之间的总线,上拉器件可以是一个电流源(最大值3mA )或者是一个开关电阻电路。

  • 高速模式

高速模式(Hs 模式)器件对I2C 总线的传输速度有巨大的突破。Hs 模式器件可以在高达3.4Mbit/s 的位速率下传输信息,而且保持完全向下兼容快速模式或标准模式(F/S 模式)器件,它们可以在一个速度混合的总线系统中双向通讯。

Hs 模式传输除了不执行仲裁和时钟同步外,与F/S 模式系统有相同的串行总线协议和数据格式。

高速模式下I2C 总线规范如下:

1、Hs 模式主机器件有一个SDAH 信号的开漏输出缓冲器和一个在SCLH 输出的开漏极下拉和电流源上拉电路。这个电流源电路缩短了SCLH 信号的上升时间,任何时候在Hs 模式,只有一个主机的电流源有效;

2、在多主机系统的Hs 模式中,不执行仲裁和时钟同步,以加速位处理能力。仲裁过程一般在前面用F/S 模式传输主机码后结束;

3、Hs 模式主机器件以高电平和低电平是1:2 的比率产生一个串行时钟信号。解除了建立和保持时间的时序要求;

4、可以选择Hs 模式器件有内建的电桥。在Hs 模式传输中,Hs 模式器件的高速数据(SDAH)和高速串行时钟(SCLH )线通过这个电桥与F/S 模式器件的SDA 和SCL 线分隔开来。减轻了SDAH 和SCLH 线的电容负载,使上升和下降时间更快;

5、Hs 模式从机器件与F/S 从机器件的唯一差别是它们工作的速度。Hs 模式从机在SCLH 和SDAH输出有开漏输出的缓冲器。SCLH 管脚可选的下拉晶体管可以用于拉长SCLH 信号的低电平,但只允许在Hs 模式传输的响应位后进行;

6、Hs 模式器件的输出可以抑制毛刺,而且SDAH 和SCLH 输出有一个施密特触发器;

7、Hs 模式器件的输出缓冲器对SDAH 和SCLH 信号的下降沿有斜率控制功能。

  • I2C协议标准代码 

  •  起始信号&停止信号

      起始信号:当 SCL 线是高电平时 SDA 线从高电平向低电平切换。 
      停止信号:当 SCL 线是高电平时 SDA 线由低电平向高电平切换。

  • 起始信号代码

void I2C_Start(void)
{
    I2C_SDA_High();     //SDA=1,初始状态,SDA线空闲
    I2C_SCL_High();     //SCL=1,初始状态,SDA=1,SDA线空闲
    I2C_Delay();        //延时
    I2C_SDA_Low();      //SDA=0,SDA线有效
    I2C_Delay();        //延时
    I2C_SCL_Low();      //SDA=0,SCL=0;
    I2C_Delay();
}
  • 停止信号代码

void I2C_Stop(void)
{
    I2C_SDA_Low();  //SDA=0,数据线有效
    I2C_SCL_High(); //SCL=1.信号线为高电平,则需要将SDA设置为1;
    I2C_Delay();    //延时
    I2C_SDA_High(); //SDA=1,数据线失效
    I2C_Delay();
}
  • 发送一个(8bit)字节

CPU向I2C总线设备发送一个字节(8bit)数据

u8 I2C_SendByte(uint8_t Byte)
{
    uint8_t i;
 
    /* 先发送高位字节 */
    for(i = 0 ; i < 8 ; i++)
    {
        if(Byte & 0x80)
        {
            I2C_SDA_High();
        }
        else
        {
            I2C_SDA_Low();
        }
        I2C_Delay();
        I2C_SCL_High();
        I2C_Delay();
        I2C_SCL_Low();
        I2C_Delay();
 
        if(i == 7)
        {
            I2C_SDA_High();                     /* 释放SDA总线 */
        }
        Byte <<= 1;                             /* 左移一位  */
 
        I2C_Delay();
    }
} 
  • 读取一个字节

CPU从I2C总线设备上读取一个字节(8bit数据)

u8 I2C_ReadByte(void)
{
    uint8_t i;
    uint8_t value;
 
    /* 先读取最高位即bit7 */
    value = 0;
    for(i = 0 ; i < 8 ; i++)
    {
        value <<= 1;
        I2C_SCL_High();
        I2C_Delay();
        if(I2C_SDA_READ())
        {
            value++;
        }
        I2C_SCL_Low();
        I2C_Delay();
    }
 
    return value;
}
  • 应答

  1. CPU产生一个ACK信号

    void I2C_Ack(void)
    {
    
        I2C_SDA_Low();
        I2C_Delay();
    
        I2C_SCL_High();
        I2C_Delay();
    
        I2C_SCL_Low();
        I2C_Delay();
    
        I2C_SDA_High();
    }

     

  2.  CPU产生一个非ACK信号

    void I2C_NoAck(void)
    {
    
        I2C_SDA_High();
        I2C_Delay();
    
        I2C_SCL_High();
        I2C_Delay();
    
        I2C_SCL_Low();
        I2C_Delay();
    }

     

  3.  CPU产生一个时钟,并读取器件的ACK应答信号

    uint8_t I2C_WaitToAck(void)
    {
    
        uint8_t redata;
    
    
        I2C_SDA_High();
        I2C_Delay();
    
        I2C_SCL_High();
        I2C_Delay();
    
        if(I2C_SDA_READ())
        {
    
            redata = 1;
    
        }
        else
        {
    
            redata = 0;
    
        }
    
        I2C_SCL_Low();
        I2C_Delay();
    
    
        return redata;
    }   
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ARM嵌入式系统设计基础教程课件 第1章介绍了嵌入式系统的定义和组成、嵌入式微处理器体系结构和类型。 第2章介绍了ARM微处理器结构、寄存器结构、异常处理、存储器结构、指令系统和接口。 第3章介绍了S3C2410A的存储器控制器、时钟和电源管理、I/O口、中断控制、DMA控制器的内部结构和寄存器以及编程方法。 第4章介绍了嵌入式系统存储设备分类与层次结构、NOR Flash接口、NAND Flash接口、SDRAM接口、CF卡接口、SD卡接口、IDE接口的基本原理、电路结构与读/写操作方法; 第5章介绍了嵌入式系统的GPIO、A/D转换器接口、D/A转换器接口、键盘与LE D数码管接口、LCD显示接口、触摸屏接口的基本原理、电路结构与编程方法。 第6章介绍了嵌入式系统的串行接口、I2C接口、USB接口、SPI接口、PCI接口、I2S总线接口的基本原理、电路结构与编程方法; 第7章介绍了嵌入式系统网络接口,包含有以太网接口、CAN总线接口的基本原理、电路结构与编程方法。 第8章介绍了嵌入式软件的特点、分类、体系结构,嵌入式操作系统的功能和分类,嵌入式系统的任务管理、存储管理、输入/输出设备管理。 第九章介绍了ADS IDE的组成与使用,ARM汇编伪指令,ARM的汇编语言结构,ARM汇编语言程序调试,ARM汇编语言与C语言混合编程等ARM汇编语言程序设计基础知识; 第10 章介绍了Bootloader 的作用、工作模式和启动流程,S3C2410 平台下Linux的Bootloader,WinCE的Bootloader 和Blob。 第11章介绍了嵌入式Linux的开发环境,桌面Linux的安装和使用,Linux内核结构、目录结构、文件系统等Linux操作系统基础知识。 第12章介绍了Bootloader的移植,嵌入式Linux内核和文件系统的移植,Linux下设备驱动程序的开发,应用程序开发。 第13章介绍了图形用户接口(GUI)的层次结构,桌面Linux系统中GUI,嵌入式Linux系统GUI ,MiniGUI 的开发环境、移植、应用编程库和应用程序编写方法,Qt/Embedded, Qt开发及运行环境的创建和Qt应用程序的开发。
嵌入式系统设计实战:基于飞思卡尔S12X微控制器》以飞思卡尔半导体公司(原摩托罗拉半导体部)16位S12X系列微控制器中MC9S12XS128为蓝本阐述嵌入式系统的软件与硬件设计。全书共11章,其中第1章阐述嵌入式系统的知识体系、学习误区与学习建议。第2章给出XS128硬件最小系统,并简要介绍S12XCPU(CPU12X)。第3章给出第一个样例程序及CodeWai·“or工程组织,完成第一个S12X工程的入门。第4章给出基于硬件构件的嵌入式系统开发方法。第5章阐述串行通信接口SCI,并给出第一个带中断的实例。1~5章介绍了学习一个新MCU完整要素(知识点)的入门。6~12章分别介绍GPIO的应用(键盘、LED及LCD)、定时器(含PWM)、串行外设接口SPI、Flash存储器在线编程、CAN总线、A/D转换及S12XS128其他模块等。附录给出相关资料。《嵌入式系统设计实战:基于飞思卡尔S12X微控制器》涉及的实例源程序、辅助资料、相关芯片资料及常用软件工具,可在北航出版社下载中心或苏州大学飞思卡尔嵌入式系统研发中心网站下载。《嵌入式系统设计实战:基于飞思卡尔S12X微控制器》可供大学有关专业的高年级学生和研究生用作教材或参考读物,也可供嵌入式系统开发与研究人员用作参考和进修资料。 第1章 概述 1 1.1 嵌入式系统定义、由来及特点 1 1.1.1 嵌入式系统的定义 1 1.1.2 嵌入式系统的由来及其与微控制器的关系 2 1.1.3 嵌入式系统的特点 3 1.2 嵌入式系统的知识体系、学习误区及学习建议 4 1.2.1 嵌入式系统的知识体系 4 1.2.2 嵌入式系统的学习误区 5 1.2.3 基础阶段的学习建议 8 1.3 嵌入式系统常用术语 10 1.3.1 与硬件相关的术语 10 1.3.2 与通信相关的术语 11 1.3.3 与功能模块及软件相关的术语 12 1.4 嵌入式系统常用的C语言基本语法 13 第2章 S12X系列MCU硬件最小系统及CPU12X 26 2.1 S12X系列MCU概述及型号标识 26 2.1.1 S12X系列MCU概述 26 2.1.2 S12X系列MCU型号标识 28 2.2 S12X系列MCU的功能及存储器映像 29 2.2.1 S12X系列MCU的功能 30 2.2.2 S12X系列MCU的存储器映像及特点 31 2.3 XS128的引脚功能及硬件最小系统 36 2.3.1 XS128(80引脚QFP封装)的引脚功能 37 2.3.2 XS128的硬件最小系统 40 2.3.3 硬件最小系统的焊接与测试步骤 43 2.4 CPU12X的内部寄存器 44 2.5 CPU12X的寻址方式 47 2.6 CPU12X指令系统概要 51 2.6.1 数据传送类指令 53 2.6.2 算术运算类指令 56 2.6.3 逻辑运算类与位操作类指令 60 2.6.4 程序控制类指令 63 2.6.5 其他类指令 71 2.7 CPU12X汇编语言基础 72 2.7.1 S12X汇编源程序格式 72 2.7.2 S12X汇编语言伪指令 74 第3章 第一个样例程序及CodeWarrior工程组织 77 3.1 通用I/O接口基本概念及连接方法一 77 3.2 XS128的GPIO寄存器与GPIO构件封装 79 3.2.1 XS128的GPIO寄存器 79 3.2.2 GPIO的简单编程方法 83 3.3 CodeWarrior开发环境与S08/S12/ColdFire三合一写入器 84 3.3.1 CodeWarrior开发环境简介与基本使用方法 85 3.3.2 S08/S12/ColdFire三合一写入器 86 3.3.3 MC9S12XS128硬件评估板 87 3.4 CW环境C语言工程文件的组织 87 3.4.1 工程文件的逻辑组织结构 88 3.4.2 工程文件的物理组织结构 90 3.4.3 系统启动及初始化相关文件 91 3.4.4 芯片初始化、主程序、中断程序及其他文件 98 3.4.5 机器码文件(s19文件)的简明解释 101 3.4.6 lst文件与map文件 103 3.4.7 如何在CW环境下新建一个S12工程 105 3.5 第一个C语言工程:控制小灯闪烁 105 3.5.1 GPIO构件设计 106 3.5.2 Light构件设计 113 3.5.3 Light测试工程主程序 115 3.5.4 理解第一个C工程的执行过程 116 3.6 第一个汇编语言工程:控制小灯闪烁 117 3.6.1 汇编工程文件的组织 118 3.6.2 Light构件汇编程序 122 3.6.3 Light测试工程主程序 124 3.6.4 理解第一个汇编工程的执行过程 126 第4章 基于硬件构件的嵌入式系统开发方法 129 4.1 嵌入式系统开发所遇到的若干问题 129 4.2 嵌入式硬件构件的基本思想与应用方法 130 4.3 基于硬件构件的嵌入式系统硬件电路设计 131 4.3.1 设计时需要考虑的基本问题 131 4.3.2 硬件构件化电路原理图绘制的简明规则 133 4.3.3 实验PCB板设计的简明规则 135 4.4 基于硬件构件的嵌入式底层软件构件的编程方法 139 4.4.1 嵌入式硬件构件和软件构件的层次模型 139 4.4.2 底层构件的实现方法与编程思想 140 4.4.3 硬件构件及底层软件构件的重用与移植方法 141 第5章 串行通信接口SCI 144 5.1 异步串行通信的通用基础知识 144 5.1.1 串行通信的基本概念 145 5.1.2 RS-232总线标准 146 5.1.3 TTL电平到RS-232电平转换电路 148 5.1.4 串行通信编程模型 149 5.2 SCI模块的编程寄存器 150 5.3 SCI编程实例 155 5.3.1 SCI初始化与收发编程的基本方法 156 5.3.2 SCI构件设计与测试实例 157 5.4 XS128的中断源与第一个带有中断的编程实例 166 5.4.1 中断与异常的通用知识 166 5.4.2 XS128的中断机制 166 5.4.3 XS128的中断编程方法 171 5.4.4 XS128的中断优先级编程实例 173 第6章 GPIO的应用实例:键盘、LED与LCD 175 6.1 键盘技术概述 175 6.1.1 键盘模型及接口 175 6.1.2 键盘编程的基本问题 177 6.1.3 键盘构件设计与测试实例 178 6.2 LED技术概述 184 6.2.1 扫描法LED显示编程原理 184 6.2.2 LED构件设计与测试实例 186 6.3 LCD技术概述 191 6.3.1 LCD的特点和分类 191 6.3.2 点阵字符型液晶显示模块 193 6.3.3 HD44780 193 6.3.4 LCD构件设计与测试实例 199 第7章 定时器相关模块 207 7.1 计数/定时器的基本工作原理 207 7.2 定时器模块的基本编程方法与实例 208 7.2.1 定时器模块计时功能的基本寄存器 210 7.2.2 定时器构件设计与测试实例 212 7.3 定时器模块输入捕捉功能的编程方法与实例 216 7.3.1 输入捕捉的基本含义 216 7.3.2 输入捕捉的寄存器 217 7.3.3 输入捕捉构件设计与测试实例 218 7.4 定时器模块输出比较功能的编程方法与实例 221 7.4.1 输出比较的基本知识 222 7.4.2 用于输出比较功能的相关寄存器 222 7.4.3 输出比较构件设计与测试实例 224 7.5 定时器模块脉冲累加功能的编程方法与实例 226 7.5.1 脉冲累加的基本知识 226 7.5.2 脉冲累加功能的相关寄存器 227 7.5.3 脉冲累加器构件设计 228 7.6 脉宽调制模块 231 7.6.1 PWM工作原理 231 7.6.2 XS128的PWM的特点及模块框图 232 7.6.3 脉宽调制模块PWM相关寄存器 233 7.6.4 PWM构件设计及测试实例 236 7.7 周期中断定时器模块PIT 243 7.7.1 PIT模块功能描述 243 7.7.2 PIT模块的编程寄存器 245 7.7.3 PIT构件设计与测试实例 248 第8章 A/D与SPI 252 8.1 A/D通用知识 252 8.1.1 A/D的基本问题 252 8.1.2 A/D转换器 253 8.1.3 A/D转换常用传感器简介 254 8.1.4 电阻型传感器采样电路设计 255 8.2 A/D模块的编程寄存器 257 8.3 A/D模块编程方法与实例 264 8.3.1 A/D模块基本编程方法 264 8.3.2 A/D构件设计与测试实例 265 8.4 SPI的基本工作原理 270 8.4.1 SPI基本概念 270 8.4.2 SPI的数据传输 272 8.4.3 SPI模块的时序 272 8.4.4 模拟SPI 276 8.5 SPI模块的编程寄存器 276 8.6 SPI构件设计与测试实例 282 第9章 Flash存储器在线编程 289 9.1 S12X系列MCU的Flash存储器的特点及分页机制 289 9.1.1 S12X系列MCU的Flash存储器的特点 290 9.1.2 XS128的Flash存储器分页机制 290 9.2 Flash存储器编程方法 295 9.2.1 Flash存储器编程的基本概念 295 9.2.2 Flash存储器的编程寄存器 296 9.2.3 FCCOB-NVM命令模式 300 9.2.4 Flash存储器的编程步骤 301 9.3 D-Flash在线编程 303 9.4 P-Flash在线编程 308 9.5 Flash存储器的保护特性和安全性 313 9.5.1 Flash存储器的配置区域 313 9.5.2 Flash存储器的保护特性 314 9.5.3 Flash存储器的安全性 317 第10章 CAN总线 321 10.1 CAN总线通用知识 321 10.1.1 CAN总线协议的历史概况 321 10.1.2 CAN硬件系统的典型电路 321 10.1.3 CAN总线的有关基本概念 324 10.1.4 帧结构 327 10.1.5 位时间 331 10.2 MSCAN模块简介 332 10.2.1 MSCAN特性 333 10.2.2 报文存储结构、标识符验收过滤与时钟系统 334 10.2.3 CAN模块的主要运行模式、低功耗选项、中断与响应 341 10.3 MSCAN模块的内存映射及寄存器定义 345 10.3.1 MSCAN模块内存映射 345 10.3.2 MSCAN模块寄存器 346 10.4 MSCAN模块双机通信测试实例 360 10.4.1 测试模型 360 10.4.2 编程要点 360 10.4.3 CAN模块底层构件设计 361 10.4.4 测试操作要点 374 10.5 MSCAN模块的自环通信实例 374 10.5.1 测试模型 374 10.5.2 编程要点及设计代码 374 第11章 系统时钟与其他功能模块 378 11.1 时钟与复位产生模块概述 378 11.1.1 锁相环技术 378 11.1.2 CRG模块框图 380 11.1.3 CRG模块的工作模式 381 11.1.4 XS128内部锁相环结构 383 11.2 XS128的CRG模块的初始化 384 11.2.1 XS128的CRG模块寄存器 384 11.2.2 初始化编程方法与实例 389 11.3 CRG模块的其他功能 392 11.3.1 CRG产生复位信号 392 11.3.2 中断 397 11.4 XS128的IRQ、XIRQ引脚、RTIBRK及SWI中断 398 11.4.1 IRQ与XIRQ引脚中断 398 11.4.2 实时中断 398 11.4.3 调试模块DBG与软件中断SWI指令 399 附录A XS128的映像寄存器 400 附录B S08/S12/ColdFireBDM简明使用方法 410 附录C 常见实践问题集锦 414 附录D XS128的C语言函数库 417 附录E XS128的中断源与中断向量表 421 参考文献 424

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XiaoCheng'Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值