知识大全 I2C总线驱动在嵌入式系统中的两种实现
Posted 寄存器
篇首语:人生难得几回搏,此时不搏待何时。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 I2C总线驱动在嵌入式系统中的两种实现相关的知识,希望对你有一定的参考价值。
I2C总线驱动在嵌入式系统中的两种实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
引 言
I C总线(Inter IC Bus)是一种通用的串行总线 是用于IC器件之间连接的二线制总线 他通过串行数据线(Serial Data Lines SDL)及串行时钟线(Serial ClockLine SCL)两线在连接到总线上的器件之间传送信息 并根据地址识别每个器件 一个或多个微控制器以及外围器件可以通过I C总线接口非常方便的连接在一起构成系统 这种总线结构的连线和连接引脚少 器件间总线简单 结构紧凑 因此其构成系统的成本较低 并且在总线上增加器件不会影响系统的正常工作 所有的I C器件共用一套总线 因此其系统修改和可扩展性好 即使有不同时钟速度的器件连接到总线上 时间同步机制也能够很方便地确定总线时钟 因此在嵌入式系统中得到了广泛的应用 I C总线原理
. I C工作原理
I C总线是由数据线SDA和时钟线SCL构成的串行总线 可发送和接收数据 每个连接到总线的器件都可以通过惟一的地址与主机通讯 主机可以作为主机发送器或主机接收器 他是一个真正的多主机总线 如果两个或更多主机同时初始化 数据传输可以通过冲突检测和仲裁防止数据被破坏 串行的 位双向数据传输位速率在标准模式下可达 kb/s 快速模式下可达 kb/s 高速模式下可达 Mb/s 连接到相同总线的IC数量只受到总线的最大电容 pF限制
I C总线在传送数据过程中共有 种特殊的电平变换情况 他们分别是 起始(start) 停止(stop)和响应(aek)
当SCL为高电平时 SDA由高电平向低电平跳变 这个表示起始条件 当SCL是高电平时 SDA线由低电平向高电平跳变表示停止条件 起始和停止条件一般由主机产生 总线在起始条件后被认为处于忙的状态 在停止条件的某段时间后总线被认为再次处于空闲状态
响应信号是指从机在接收到 b数据后 向主机发出特定的低电平脉冲 表示已收到数据 在响应的时钟脉冲期间 从机必须将SDA线拉低使他在这个时钟脉冲的高电平期间保持稳定的低电平 主机收到应答信号后 根据实际情况做出是否继续传递信号的判断 若未收到应答信号 则判断为从机出现故障 操作时序
I C总线运用主/从双向通讯 主机和从机都可以工作于接收和发送状态 总线必须由主机(通常为微控制器)控制 主机产生串行时钟(SCL)控制总线的传输方向 并产生起始和停止条件 SDA线上的数据状态仅在SCL为低电平的期间才能改变 SCL为高电平的期间 SDA状态的改变被用来表示起始和停止条件 具体时序见图
嵌入式系统中的I C驱动的两种实现
系统自带I C寄存器的实现
下面以arm S C B为例 给出基于寄存器方式的I C驱动实现 S C B内含一个I C总线主控器 可方便地与各种带有I C接口的器件相连 I C总线控制器有 个特殊功能寄存器 一个控制状态寄存器(I CON) 一个预分频寄存器(I CPS)和一个移位缓冲寄存器(I CBUF) 通过配置这些寄存器 可实现正确的I C数据传输时序 下面分别给出读 写实现的实例 读操作
通过对控制状态寄存器(I CC()N)写入OxlO发送启动码初始化串行I C总线 然后总线控制器发送 位的从设备地址并通过移位缓冲寄存器发送读/写控制位 接收器则在主控器的SCL脉冲期间通过将SDA线从高电平下拉到低电平作为应答信号
写数据的操作 先设置控制状态寄存器的BF位( x ) 然后写入数据到移位缓冲寄存器 移位缓冲寄存器无论是被读还是写 BF位均会自动清零 若要进行连续的读/写操作 必须设置控制状态寄存器的ACK位( x )
读数据的操作 在设置控制状态寄存器的BF位以后 可以进行读数据的操作 当读/写完最后一个字节时 可对ACK位进行复位通知发送器/接收器读数据操作结束
在读/写操作完成以后 可通过对I CCON写入 x 生成结束码
以GPIO端口模拟I C实现
此方法是直接用arm S C 的GPIO(GeneralPurpose Input/Output)引脚模拟I C总线的时序来实现数据传输 S C B提供了 个可编程的通用I/O端口 用户可将每个端口配置为输入模式 输出模式或特殊功能模式 由片内的特殊功能寄存器IOPMOD和IOPCON控制
控制I/O口的特殊功能寄存器一共有 个 IOP MOD I PCON和IOPDATA I/O口模式寄存器(IOP MOD)用于配置P ~P 的输入输出状态 I/O口控制寄存器IOPCON用于配置端口P ~P 的特殊功能 当这些端口用作特殊功能(如外部中断请求 外部中断请求应答 外部DMA请求或应答 定时器溢出)时 其工作模式由 PCON寄存器控制 而不再由IOPMOD寄存器 I/O口数据寄存器(IOPDATA)当配置为输入模式时 读取I/O口数据寄存器IOPDATA的每一位对应输入状态 当配置为输出模式时 写每一位对应输出状态 位[ O]对应于 个I/ 引脚P ~P
下面用GPIO的pin[O][ ]脚进行I C模拟 其中低位为SDA 高位为SCL 首先给出一些便于操作的宏定义
应用实例
为arm外挂PCF 实现实时时钟控制 PCF 是PHILIPS公司生产的具有I C接口的低功耗CM()S实时时钟/日历芯片 其最大总线速度为 kb/s 每次读写数据后 其内嵌的字地址寄存器器会自动产生增量 下面用模拟实现PCF 的I C实时时钟芯片的操作 有字节写/读两种状态 程序中从地址的读地址为 A H 写地址为 A H
首先使能I C总线 然后对I C总线进行开始操作 就绪之后 依次写人器件地址(即 xA ) 写入寄存器地址 再写人所设寄存器值 控制/状态寄存器 为 控制/状态寄存器 为 秒寄存器为 分钟寄存器 小时寄存器为 日寄存器为 星期寄存器为 月/世纪寄存器为 年寄存器为 (即 年 月 日 点 分 秒) 当程序运行一段时间( 分钟)后 依次读取寄存器 得到时间为 年 月 日 点OO分 秒
总 结
cha138/Article/program/qrs/201312/30115相关参考
更换TYJL-II型计算机联锁系统STD总线板及I/O总线板应注意什么事项?如何更换采集板及驱动板?
更换STD总线板及I/O总线板必须先关掉电源,而更换采集板、驱动板则不必关电源,可带电插拔。更换电路板时还需注意不要碰触电路板各集成块管脚和引线,以防静电损坏集成块。 更换1640(I/O)板时,
更换TYJL-II型计算机联锁系统STD总线板及I/O总线板应注意什么事项?如何更换采集板及驱动板?
更换STD总线板及I/O总线板必须先关掉电源,而更换采集板、驱动板则不必关电源,可带电插拔。更换电路板时还需注意不要碰触电路板各集成块管脚和引线,以防静电损坏集成块。 更换1640(I/O)板时,
知识大全 嵌入式驱动开发和用单片机写一个程序驱动一个器件和芯片是不是类似的,求解决
嵌入式驱动开发和用单片机写一个程序驱动一个器件和芯片是不是类似的,求解决?我以前学校51和AVR,现在学习ARM9,和你分享一下我的观点,单片机如51和AVR之类,是对硬件的操作,不能跑操作系统,能力
作者LucasJellemaOracleACE和Oracle融合中间件区域总监 通过一个简单的示例了解如何配置ESB以发布企业事件 年月发表 在面向服务的体系结构(SOA)领域一个比较重要的
1、如果在交流电源和驱动器直流总线(如变压器)之间没有隔离的话,不要将直流总线的非隔离端口或非隔离信号的地接大地,这可能会导致设备损坏和人员伤害。因为交流的公共电压并不是对大地的,在直流总线地和大
1、如果在交流电源和驱动器直流总线(如变压器)之间没有隔离的话,不要将直流总线的非隔离端口或非隔离信号的地接大地,这可能会导致设备损坏和人员伤害。因为交流的公共电压并不是对大地的,在直流总线地和大
JSP设计模式中的两种常见模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果你经常去S
在上网的时候经常会在一些网页上看到当前的日期如今天是×年×月×日星期×等字样为了显示系统当前的日期一般采用脚本语言VBScript或javascript两种语言有其各自的特点特别在网页教学中通过这两种
在上网的时候经常会在一些网页上看到当前的日期如今天是×年×月×日星期×等字样为了显示系统当前的日期一般采用脚本语言VBScript或JavaScript两种语言有其各自的特点特别在网页教学中通过这
连续考了的两年任务驱动型题型高考作文怎么写IthasbeenestimatedthatsmokershavemadeuphalfofthepopulationinChina.Andthesmokers