版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章 I2C总线模块 何宾 2011.12本章内容 本章主要是介绍PSoC3内的I2C总线模块,其内容主要包括:I2C总线模块概述、I2C总线实现原理、I2C总线寄存器及操作、I2C总线操作模式和I2C模块通信的实现。 I2C总线模块是PSoC3所提供的一个重要功能单元,通过本章内容的学习,不仅能了解和掌握I2C总线模块的工作原理,还能掌握使用PSoC3实现I2C总线模块通信的方法。I2C总线模块-I2C总线模块概述 I2C外设提供了同步两线接口用来与PSoC设备进行连接,I2C总线与Philip的I2C规范V2.1版本兼容。额外的I2C接口能通过使用UDB进行例化。 图 I2C总线模块图I
2、2C总线模块-I2C总线模块概述典型的I2C总线结构 当在单板上有多个设备或者小的系统构成一个网络时,系统能被设计使用一个单主设备和多个从设备,多个主设备,或者多个主和从设备的连接。I2C总线模块-I2C总线模块概述 为了减少CPU对I2C总线操作的干预,I2C外设提供了特定支持。这个特定支持用于状态检测和帧比特位的生成。 I2C操作模式有从模式,单主模式或多主模式。从模式下,总是监听开始条件,用于开始发送或接收数据。在主模式下,产生开始和停止条件,并初始化交易。多主模 式提供时钟同步和仲裁允许总线上有多个主设备存在。如果 使用主模式,不能使用从模式,模块不产生中断。 I2C接口通过DSI布线
3、允许直接连接到任意的GPIO或者SIO引脚。I2C总线模块-I2C总线模块概述 I2C提供了检测7位硬件地址的功能,而不需要CPU的干预。当I2C的7位地址匹配时,能从休眠模式中唤醒PSoC。如果要求唤醒模式,那么I2C连接被限制在两个特殊的SIO引脚上。I2C总线模块-I2C总线模块概述 PSoC的I2C接口主要特性包含:主和从,发送器和接收器操作;用于低CPU开销的字节处理;中断或者轮询CPU接口;支持总线速度最高为1Mbps(3.4Mbps在UDB内);7或10位寻址(10位寻址要求固件支持);支持系统管理总线(System Management Bus,SMBus)操作(通过固件支持-
4、UDB内支持SMBus,这种总线基于I2C总线);7位硬件地址比较;地址匹配从低功耗模式唤醒。I2C总线模块-I2C总线实现原理 I2C总线由Philips半导体公司(现在为NXP)所提供的一种简单的方法,允许多个设备在一个总线上直接的互相通信。I2C总线特点包括:只使用两根线:(1)串行数据(SDA);(2)串行时钟(SCL);串行的8位数据传输,标准模式下最大速度为100kbps;快速模式下最大速度400kbps;快速加模式下最大速度1Mbps;高速模式下最大速度3.4Mbps。I2C总线模块-I2C总线实现原理 使用集电极开路或者开漏级,通过上拉电阻将设备连接到总线上(线“与”功能)。每
5、个连接到总线的设备有独一无二的地址。存在简单的主/从关系;支持多主模式,当两个设备同时初始化数据传输时,使用冲突检测和仲裁。I2C总线模块-I2C总线实现原理 如下图所示,给出了一个典型的I2C总线的传输过程。该过程主要包含以下几步: I2C总线传输I2C总线模块-I2C总线实现原理 1. 主设备控制SCL线,产生一个开始(Start)条件,后面跟着数据字节。数据字节包含7个从设备地址和一个读/写(RW)位。该位设置相对于主设备的数据传输方向。高为读,低为写。 2从设备识别它的地址,并且在第9位的时间间隔内,通过将数据线拉低产生应答(ACK)字节。如果从设备没有用ACK响应第1个字节,主设备产
6、生停止(Stop)条件来终止数据的传输。一个重复的启动条件将用于重新的尝试传输;I2C总线模块-I2C总线实现原理 3主设备发送或接收(取决RW)中间的字节。 4当数据传输结束时,主设备产生停止条件。 当接收设备需要时间将接收的数据存储或者准备要发送的数据时,从设备可以将SCL线拉低,这样就使得主设备进入等待状态。注意有些主设备不支持这种等待方式。I2C总线模块-I2C总线寄存器及操作 I2C寄存器及功能寄存器功能I2C_CFG配置-基本的操作模式,过采样率和中断选择I2C_XCFG配置-配置扩展特性I2C_CLK_DIV1I2C_CLK_DIV2时钟分频-设置波特率I2C_CSR控制/状态-
7、用来控制数据字节流,和在传输过程中跟踪总线状态I2C_MCSR主模式控制/状态-实现I2C组帧控制和提供总线状态I2C_ADR从设备地址-用于硬件识别从设备地址,保持7位从设备地址I2C_D数据-提供对数据移位寄存器的读/写访问I2C总线模块-I2C总线寄存器及操作 I2C总线接口的操作步骤包括:1)设置I2C_XCFG的第7位,打开I2C接口;2)按照下表,布线SDA和SCL到期望的引脚对;3)按照下表,设置寄存器I2C_CFG的第2位和I2C_CLK_DIV1和I2C_CLK_DIV2寄存器; 4)使能期望的操作模式。 注:所使用的端口引脚必须配置成“开漏,驱动低”模式(模式4)。SIO引
8、脚更适合这种应用,这是因为SIO引脚有高电流吸收能力和过电压容限。 引脚对端口引脚寄存器设置I2C0P124,5I2C_XCFG6=1,I2C_XCFG7=0I2C1P120,1I2C_XCFG6=1,I2C_XCFG7=1任何其他GPIO/SIO对可选择I2C_XCFG6=0,根据选择的引脚对设置其它DSI和GPIO寄存器I2C总线模块-I2C总线寄存器及操作 波特率的设置波特率=总线时钟频率/(时钟分频因子*过采样率)I2C总线模块- I2C总线操作模式 I2C元件支持I2C从,主,多主和多主/从配置模式,下面将介绍这些操作模式。 当元件配置为多主/从配置时,在从和多主直接的切换是自动完成
9、的。 通常,设备在从模式,直到一个主API函数调用产生开始序列。硬件然后又处于从模式,直到产生停止序列为止,即此时转为主模式,随后又进入从模式状态。I2C总线模块- I2C总线操作模式 由于I2C硬件被中断所驱动,因此要求使能全局中断。即使这个元件要求中断,设计者不需要添加任何代码到中断服务程序中(ISR)。模块独立于代码而服务所有的中断。 为这个接口(在应用程序和I2C主设备之间)分配的存储器缓冲区是非常简单的双口存储器。I2C总线模块- I2C总线操作模式I2C接口可以产生中断的三个条件包括:1字节传输完毕;2检测到I2C总线开始和停止条件;3检测到I2C总线错误;I2C总线模块- I2C
10、总线操作模式(从模式) 从操作接口有存储器内的两个缓冲区构成。下图给出了从缓冲区的结构。 从缓冲区的结构I2C总线模块- I2C总线操作模式(从模式) 一个是用于数据从主设备写道从设备,另一个是保留着被主设备读取的数据。注意这里的读写是从I2C主设备的角度定义的。I2C从设备的读和写缓冲区通过下面的命令设置:void I2C_SlaveInitReadBuf(uint8 * rdBuf, uint8 bufSize) ;void I2C_SlaveInitWriteBuf(uint8 * wrBuf, uint8 bufSize) ;I2C总线模块- I2C总线操作模式(从模式) 这些命令不分
11、配存储器,只是复制数组指针和大小到内部的元件变量。由于元件不能自动地生成缓冲区,所以用于缓冲区的数组必须被程序初始化。可以使用相同的缓冲区用于读写缓冲区,但是必须正确的管理数据。I2C总线模块- I2C总线操作模式(从模式) 上面函数的bufSize小于或者等于实际的数组大小,但不能大于指向rdBuf或者wrBuf的可用的存储空间。 任何时候,传输的字节可以通过调用I2C_SlaveGetReadBufSize或者I2C_SlaveGetWrite BufSize函数得到。 读写超过缓冲区大小将引起溢出错误。错误将在从状态字节中进行设置,可以调用I2C_SlaveStatus得到。I2C总线模
12、块- I2C总线操作模式(从模式)复位指针到数组的开始,可以调用下面的命令:void I2C_SlaveClearReadBuf(void) void I2C_SlaveClearWriteBuf(void) I2C多次的读或者写缓冲区,将增加数组的索引值,直到使用清除命令。下图给出了执行两个写交易后的情况。I2C总线模块- I2C总线操作模式(从模式) 两次写交易后的情况I2C总线模块- I2C总线操作模式(从模式) 当第二次交易的6个字节写完后,从设备给出NAK信号,表示到达缓冲区的结尾。如果主机继续写,则后续交易被放弃,产生NAK信号。 读或写缓冲区有四个状态位来描述信号传输的完成,传输
13、正在进行,缓冲区溢出,传输错误。当传输开始时,设置忙标志。当结束时,设置传输完成标志,同时清除忙标志。 I2C总线模块- I2C总线操作模式(从模式)下面给出这种操作模式下的一段代码:uint8 wrBuf10; uint8 userArray10; uint8 byteCnt; I2C_SlaveInitWriteBuf(uint8 *) wrBuf, 10); /* Wait for I2C master to complete a write */ for(;1;) /* loop forever */ /* Wait for I2C master to complete a write
14、 */ if(I2C_SlaveStatus( ) & I2C_SSTAT_RD_CMPT ) byteCnt = I2C_SlaveGetWriteBufSize( ); I2C_SlaveClearReadStatus( ); For(i=0; I byteCnt; i+) userArrayi = wrBufi; /* Transfer data */ I2C_SlaveClearWriteBuf( ); I2C总线模块- I2C总线操作模式(主/多主操作模式 ) 主和多主操作是类似的,但有两点例外。 1)当操作在多主模式下,总线总是检查是否处于忙状态,因为其它主设备可能正在和其它从设备
15、通信。在这种情况下,程序必须等待直到当前的操作完成,下一个开始交易启动以前。 2)当操作在多主模式下,可以在同一时刻两个主设备同时启动。如果这种情况发生的话,两个主设备中的一个将要放开仲裁权。每个字节传输后,必须检查该条件。元件将自动检查这个条件,如果丢失仲裁权,则响应这个错误。I2C总线模块- I2C总线操作模式(主/多主操作模式 ) 当工作在I2C主设备模式下,有两个操作选项:manual和automatic。在Automatic模式,创建一个缓冲区来保持整个传输,在写操作下,缓冲区将重新用将要发送的数据进行填充。如果数据从从设备中读出,分配需要最小包大小的缓冲。 在自动模式下,写一个数组
16、字节到从设备,使用下面的函数:uint8 I2C_MasterWriteBuf (uint8 SlaveAddr, uint8 * wrData, uint8 cnt, uint8 mode) 其中:SlaveAddr是从设备7位的地址变量,范围0-127。 I2C总线模块- I2C总线操作模式(主/多主操作模式 ) 在自动模式下,从从设备读一个数组的字节,使用下面的函数:uint8 I2C_MasterReadBuf (uint8 SlaveAddr, uint8 * wrData, uint8 cnt, uint8 mode) 这两个函数均返回状态值。 I2C总线模块- I2C总线操作模式
17、(主/多主操作模式 )下面给出了写从设备的一段代码: I2C_MasterClearWriteStatus(); /* Clear any previous status */ I2C_MasterWriteBuf(4, (uint8 *) wrData, 10, PLETE_XFER); For(;1;) if(I2C_MasterClearWriteStatus() & I2C_MSTAT_CMPLT ) /* Transfer complete */ break; I2C总线模块- I2C总线操作模式(主/多主操作模式 ) 元件也可以工作在手工模式下,在这种模式下使用各自的命令完成写操作
18、的每一部分。下面给出了在手工模式下写从设备的代码: I2C_MasterClearWriteStatus(); status = I2C_MasterSendStart(4, I2C_WRITE_XFER_MODE); if(status = I2C_MSTAT_CMPLT) /* Check if transfer completed without errors */ /* Send array of 5 bytes */ for(i=0; i5; i+) status = I2C_MasterWriteByte(userArrayi); if(status != I2C_MSTAT_CM
19、PLT) break; I2C_MasterSendStop(); /* Send Stop */ I2C总线模块- I2C总线操作模式(主/多主操作模式 ) 手工读操作和写操作是类似的,除了最后一个字节需要被NAK。下面给出了手工模式下的读从设备的操作。 I2C_MasterClearWriteStatus(); status = I2C_MasterSendStart(4, I2C_READ_XFER_MODE); if(status = I2C_MSTAT_CMPLT) /* Check if transfer completed without errors */ /* Read ar
20、ray of 5 bytes */ for(i=0; i5; i+) status = I2C_MasterWriteByte(userArrayi); if(i 所有程序-Cypress-PSoC Creator 2.0-PsoC Creator 2.0。打开PSoC Creator软件; 2在PSoC Creator 2.0软件的主界面下,选择File-New-Project.; 3在New Project窗口,选择Empty PSoC3 Design模板,并将工程命命名为I2C。选择工程保存路径,点击“OK”按钮; I2C模块通信的实现-添加并配置I2C主模块 下面给出添加并配置I2C主
21、模块的步骤,主要步骤包括: 1拖动并且放置I2C主模块元件到原理图内(Components Catalog-Communcation- I2C-I2C Master(Fixed Function)。 2双击理图内的I2C主模块,打开配置窗口,如图9.6,I2C主模块的参数配置如下: Name:I2C_MMode:MasterData Rate:100Implementation: Fixed Function;I2C模块通信的实现-添加并配置I2C主模块图9.6 I2C主模块配置界面3点击“OK”按钮,关闭配置界面。I2C模块通信的实现-添加并配置I2C从模块 1拖动并且放置I2C从模块元件到
22、原理图内(Components Catalog-Communcation- I2C-I2C Slave(UDB)。 2双击理图内的I2C从模块,打开配置窗口,如图9.7,I2C从模块的参数配置如下:Name:I2C_SMode: SlaveSlave Address:4Implementation: UDBAddress Decode: HardwareUDB Clock Source: External Clock其它按照默认参数配置I2C模块通信的实现-添加并配置I2C从模块图9.7 I2C从模块配置界面3点击“OK”按钮,关闭配置界面。 I2C模块通信的实现-添加并配置数字输入引脚 1拖
23、动并且放置两个数字输入引脚元件到原理图内(Components Catalog-Port and Pins- Digital Input Pin。 2双击Pin_1,打开配置窗口,如图9.8,Pin_1数字输入引脚参数配置如下:Name:Pin_WriteSwitch不选中HW Connection;General标签下:Drive Mode:Resistive Pull UpInitial State:High(1) Input标签下:Interrupt:Falling Edge图9.8 数字输入引脚配置界面I2C模块通信的实现-添加并配置数字输入引脚 3双击Pin_2,打开配置窗口,Pin_2数字输入引脚参数配置和Pin_1配置基本一样,只是名字为:Name:Pin_ReadSwitchI2C模块通信的实现-添加并配置中断控制器 1拖动并且放置两个中断控制器元件到原理图内(Components Catalog-System- Interrupt。 2双击isr_1,打开配置窗口,如图9.9,isr_1中断控制器参数配置如下: Name:isr_WriteSwitchInterruptType:DRIVED 3双击isr_2,打开配置窗口, isr_2中断控制器参数配置如下:Name:isr_ReadSwi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年行政权力清单动态调整题库
- 2026年市直部门应急值班题库
- 2026年疯狂动物城英语听力理解练习题
- 2026年英语记叙文写作技巧及解析
- 2026年税务行业专业能力测试与解析
- 2026年自然科学知识竞赛参考题库
- 2026年物流与供应链管理知识考试题
- 二年级数学上册100道口算题大全(全册20份)(六)
- 三创赛实施方案
- 养心养生工作方案范文
- 2026年云南省文山州初中学业水平质量监测物理试题卷(含答案)
- 河北省石家庄市2026届高三二模数学试卷(含答案)
- 2026中科国江(北京)控股集团有限公司郑州分公司招聘30人农业笔试备考试题及答案解析
- (2025年)脑卒中防治相关知识测试题库含答案(完整版)
- 2026年服装制版师中级理论知识考核试卷及完整答案详解【考点梳理】
- T∕CPCPA 0017-2026 托育机构婴幼儿回应性照护服务规范
- 湖北省武汉市南湖区重点中学2026届初三第三次大联考语文试题含解析
- 3.12.2024新苏教版小学科学三年级下册第三单元第12课《石头上的植物》同步课件
- 智能控制 第6版 课件 第2章 专家系统与专家控制
- 2026年1月浙江省高考(首考)历史试题(含答案)
- 类器官科普教学课件
评论
0/150
提交评论