s3c2440 IIC AT24C08 (II)非中断模式
承接上一篇: http://blog.csdn.net/qq361294382/article/details/51589964
本次实验使用非中断方式实现S3C2440 对于AT24C08 实验IIC读写操作。
如上篇所说:
中断非中断(其实原理相通,非中断也是通过检测IICCON bit4 以此来判断是否有中断产生,后面的中断、非中断处理函数一样)。
1.Master/Transmitter Mode(主机发送模式)按照以下步骤初始化:
GPEUP |= 0xc000; //1100 0000 0000 0000 使用内部上拉
GPECON |= 0xa0000000; //关闭内部上拉,注意要有外部上拉电阻
INTMSK &=~ (BIT_IIC); //使能IIC中断
IICCON |= ((1<<7)|(0<<6)|(1<<5)|(0xf));//0xaf (0<<4)|(1<<0)); //
//使能ACK ,IICCLK=fPCLK/16,使能IIC收发中断, Tx Clock = IICCLK/8
//例:PCLK 50.7MHz, IICCLK=PCLK/16=3.17MHz, Tx Clock(发送时钟)=IICCLK/16=0.198MHz
IICADD |= 0x10; //10100**0 //2440 slave address=[7:1]=0x10 从机地址
IICSTAT = 0x10; //1101 0000 //IIC bus data output enable(Rx/Tx) IIC数据输出使能
2.主机发送数据,流程如下图和上篇一样:
与IO模拟IIC总线操作有差别的地方在于,从机地址最后一字节不需要实现读写操作,直接将bit[7:1]从机地址,bit0=0即可。
IICDS = slvAddr ; //从机地址末字节不需要自己添加
IICSTAT = 0xf0;//主机发送,启动
发送过程关键是检测IICCON bit4是否置位,若置位代表有ACK中断产生。然后进入下一步处理函数,注意此处还是要有中断函数,清中断操作,只是中断函数里面的IIC数据操作是在其它函数中做。
while(g_tS3C24xx_I2C.DataCount != -1){
if(IICCON & 0x10) //Tx/Rx Interrupt Enable
I2cPoll(); //和上篇中断处理函数一样
}
3.主机接收,流程如下:
接收时需要先将AT24C08从机地址以及要读的地址发送给从机,所以读操作开始是两个字节的写操作,具体方法见主机写操作。
然后是读操作:
IICSTAT = 0xb0;//1010 0000 主机接收,启动
IICCON = 0xaf; //恢复IIC操作
当接收到的字节不足时,一直查询:直到IICCON bit4置位
while(g_tS3C24xx_I2C.DataCount != -1) //读数据函数{
if(IICCON & 0x10) //Tx/Rx Interrupt Enable
I2cPoll();
}
跟中断方式类似,代码见资源页。点击下载
s3c2440 IIC AT24C08 (II)非中断模式相关推荐
- S3c2440 IIC
IIC(Inter-Integrated Circuit,I2C)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微处理器及其外围设备.在iic总线上,只需要两条线:串行数据线SDA和串行 ...
- connect函数在阻塞和非阻塞模式下的行为
connect函数在阻塞和非阻塞模式下的行为 当socket使用阻塞模式时,connect函数会阻塞到有明确结果才会返回,如果网络环境较差,可能要等一会,影响体验, 为了解决这个问题,我们使用异步co ...
- socket的阻塞模式和非阻塞模式(send和recv函数在阻塞和非阻塞模式下的表现)
socket的阻塞模式和非阻塞模式 无论是Windows还是Linux,默认创建socket都是阻塞模式的 在Linux中,可以再创建socket是直接将它设置为非阻塞模式 int socket (i ...
- socket的阻塞模式和非阻塞模式
文章目录 socket的阻塞模式和非阻塞模式 如何将socket设置为非阻塞模式 send和recv函数在阻塞和非阻塞模式下的表现 非阻塞模式下send和recv函数的返回值总结 阻塞与非阻塞sock ...
- 非阻塞模式下 SEND 和 RECV 函数的返回值总结
send 和 recv 函数的各种返回值意义: 返回值 n 返回值含义 大于 0 成功发送 n 个字节 0 对端关闭连接 小于 0( -1) 出错或者被信号中断或者对端 TCP 窗口太小数据发不出去( ...
- 图解Semaphore信号量之AQS共享锁-非公平模式
介绍 之前我们已经讲解过关于AQS的独占锁,这一章节主要讲解AQS的共享锁,以Semaphore信号量来进行讲解,相信通过看了本章节内容的同学可以对AQS的共享模式有一个了解,Semaphore信号量 ...
- 网桥接口非混杂模式下数据包转发
网桥接口处在非混杂模式下,只能接收目的MAC地址为自身的数据包,也就是说如果数据包的目的MAC为其它地址,将会被丢弃掉.对于单网口的设备这样没有问题,但是对于存在多个网卡的交换设备,如果从一个网口接收 ...
- python 正则表达式贪婪模式与非贪婪模式
1 贪婪模式与非贪婪模式 的理解 1.1 贪婪模式: 是尽可能的多地匹配字符 ,贪婪模式一般是在元符号后面没有添加? 1.2 非贪婪模式(懒惰模式): 是尽可能的少匹配字符,非贪婪模式一般是元符号后面 ...
- oracle非归档模式下如何备份,Oracle之RMAN数据库在非归档模式下的备份和恢复
1.数据库在非归档模式下的备份 SQLgt; archive log list;数据库日志模式 非存档模式自动存档 禁用存档终点 USE_DB_RECOVERY_FIL 1.数据库在非归档模式下的备份 ...
最新文章
- 条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)
- “为啥Kaggle奖金那么少?”一场25000美元的比赛,却因“抠门”引发激烈讨论...
- mysql中当前时间九点_MySQL 获得当前日期时间(以及时间的转换)
- HTML5 文件域+FileReader 分段读取文件(四)
- android开发 文件分享到应用,Android开发之——7.0适配之应用之间共享文件(FileProvider)...
- java 方法重载调用_Java方法的定义以及调用、方法重载、可变参数以及递归
- 【TensorFlow】TensorFlow函数精讲之tf.contrib.layers.l1regularizer()-12_regularizer(lambda)
- 复合选择器-并集选择器(HTML、CSS)
- 向上取整和向下取整(ceil、round)
- 2011年国内五款值得关注网店系统
- android 弹簧震动动画,Android弹簧动画--SpringAnimation
- SQL Express数据库的连接问题
- 笔记:常见TCP端口号
- 卷积神经网络学习路线(十一)| Stochastic Depth(随机深度网络)
- Android 高仿微信6.0主界面 带你玩转切换图标变色
- Linux OTA升级
- 伦斯勒理工大学计算机专业好申请吗,只要达到标准,申请伦斯勒理工学院就不是一件困难的事情!...
- 君莫笑系列视频学习(2)
- 下一个五年,存储的生意在哪里?
- 职场历练【管理学之三】