基于ARM的嵌入式芯片 S3C44BOX下的IIC通信.docx
- 文档编号:26250591
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:33
- 大小:140.59KB
基于ARM的嵌入式芯片 S3C44BOX下的IIC通信.docx
《基于ARM的嵌入式芯片 S3C44BOX下的IIC通信.docx》由会员分享,可在线阅读,更多相关《基于ARM的嵌入式芯片 S3C44BOX下的IIC通信.docx(33页珍藏版)》请在冰豆网上搜索。
基于ARM的嵌入式芯片S3C44BOX下的IIC通信
存档编号:
xxxxx学校计算机工程系
毕业设计论文(报告)
题目:
基于ARM的嵌入式芯片S3C44BOX下的IIC通信
学号:
姓名:
专业:
班级:
指导教师:
设计地点:
计算机应用技术专业毕业设计任务书3
第一章引言5
1.1嵌入式发展现状5
1.2嵌入式的应用领域5
1.3嵌入式系统的特点5
第二章ARM概述6
2.1ARM处理器核6
2.2ARM7TDMI7
2.2.1ARM7三级流水线介绍7
2.2.2ARM7TDMI结构图及功能7
第三章S3C44BOX下IIC总线简介9
3.1IIC总线9
3.1.1S3C44BOXIIC总线接口的功能概述10
3.1.2S3C44BOXIIC总线接口的功能作用概述10
3.2S3C44BOX下IIC总线寄存器描述14
第四章S3C44BOX下的IIC通信的实现16
4.1主模式下的造作流程图16
(1)主模式发送数据操作16
4.2从模式下的造作流程图18
4.3程序的实现20
致谢22
西安航空技术高等专科学校
计算机应用技术专业毕业设计任务书
姓名:
xx班级:
xxx学号:
xxx
一、设计或实践题目:
基于ARM的嵌入式芯片S3C44box下的IIC通信设计。
二、内容及要求
软件开发环境:
Windows操作系统、EmbestIDE
硬件开发环境:
S3CEV40实验箱
要求:
在S3CEV40实验箱上实现两台试验箱的基本数据传输功能(单工、双工均可)。
三、完成形式
毕业设计论文(源代码、逻辑图)
四、系(部)审核意见:
指导教师:
xx发题日期:
年月日
完成日期:
年月日
【内容摘要】计算机通信是一种以数据通信形式出现,在计算机与计算机之间或计算机与终端设备之间进行信息传递的方式。
而IIC通信是计算机通信中的一种其特点是IIC总线是一种半双工的多主设备串行总线,总线仅由串行数据线SDA(SerialDataLine)和串行时钟总线SCL(SerialClockLine)组成。
SDA和SCL都是双向线路,各通过一个电流源或上拉电阻连接到正的电源电压。
当总线空闲时这两条线路都是高电平,连接到总线的器件输出必须的漏极开路或集电极开路才能执行“线与”的功能。
本论文的设计思路就是利用S3CEV40实验箱中IIC模块,对其寄存器进行配置已达到两台实验箱之间进行通信。
Computercommunicationisaformofdatacommunicationbetweencomputerandthecomputer,orcomputerandterminalequipmentbetweenthewayinformationtransmission.ButtheIICcommunicationisakindofcomputercommunicationthatitscharacteristicisIICbusisahalf-duplexmainequipmentofSerialbus,onlybySerialcableLine)becomesSDADataandtheSerialClockbusLinebecomesSCL)oftime.SDAandSCListwo-waylines,allthroughacurrentsourceorpull-upresistorsconnectedtopositivevoltage.Whenthebuswhenleisurethesetwolinesarehighlevel,connectedtothebusthedraindeviceoutputmustbecarriedoutopencollectoropenorwiththefunctionof"lines".ThispaperisusingthedesignideaofS3CEV40experimentbox,theIICmoduleconfigurationregisterhasreachedtwoexperimentalboxcommunicationbetween.
【关键字】通信,IIC总线,S3CEV40实验箱
第一章引言
1.1嵌入式发展现状
目前,高性能嵌入式系统的硬件核心是拥有32位ARM/PowerPC/MIPS核的SoC,其硬件平台具有强大的运算能力和丰富的片上资源,可以支持复杂的嵌入式操作系统EOS(EmbeddedOperatingSystems)的运行,使得20实际80年代后期陆续出现的一些嵌入式操作系统真正广泛使用起来。
大部分EOS价格昂贵,而源代码开放的μc/OS-II、μCLinux、Linux功能真正简易。
1.2嵌入式的应用领域
到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域
工业控制领域。
作为32位的RISC架构,基于ARM核的微处理器芯片不但占据了高端微控制器的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低成本、高性价比,向传统的8位/16位微控制器提出了挑战。
①无线通讯领域。
目前已有超过85%的无线通讯设备采用了ARM技术,ARM以齐高性能和低成本,在该领域的地位日以巩固。
②网络应用。
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。
此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,对DSP的应用领域也提出了挑战。
③消费类电子产品。
ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。
④成像和安全产品。
现在流行的数码相机和打印机绝大部分采用ARM技术。
手机中的32位SIM智能卡也采用了ARM技术。
除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。
1.3嵌入式系统的特点
①“专用”计算机系统。
嵌入式系统的处理器大多适合于工作在为特定用户群所设计的系统中,所以被称为“专用微处理器”。
②运行环境差异很大。
嵌入式系统无所不在,如冰天雪地的两极中、骄阳似火的汽车里、要求温度恒定的科学实验室里等,其运行环境差异大。
③比通用PC系统资源少。
通用PC机的系统资源相对丰富,可以轻松完成各种工作。
你可以在自己的PC机上编写好程序的同时,播放MP3、CD、下载资料等,因为个人PC机拥有1GB内存、180G硬盘空间,而一般的嵌入式系统,由于是专门用来执行很少的几个确定任务,它所能管理的资源比通用PC系统少的多。
④功耗低、体积小、集成度高、成本低。
第二章ARM概述
2.1ARM处理器核
ARM微处理器包括下面几个系列,其他厂商基于ARM体系机构的处理器22核除了具有ARM体系结构的共同特点外,每一个系列的ARM微处理器核有各自的特点和应用领域。
1ARM7系列
ARM微处理器2S系列具有如下特点:
①具有嵌入式ICE-RT逻辑,调试开发方便;
②最合适用于对价位和功耗要求较高;
③较低的功耗,适合对功耗要求较高的应用,如便携式产品;
④能够提供0.9MIPS/MHz的三级流水线结构;
⑤代码密度高并兼容16位的Thumb指令集;
⑥对操作系统的支持广泛,包括WindowsCE,Linux等;
⑦指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户产品的升级代换。
2ARM9系列
ARM9系列微处理器具有如下特点:
①五级整数流水线,指令执行效率更高;
②提供1.1MIPS/MHz的哈佛结构;
③支持32位ARM指令集和16位Thumb指令集;
④支持32位的高速AMBA总线接口;
⑤支持数据Cache和指令Cache,具有更高的指令和数据处理能力。
3ARM10E系列
ARM10E系列微处理器具有如下特点:
①支持DSP指令集,适合于需要高速数字信号处理的场合;
②六级整数流水线,指令执行效率更高;
③支持32位ARM指令集和16位Thumb指令集;
④支持32位的高速AMBA总线接口;
⑤支持VFP10浮点处理协处理器;
⑥全性能的MMU,支持WindowsCE,Linux等多种主流嵌入式操作系统;
⑦支持数据Cache和指令Cache,具有更高的指令和数据处理能力;
⑧内嵌并行读/写操作部件。
2.2ARM7TDMI
ARM7采用Newman结构,分为三级流水线(图2-1),空间统一的指令与数据Cache,平均功耗位0.6W/MNz,时钟速度为66MHz,每条指令平均执行1.9个时钟周期。
其中的ARM710,ARM720和ARM740为内带Cache的ARM核。
1fetchdecodeexecute
2Fetchdecodeexecute
3Fetchdecodeexecute
指令
时间
图2-1
2.2.1ARM7三级流水线介绍
①取指级:
完成程序存储器中指令的读取,并放入指令流水线中。
②译码级:
对指令进行译码,为下一周期准备数据路径需要的控制信号。
在这一级指令“占有”译码逻辑,而不“占有”数据路径。
③执行级:
指令“占有”数据路径,寄存器堆被读取。
操作数在桶式移位器中被移位,ALU产生相应的运算结果并回写到目的寄存器中,AUL结果根据指令需求更改状态寄存器的条件位。
2.2.2ARM7TDMI结构图及功能
ARM7TDMI结构框图如图2-2所示
扫描链0
Extern0扫描链2
Embedded
Extern1ICE
opc,r/w
mreq,trans处理
mas[31:
0]处理器核
D[31:
0]
扫描链1
Din[31:
0]
总线分路器JTAGTAP控制器
Dout[31:
0]
TCKTRSTTDO
TMSTDI
图2-2
ARM7TDMI-S处理器的主要模块有CUP内核、EmbeddedICE-RT宏单元、TAP控制器及扫描链。
EmbeddedICE逻辑提供对片内调试的支持。
对目标系统进行调试需要有一个主机来运行调试软件和EmbeddedICE协议转换器。
EmbeddedICE协议转换器将远程调试协议命令转换成所需要的JTAG数据,从而对目标系统下的ARM7TDMI内核进行访问。
ARM7DTMI-S中有两个JTAG类型的扫描链,一个JTAG类型的测试访问端口控制器(TAP)用来控制扫描链。
在ARM7DTMI-S处理器中两个扫描路径分别为扫描链1和扫描链2,用于实现调试和EmbeddedICE-RT编程,每个扫描链包含一个串行寄存器和一个多路开关。
对于输入单元,捕获阶段将输入内核的系统值复制到串行寄存器。
在移位时,该值串行输出。
在多路开关的控制下,输入单元提供给内核的值可以是系统输入或者是并行寄存器的值。
对于输出单元,捕获阶段将内核输出值放入串行寄存器。
在移位时,该串行移出输出。
单元提供给系统的值是内核的输出或者是串行寄存器的值。
对于扫描单元的所有控制信号都由TAP控制器内部产生,TAP控制器在动作由当前指令和TAP状态机的状态决定。
扫描链1用于调试器和ARM7DTMI-S内核之间的通信。
它对数据进行读取/写入,并将指令扫描到流水线。
SCANNTAP指令可用于选择扫描链1.扫描链顺序从DBGTD1到DBGTD0,ARM7DTMI-S处理器数据位0~31,接下来是第33位DBGBREAK扫描单元。
扫描链1的第33位有3种用途,在正常INTEST测试条件下,它能将一个已知的值扫描到DBGBREAK输入端:
在调试过程中,放入第33位的值决定ARM7TDMI-S内核在执行指令前是否于系统速度同步:
在ARM7TDMI-S内核进入调试状态后,被捕获和扫描的第33位值告诉调试器内核是从断点进入调试状态。
扫描链2提供对EmbeddedICE-RT寄存器的访问。
扫描链2必须通过SCAN_NTAP控制器指令选择,而且TAP控制器必须进入INTEST模式。
扫描链顺序从DBGTDI到DBGTDO
读/写,位寄存器地址位,bit4-bit0,然后是数据位bit0~bit31。
除扫描链外,调试结构还使用位于ARM7DTMI-S核内部的EmbeddedICE逻辑包含2个实现观察点寄存器和1个控制寄存器和状态寄存器。
这两个观察点寄存器或其中一个可编程为暂停ARM7DTMI-S核内部。
当编程到EmbeddedICE逻辑中的值于当前出现地址总线、数据总线和某些控制信号上的值匹配时,内核的运行将暂停,可以屏蔽任何位使其不会影响比较操作。
观察点寄存器可以配置为观察点(对于数据的访问)或断点(指令取指)。
第三章S3C44BOX下IIC总线简介
3.1IIC总线
IIC总线(InterICBUS)是Philips公司推出的双向两线串行通信标准。
由于它具有接口少、通信效率高等优点,现已得到广泛的应用[1~3]。
它除了可以进行简单的单主节点通信外,还可以应用在多主节点的通信系统中。
在多主节点通信系统中,如果两个或者更多的主节点同时启动数据传输,总线具有冲突检测和仲裁功能,保证通信正常进行并防止数据破坏。
现在许多微控制器(MCU)都具有I2C总线接口,能方便地进行I2C总线设计。
3.1.1S3C44BOXIIC总线接口的功能概述
IIC总线是一种半双工的多主设备串行总线,总线仅由串行数据线SDA(SerialDataLine)和串行时钟总线SCL(SerialClockLine)组成。
SDA和SCL都是双向线路,各通过一个电流源或上拉电阻连接到正的电源电压。
当总线空闲时这两条线路都是高电平,连接到总线的器件输出必须的漏极开路或集电极开路才能执行“线与”的功能。
IIC总线上数据的传输速率在标准模式下可以到达100kbps,在快速模式下可达到400kbps,在高速模式下可达到3.4Mbps。
其连接方式方式如图3-1所示。
SCL
SDA
微处理器存储器I/O扩展
主设备从设备从设备
图3-1
从图3-1中可看出,IIC总线支持两大类设备,分别是:
主设备,发起信号的设备,可以发起读操作也可以发起写操作,通常是带有处理能力的设备;从设备,被发起方的设备,可以回应主设备的读/写操作,通常是一些低速外围设备,如I/O扩展设备,EEPROM等。
不论是主设备还是从设备,当其中总线接收数据时都可以成为接收器,向总线发送数据时都被称为发送器。
IIC总线是一种支持多主设备的总线标准,所谓多主设备总线,即就是可以在总线上同时有多个主设备,不过这些主设备不能同时发起通信,当它们同时发起通信时会产生总线竞争,竞争的结果只有一个主设备可以或得总线的使用权,其他主设备必须等待。
IIC总线上的数据以字节形式发送,一次通信发送的字节数不受限制。
由于IIC总线协议简单而且只需要两根线作为物理连接,所以在嵌入式系统中有着相当广泛的应用,尤其是在连接低速外设上,最为经典的应用就是对EEPROM进行读/写。
3.1.2S3C44BOXIIC总线接口的功能作用概述
S3C44BOX处理器为用户进行应用设计提供了标准的IIC接口。
处理器通过专用串行数据总线和串行时钟总线,与总线上其他设备进行通信。
启动数据传送给IIC总线的主设备也负责终止数据传送。
S3C44BOX中的IIC使用了标准的仲裁过程。
S3C44BOXIIC总线控制器特性如下:
(1)基于中断操作模式的单通道IIC总线控制;
(2)串行,8位,双向数据传输;
(3)标准模式下100kbps,快速模式下400kbps
内部控制器逻辑框图如图3-2所示。
地址寄存器
比较器
IIC总线控制逻辑
SCL
IICCONIICSTAT4为预分
频器
移位寄存器SDA
MCLK
移位寄存器
(IICDS)
数据总线
图3-2S3C44BOXIIC总线模块框图
当IIC总线空闲时,SDA和SCL都应该处于高电平。
SDA有高电平到低电平的转换能够产生启动条件;当SCL在高电平保持稳定时,SDA有低电平到高电平的转换能够产生停止条件。
启动和停止条件一般由主设备产生。
启动条件产生后,被放到总线上的第一数据字节的7位地址能决定总线主设备所选择的从设备,第8位决定传送的方向(读或写)。
放到(SDA)线上的每一个数据字节都是8位。
在总线传送操作中被发送或者接收的字节是无限的,数据总是从最高位MSB开始发送的,并且在每个数据之后紧跟一个应答位。
①数据传送格式
放到(SDA)线上的每一个字节长度都是8位。
每次传送被发送的字节数没有限制。
启动到位后第一个字节应该是从设备地址。
此地址由主设备发送,用以通知相应的从设备。
此地址字节中高7位位设备地址,最低1位为传送方向(读或写)。
如果第8位为0,表面是写操作:
如果第8位为1说明是读数据。
每发送一个字节后都应该紧跟一个应答位(ACK)。
如图3-3所示。
带有7位地址的写模式帧
S7位从设备地址R/WA1字节的数据帧AP
数据传输
“0”写数据+应答
带有10位地址的写模式帧
S7位从设备地址R/WA第2字节的从设备地址A1字节的数据帧AP
11110XX“0”写
S7位从设备地址R/WA1字节的数据AP
带有7位地址的读模式帧数据传输
“1”读数据+应答
带有10位地址的读模式帧
S7位从设备地址R/WA第2个字节的从ArS7位从设备地址R/WA1字节的数据AP
设备地址
11110XX11110XX数据传输
“1”读“1”读数据+应答
注:
1S:
开始;rS:
再次开始;A:
应答;p:
停止
2:
主机到从机:
从机到主机
图3-3数据传输格式
②起始位和停止位
起始位和停止位总是由主设备产生。
起始位能够在SDA线上传送一个字节的连续数据,停止位能够结束数据的传送。
起始位是在SCL为高电平时SDA线上发生由高电平到低电平的下降沿变化,停止位是当SCL是高电平时SDA线上由低电平到高电平的转变,如图3-4所示。
SDA
SCL
起始位停止位
图3-4IIC总线的起始位和停止位
③数据稳定条件
在数据传输过程中SCL为高电平时SDA上的数据保持稳定,SCL为低电平时允许SDA变化。
若SCL处于高电平时,SDA上产生下降沿,则认为是起始位,SDA的上升沿认为是停止位,如图3-5所示。
允许数据改变
SDA
SCL
数据稳定数据稳定
图3-5IIC总线上的数据稳定态
3.2S3C44BOX下IIC总线寄存器描述
①多主IIC总线控制寄存器IICCON(如表3-1)
IICCON地址:
0X01D60000访问方式:
R/W初始值:
0000XXXX
位
位名称
描述
[7]
Acknowledge
Enable
应答允许位:
1=允许应答信号产生0=禁止应答信号产生
在发送模式,IICSDA在ACK时释放;
在接收模式,IICSDA在ACK时为低电平
[6]
TxClockSource
Selection
IIC总线的源时钟预分频器值选择位;
0为IICCLK=fMCLK/161为IICCLK=fMCLK/512
[5]
Tx/RxInterrupt
Enable
IIC总线Tx/Rx中断使能/禁止位:
0=禁止中断1=允许中断
[4]
Interrupt
PendingFlag
IIC总线Tx/Rx中断挂起标志:
读时,没有中断
0=
写时,清除挂起条件和恢复操作
读时,中断挂起
1=
写时,无操作N/A
写1是不可能的,当读该位为1时,IICSCL为低,IIC停止,为了恢复操作清除该位。
[3:
0]
TransmitClock
Value
IIC总线发送时钟预分频值,发送时钟频率是由4位预分频值决定的。
公式:
TxClock=IICCLK/(IICCON[3:
0]+1)
图表3-1IIC总线控制寄存器IICCON
②多主IIC总线控制/寄存器IICSTAT(表3-2)
IICSTAT地址:
0X01D6004访问方式:
R/W初始值:
0000000
位
位名称
描述
[7:
6]
ModeSelection
IIC总线主/从Tx/Rx模式选择位:
00=从接受模式
11=从发送模式10=主接受模式
11=主发送模式
[5]
STARTSTOPCondition
IIC总线忙信号状态位
读时,IIC总线不忙
0=
写时,IIC总线STOP信号产生
读时,IIC总线忙
1=
写时,IIC总线START信号产生
[4]
SerialOutput
Enable
IIC总线数据输出使能/禁止位:
0=禁止Rx/Tx
1=使能Rx/Tx
[3]
Arbitration
StatusFlag
IIC总线仲裁过程状态标志位:
0=总线仲裁成功
1=总线仲裁失败
[2]
Address-as-Slava
StatusFlag
IIC总线从地址状态标志位:
0=检测到START/STOP清除
1=接收到的从地址与IICADD的值匹配
[1]
AddressZero
StatusFlag
IIC总线地址为0状态:
0=检测到START/STOP清除
1=接收到的地址是00000000B
[0]
Last-Rwceived
BitStatusFlag
IIC总线上一次接收到的状态标志位:
0=最后接收位是0(ACK收到)
1=最后接收位是1(ACK没收到)
图表3-2IIC总线控制/寄存器IICSTAT
③多主IIC总线地址寄存器ICADD(图表3-3)
IICADD地址:
0X01D60008访问方式:
R/W初始值:
xxxxxxxx
位
位名称
描述
[7:
0]
从地址
当IICSTAT中的输出使能位为0时,IICADD为写允许IICADD是值可在任何时候被读,而不管输出使能位的设置如何从地址=[7:
1],非映射位=[0]
图表3-3IIC总线地址寄存器IICADD
③多主IIC总线发送/接收数据转移寄存器IICDS(图表3-4)
IICDS地址:
0X01D6000C访问方式:
R/W初始值:
xxxxxxxx
位
位名称
描述
[7:
0]
DATAShift
当IICSTAT中的串行输出使能位(SerialOutput
Enable)=1时,IICDS为写使能,IICDS是值可以任何时候被读
图表3-4IIC总线地址寄
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于ARM的嵌入式芯片 S3C44BOX下的IIC通信 基于 ARM 嵌入式 芯片 S3C44BOX IIC 通信