I2C总线学习—查缺补漏—S3C2440的I2C控制器
学习了IIC总线协议的理论部分,觉得应该学习具体操作2440的IIC控制器,毕竟最终都是为了学习S3C2440,所以就把这一部分补上。 S3C2440的I2C接口有四种工作模式:主机发送器、主机接收器、从机发送器、从机接收机。其内部结构如下图所示。
从上图可以看出,S3C2440提供4个寄存器来完成所有的IIC操作。SDA线上的数据从IICDS寄存器经过移位寄存器发出,或通过移位寄存器传入IICDS寄存器;IICADD寄存器中保存S3C2440当做从机时的地址;IICCON、IICSTAT两个寄存器用来控制或标识各种状态,比如选择工作工作模式,发出S信号、P信号,决定是否发出ACK信号,检测是否接收到ACK信号。下面详细接收各寄存器的用法。
IICCON寄存器IIC-Bus control register
注意事项:
- IIC中断发生在以下三种情况:当发出地址信息或接收到一个从机地址并吻合时,当总线总裁失败时,当发送/接收完一个字节的数据(包括响应位)时。当发出地址信息或接收到一个从机地址并吻合时产生中断,在中断处理函数中要准备发送或者接收数据,即读取或设备IICDS寄存器,或者发出P信号。当总线总裁失败时产生中断,在中断处理函数中决定时候延时后再次竞争总线等。当发送/接收完一个字节的数据(包括响应位)时产生中断,在中断处理函数中要准备下次要发送或者接收数据,即读取或设备IICDS寄存器,或者发出P信号。
- 基于SDA、SCL线上时间特性的考虑,要发送数据时,先将数据写入IICDS寄存器,然后再清除中断。清除中断,即向IICCON[4]写入0,也就是将SCL线拉高,此时产生一个上升沿,将移位寄存器中的数据发送到SDA线。至于先将数据写入IICDS寄存器,然后再清除中断,可能是数据稳定需要一个时间吧。在清除中断前要数据保持问的那个。
- 如果IICCON[5]==0,IICCON[4]将不能正常工作。所以,即使不使用IIC中断,也要将IICCON[5]设为1。
IICSTAT寄存器
IICADD寄存器
用到IICADD寄存器的位[7:1],表示从机地址。IICADD寄存器在串行输出使能位IICSTAT[4]为0时,才可以写入;在任何时候都可以读出。IICSTAT[4]为0时,禁止接收/发送功能,即此时SCL线被拉低。
IICDS寄存器
用到IICDS寄存器的位[7:0],其中保存的是要发送或已经接收到的数据。IICDS寄存器在串行输出使能位IICSTAT[4]为1时才可以写入;在任何时候都可以读出。IICSTAT[4]为1时,使能接收/发送功能,也就是释放了SCL线。
分享到:
相关推荐
Linux环境下I2C总线通信方式研究及应用,王旭阳,李文生,I2C总线是飞利浦公司开发的一种高性能串行总线。本文介绍了I2C总线的基本工作原理和通信方式,分析了在Linux内核中I2C总线驱动程序结�
基于S3C2440的IIC接口操作,首先将数据写到AT24C02中,然后读出所写入的数据并通过串口发送到PC上。
s3c44b0裸机程序 -I2C总线的实现
本手册将介绍 S3C2440A 集成的以下片上功能: ● 1.2V内核供电, 1.8V/2.5V/3.3V储存器供电, 3.3V外部I/O供电,具备16KB的指令缓存和16KB的数据缓存和MMU 的微处理器 ● 外部存储控制器(SDRAM 控制和片选逻辑) ● ...
s3c2440裸机at2402程序 I2C总线通信 I2C总线进行读写操作
关于S3C2440的一个I2C总线驱动,已经实验证明了的,其中包括驱动程序及其测试应用程序(EVC)
S3C2440中文手册.PDF 1.2V 内核供电, 1.8V/2.5V/3.3V 储存器供电, 3.3V 外部I/O 供电,具备16KB 的指令缓存和16KB 的数据缓存和MMU 的微处理器 ● 外部存储控制器(SDRAM 控制和片选逻辑) ● LCD 控制器(最大支持...
这些功能函数可用于配置ESP32的I2C总线,并进行与I2C设备的通信。 适用范围: 开发者希望在ESP32项目中使用硬件I2C接口进行通信。 需要实现对I2C设备的初始化、读取和发送功能。 希望利用ESP-IDF提供的API函数来...
此用户手册描述的是三星公司的16/32 位精简指令集(RISC)微处理器S3C2440A。三星公司的S3C2440A 为手持设备和普通应用提供了低功耗和高性能的小型芯片微控制器的解决方案。为了降低整体系统成本,S3C2440A 还提供了...
S3C2450 数据手册 与 电路设计方案指南 S3C2450 采用ARM926EJ 内核,主频达到533MHz; 双总线架构,一路用于内存总线、一路用于Flash总线; DDRII内存和DDR内存控制器;...内部LCD、I2C、Camera等控制器。
在此, 通过对微控制器ARM9 S3C2440 和嵌入式实时操作系统VxWorks中的多媒体组件WindML体系结构进行研究, 给出了WindML下设计S3C2440 LCD驱动程序和基于I2C总线的键盘控制芯片ZLG7290设计键盘驱动程序的方法, 完成了...
S3C2440A采用ARM920T内核,集成如下片上功能: ● 1.2V内核,1.8V/2.5V/3.3V储存器,3.3V扩展I/O,16KB指令Cache(I-Cache)/16KB数据Cache(D-Cache) ● 外部储存控制器(SDRAM控制盒片选逻辑) ● 集成LCD专用...
S3C44B0X I2S总线接口功能及应用开发 I2S(Inter—IC Sound)总线是飞利浦公司为数字音频 设备之间的音频数据传输而制定的一种总线标准,该总 线专责于音频设备之间的数据传输,广泛应用于各种多 媒体系统。
S3C2440A采用ARM920T内核,集成如下片上功能: ● 1.2V内核,1.8V/2.5V/3.3V储存器,3.3V扩展I/O,16KB指令Cache(I-Cache)/16KB 数据Cache(D-Cache) ● 外部储存控制器( SDRAM控制盒片选逻辑) ● 集成LCD专用...
引 言 火车轮轴承的损坏将导致重大交通事故,提前预防是避免事故发生的最好办法。现有的轴承温度采集系统大都不能实时采集温度信息,而且不能...该系统以S3C2440A为主控制器,外部各个温度传感器直接挂接在I2C总线
s3c_i2c0_set_platdata()函数将S3C2440上的I2C控制器进行了一些初始化,但是并没有写入硬件寄存器,仅仅是保存在了s3c2410_platform_i2c结构体中。 void __init s3c_i2c0_set_platdata(struct s3c2410_...
基于嵌入式的linux内核与Zigbee网络间的I2C通讯研究,王舸,杨杰,本文讨论了一种Zigbee网络和嵌入式linux内核之间通过I2C实现通信的方法,分析了嵌入式linux系统中I2C驱动程序,提出了以JN5121模块和S3C2440
采用了S3C6410X处理器,通过嵌入式Linux的驱动管理系统实现了对Cypress 7958、Snaptics TM1444等基于I2C总线协议的多点触摸屏幕的驱动设计。
嵌入式系统定义 嵌入式系统的应用领域 嵌入式系统的发展趋势 ...三星的ARM9芯片S3C2440A把常见的串行控制器、RTC控制器、看门狗、I2C总线控制器甚至LCD控制器等都集成在了一个芯片内,可以提供强大的处理能力。
在此,通过对微控制器ARM9S3C2440和嵌入式实时操作系统VxWorsk中的多媒体组件WindML体系结构进行研究,给出了WindML下设计S3C2440LCD驱动程序和基于I2C总线的键盘控制芯片ZLG7290设计键盘驱动程序的方法,完成了基于...