飞思卡尔8位单片机-第10章 IIC
- 格式:ppt
- 大小:340.50 KB
- 文档页数:39
第一章搭建实验环境系统时钟设置#include "App\Include\App.h"#ifndef _MCG_C#define _MCG_C//oscillator 12MHZ 倍频为24MHZ()先8分频后16倍频void S_MCGInit(void)/* the MCG is default set to FEI mode, it should be change to FBE mode*/MCGC2[7:6] BDIV总线频率分频因子–选择由MCGC1寄存器中CLKS位决定的时钟源的分频。
这控制总线频率。
00 编码0 –时钟1分频01 编码1 –时钟2分频(复位后默认)10 编码2 –时钟4分频11 编码3 –时钟8分频[5] RANGE频率范围选择–选择外部振荡器或者外部时钟源的频率范围。
1 选择1MHz到16MHz外部振荡器的频率范围。
(1MHz到40MHz的外部时钟电源)的高频率范围0 选择32kHz到100kHz外部振荡器的频率范围。
(32kHz到1MHz的外部时钟电源)的低频率范围[4] HGO高增益振荡器选择–控制外部振荡器操作模式。
1 配置外部振荡器为高增益运行0 配置外部振荡器为低功耗运行[3] LP低功耗选择–控制在忽略模式中FLL(或者PLL)是否为无效1 FLL(或PLL)在忽略模式(低功耗)中为无效的。
0 FLL(或PLL)在忽略模式中为无效的。
[2] EREFS外部参考时钟选择–为外部参考选择时钟源1 选择振荡器0 选择外部时钟源[1] ERCLKEN外部参考时钟使能–使能外部参考时钟作为MCGERCLK1 MCGERCLK激活0 MCGERCLK 无效[0] EREFSTEN外部参考时钟停止使能MCGC2 0b0011 0110 激发外部时钟(晶振)(没有使能)MCGC2=MCGC2_RANGE_MASK|MCGC2_HGO_MASK|MCGC2_EREFS_MASK|MCGC2_ERCLK EN_MASK;while(!MCGSC_OSCINIT);//MCGSC寄存器中OSCINIT(第1位)为1,表示由EREFS位选择的晶振被初始化。
本程序是HCS系列都可以本人已通过实验下面是程序代码/*****************头文件*****************************************/#include <hidef.h> /* for EnableInterrupts macro */#include "derivative.h" /* include peripheral declarations */#include "iic24c02.h"/*********************延时函数************************************/ void delay(void){byte i;i=8;while(i>0){i--;}}/*********************ICC初始化************************************/ void Init_IIC(void){SOPT1_IICPS=0; //IIC 在PTA引脚上// IICF=0x0d; //设置波特率<100kbps// IICF=0X4B;IICF=0X24;IICC_IICEN=1;//使能IICIICC_TXAK=0; //当接收完一字节数据产生确认位IICC_IICIE=0;//禁止中断// IICA=0x38;}/*********************写函数************************************/void WRITE_IIC(uchar addres,uchar date){byte temp;IICC_IICEN = 0;IICC_IICEN = 1; //使能IICtemp = IICS; //清中断IICS_IICIF = 1;IICC_MST=0;IICS_SRW=0;IICC_TX=1; //写使能IICC_MST=1; //设为主模式delay();IICD=0xA0; //发送芯片地址,写命令while(!IICS_IICIF );temp = IICS;IICS_IICIF=1;IICD=addres; //发送寄存器地址while(!IICS_IICIF);temp = IICS;IICS_IICIF=1;IICD=date;//写第1个字节while(!IICS_IICIF);temp = IICS;IICS_IICIF=1;IICC1_TX=0;IICS_SRW=0;IICC1_MST=0;}/*********************读一个字节************************************/byte IIC_read_one_byte(byte address){byte temp;IICC_RSTA=0;IICC_IICEN = 0;IICC_IICEN = 1; //使能IICtemp = IICS; /* Clear any pending interrupt */IICS_IICIF = 1;IICC1_MST=0;IICS_SRW=0;IICC_TX=1; //写使能IICC_MST=1; //置为主模式delay();IICD=0xA0; //发送芯片地址,写命令while(!IICS_IICIF);temp = IICS;IICS_IICIF=1;IICD=address; //发送寄存器地址while(!IICS_IICIF);temp = IICS;IICS_IICIF=1;IICC_TXAK=1;IICC_RSTA=1; //重新启动IICD=0xA1; //读命令while(!IICS_IICIF);temp = IICS;IICS_IICIF=1;IICC_TX=0; //读使能temp=IICD;while(!IICS_IICIF);temp = IICS;IICS_IICIF=1;temp=IICD; //读一个字节IICC_MST=0;delay();return(temp);}。
第一章搭建实验环境系统时钟设置#include "App\Include\App.h"#ifndef _MCG_C#define _MCG_C//oscillator 12MHZ 倍频为24MHZ()先8分频后16倍频void S_MCGInit(void){/* the MCG is default set to FEI mode, it should be change to FBE mode*//************************************************************************** ***********MCGC2[7:6] BDIV总线频率分频因子–选择由MCGC1寄存器中CLKS位决定的时钟源的分频。
这控制总线频率。
00 编码0 –时钟1分频01 编码1 –时钟2分频(复位后默认)10 编码2 –时钟4分频11 编码3 –时钟8分频[5] RANGE频率范围选择–选择外部振荡器或者外部时钟源的频率范围。
1 选择1MHz到16MHz外部振荡器的频率范围。
(1MHz到40MHz的外部时钟电源)的高频率范围0 选择32kHz到100kHz外部振荡器的频率范围。
(32kHz到1MHz的外部时钟电源)的低频率范围[4] HGO高增益振荡器选择–控制外部振荡器操作模式。
1 配置外部振荡器为高增益运行0 配置外部振荡器为低功耗运行[3] LP低功耗选择–控制在忽略模式中FLL(或者PLL)是否为无效1 FLL(或PLL)在忽略模式(低功耗)中为无效的。
0 FLL(或PLL)在忽略模式中为无效的。
[2] EREFS外部参考时钟选择–为外部参考选择时钟源1 选择振荡器0 选择外部时钟源[1] ERCLKEN外部参考时钟使能–使能外部参考时钟作为MCGERCLK1 MCGERCLK激活0 MCGERCLK 无效[0] EREFSTEN外部参考时钟停止使能MCGC2 0b0011 0110 激发外部时钟(晶振)(没有使能)*************************************************************************** ***********/MCGC2=MCGC2_RANGE_MASK|MCGC2_HGO_MASK|MCGC2_EREFS_MASK|MCGC2_ERCLK EN_MASK;while(!MCGSC_OSCINIT);//MCGSC寄存器中OSCINIT(第1位)为1,表示由EREFS位选择的晶振被初始化。
图书基本信息书名:《飞思卡尔8位单片机实用教程》13位ISBN编号:978712108999210位ISBN编号:7121089998出版时间:2009-6出版社:曾周末、李刚、陈世利、 周鑫玲 电子工业出版社 (2009-06出版)页数:222版权说明:本站所提供下载的PDF图书仅提供预览和简介以及在线试读,请支持正版图书。
更多资源请访问:前言飞思卡尔原是全球领先的半导体公司,为汽车、消费电子、工业控制、网络和无线市场设计并制造嵌入式半导体产品。
飞思卡尔系列单片机由于其低成本和高性能的特点越来越受到用户的青睐。
本书介绍的MC9S08QG8单片机采用高性能、低功耗HCS208飞思卡尔8位微控制器为内核,是一款集成度很高、功能丰富、适用于各种应用的低价位单片机。
本书将给大家介绍它的一些主要功能及特性,包括灵活多样的低功耗模式、3.3V电压下的Flash编程、片内调试仿真器、高速ADC、IC总线、片内比较器等。
本书共12章,深入浅出地从一般单片机的基础知识人手,引出飞思卡尔8位单片机基础知识、最小系统设计,进而有步骤地、详略得当地介绍飞思卡尔8位单片机的寄存器与片内存储器、指令系统与汇编程序设计、中断系统等基本功能,并在之后的章节中,详细而又有针对性地一一介绍了集成在这款单片机内部的其他功能模块,比如定时器和比较器、异步串行通信、SPI、IC、模/数转换等功能模块。
本书还介绍了飞思卡尔单片机与MCS51单片机的区别,学过5l单片机的人会很快掌握其要点。
在本书最后一章里,有针对性地介绍了S08系列单片机c语言编程,并详细介绍了Code Warrior IDE调试软件的使用方法。
本书给出的所有例题都在实验板上运行验证过。
总之,本书力求通过最简洁的语言和表述方式、最通俗易懂的应用举例,向广大读者全面地介绍MC9S080G8单片机的功能及特性,以求能够为大专院校的学生及各相关领域的工作者提供一些帮助。
参加本书编写的还有天津大学精仪学院的薛彬、汤其剑、刘世廷、高雅彪、叶德超、黄邦奎、孙晔等研究生。
1、I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备(特别是外部存储器件)。
2、I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。
3、I2C总线在传送数据过程中共有三种特殊类型信号,它们分别是:开始信号、结束信号和应答信号。
4、I2C总线最主要的优点是其简单性和有效性。
由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。
I2C总线的另一个优点是,它支持多主机,其中任何能够进行发送和接收的设备都可以成为主机。
一个主控能够控制信号的传输和时钟频率。
当然,在任何时间点上只能有一个主机。
5、I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。
各种I2C均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址。
下面是我的电路板单片机引脚接线情况:第16、17号引脚接的就是SDA、SCL.下面是SCL和SDA接的EEPROM,通过单片机的两个引脚连接一个外围存储器.前面说IIC有三种信号先看开始信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;终止信号:SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
若用代码表示开始信号:// 只有在SCL为0时才能将SDA改变,SCL为高x相当于告诉别人SDA不会被改变了// 当在SCL为高时改变SDA状态,只会被识别成开始或终止状态V oid StartIIC(){// 首先我们需要将SDA和SCL置成高,变成上图最开始状态SCL = 0;// 延时Delay();// 将SDA置高,SDA = 1;Delay();// 再将SCL置高,此时SDA和SCL都为高电平SCL = 1;Delay();// 一切就绪,就等着SDA在SCL为高时变低,表示开始了SDA = 0;Delay();// 将SCL = 0SCL = 0;Delay();}再看看终止信号:V oid StopIIC(){// 终止就是要先将SCL置高,SDA置低,然后在此基础上将SDA置高// 先将SCL置0,便于将SDA改变SCL = 0;Delay();SDA = 0;Delay();SCL = 1;Delay();// 此时SCL = 1,SDA = 0;// 将SDA = 1,表示终止信号SDA = 1;Delay();}之所以将SCL好SDA在0和1,就像两个相隔很远的人通过两个手电的光信号交流一样,高电平表示打开手电,低电平表示不开手电没有光,每一秒记录一个状态。
飞思卡尔半导体文件编号:AN3291 应用笔记第1版,03/2007Specifications and information herein are subject to change without notice. ©Freescale Semiconductor,Inc., 2007. All rights reserved.General Business Information如何在M68HC08、HCS08和HCS12微控制器上应用IIC模块作者: Stanislav Arendarik应用工程师捷克共和国,罗斯诺夫1 简介此应用笔记是如何在飞思卡尔的微控制器上应用IIC模块的一个示例。
IIC模块可以分别在主模式或从模式下使用。
在这种情况下,由于IIC 总线主要用于在微控制器(MCU)和IIC外设之间的通信,因此在主模式时与串行EEPROM进行通信。
IIC总线可以在两个微控制器(MCU)之间直接进行通信,然而SPI总线却更适用于这种应用。
此应用笔记总结了通用IIC总线状态和定义,并提供了如何与串行EEPROM进行通信的示例(24C16和24C512)。
您可以轻松地用另外一个IIC器件取代EEPROM,但是必须改变将其标识为从器件的IIC地址字节。
目录1 简介…………… . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 12 IIC 总线摘要………….. . . . …. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.1 IIC总线术语.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 位传输. ………….. . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 22.3 起始条件和停止条件(START and STOP Conditions)...... . 32.4 总线通信. . ……………………….. . . . . . . . . . . . . . . . . . . . 32.5 控制字节………………………. . . . . . . . . . . . . . . . . . . . .. . . 32.6 地址字节……….... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.7 应答………… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 42.8 读/写格式………………………………......…..…... . . . . . . .. 53 用于微控制器的IIC软件程序. ………. . . . . . . . . . . . . . . . . . . . . . . 53.1 IIC的初始化. … . . . …….. . . . . . . . . .. .. . . . .. .. .. . . . . . . . 63.2 写入功能. . . . . . . . . . . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . 73.3 读取功能 .. . . . . . . . . . . . . . . . . . . . .. . .. . . . . .. . . . . . . . . 93.4 中断应用举例. . . . . . ……………. . . . . . . . . . . .. . . . . . . . . 133.4.1 MCU作为主机.. . . . . . . . . . . .. .. . . . . . . . . . . . . . . 133.4.2 MCU作为从机. . . . . . .. . . . . . . .. . . . . . .. . . . . . . 164 结论. . . ……... . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . .. . . 17IIC总线摘要2 IIC 总线摘要IIC总线是基于主机和从机间线与(开漏)连接的双向、两线式总线。
杰理iic程序讲解全文共四篇示例,供读者参考第一篇示例:杰理IIC程序讲解杰理IIC(Inter-Integrated Circuit)是一种用于在芯片之间或者与外部设备之间进行通信的串行通信协议。
它是由飞思卡尔公司(Freescale Semiconductor)推出的一种新型通信协议,设计用来解决传输速度慢、带宽窄的问题。
杰理IIC协议具有高速传输、简单硬件接口和多设备连接的特点,因此被广泛应用于各种电子设备当中。
杰理IIC协议的工作原理非常简单,它使用两条线路来进行通信:一条是串行数据线(SDA),另一条是串行时钟线(SCL)。
在通信过程中,SCL线由主设备负责产生时钟信号,SDA线用于传输数据。
在开始通信前,主设备发送一个开始信号,然后发送设备地址和数据,接收设备在正确接收数据后发送一个应答信号。
通信完成后,主设备发送停止信号,结束通信。
在杰理IIC通信中,每个设备都有一个唯一的7位地址,用来标识设备的身份。
主设备可以向多个从设备发送数据,也可以从多个从设备接收数据。
通信过程中,主设备和从设备之间需要按照一定的协议进行数据交换,确保数据的正确传输。
杰理IIC协议还包括了高速模式、扩展地址模式和多主模式等扩展功能,可以满足不同应用场景的需求。
为了方便开发人员使用杰理IIC协议进行通信,飞思卡尔公司提供了一套完整的软件库和开发工具,可以帮助开发人员快速上手并实现各种功能。
开发人员只需要根据自己的需求编写相应的程序代码,就可以实现各种复杂的通信功能。
下面我们来讲解一下如何使用杰理IIC 软件库进行开发。
开发人员需要下载并安装杰理IIC软件库和开发工具,飞思卡尔公司官网提供了相应的软件包和文档。
安装完成后,开发人员需要按照文档中的说明配置开发环境,并连接目标设备到开发环墵。
接下来,开发人员可以使用开发工具打开一个新的工程,并选择杰理IIC协议。
在工程中添加必要的源文件和头文件,并进行相应的配置。
飞思卡尔8位单片机概述----飞思卡尔8位单片机系列主要包括RS08类、HCS08类、HC08类、HC08汽车类、HCS08汽车类。
下面每个类型都将挑选一典型产品进行介绍,更多产品介绍敬请登陆飞思卡尔官方网站。
1、RS088位微控制器正逐渐向小型化应用发展。
在这些小型应用中,也许并不需要使用完整的HC08或S08所具备的丰富功能。
RS08内核是非常流行的SO8中央处理器(CPU)的精简版,它被精心打造为效率更高、成本更低并适合小容量内存的微控制器。
RS08是一些新兴应用的理想解决方案,例如完全用固态电路实现的简单机电设备,或小型便携设备甚至一次性便携设备。
飞思卡尔的工程师将小型化应用不需要的功能从S08内核中去除,而对其余的运算进行了增强,从而提高了超小型控制器的使用效率。
这些控制器的芯片面积非常小,您甚至可以将它们从胡椒罐中摇出来。
RS08内核的尺寸比S08小30%。
为了减小面积,RS08将计数器和地址总线宽度限制为14位,使用一个全局中断标志寄存器取代了矢量中断功能,同时还取消了以下功能:堆栈指针和H:X寄存器及其相关指令和寻址模式乘法、除法以及BCD码指令算术逻辑移位运算(保留了逻辑移位和旋转)条件码寄存器中的若干位以及相关条件分支指令这些被取消的功能由更为简单的结构所代替,这些结构保证了在内存低于16K且引脚数目很少的器件上,可以用非常简洁高效的代码实现大多数嵌入式应用。
为了进一步提高运算效率,飞思卡尔增加了如下内容:屏蔽程序计数器,用于更为高效的子程序调用简短微小的寻址模式,允许对最常用的变量和寄存器进行更为有效地访问和操作内存分页方案,能够更充分地利用直接寻址模式和新型的简短微小的寻址模式RS08内核深化了飞思卡尔8位产品系列,在发展可以共享外围设备和通用开发工具、并且引脚兼容的8位/32位器件的过程中,迈出了第一步。
它将使机械和电子产品开发者开发出史无前例、独具匠心、节约成本的电子应用产品和功能非常先进的一次性产品。