承接上一篇:    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)非中断模式相关推荐

  1. S3c2440 IIC

    IIC(Inter-Integrated Circuit,I2C)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微处理器及其外围设备.在iic总线上,只需要两条线:串行数据线SDA和串行 ...

  2. connect函数在阻塞和非阻塞模式下的行为

    connect函数在阻塞和非阻塞模式下的行为 当socket使用阻塞模式时,connect函数会阻塞到有明确结果才会返回,如果网络环境较差,可能要等一会,影响体验, 为了解决这个问题,我们使用异步co ...

  3. socket的阻塞模式和非阻塞模式(send和recv函数在阻塞和非阻塞模式下的表现)

    socket的阻塞模式和非阻塞模式 无论是Windows还是Linux,默认创建socket都是阻塞模式的 在Linux中,可以再创建socket是直接将它设置为非阻塞模式 int socket (i ...

  4. socket的阻塞模式和非阻塞模式

    文章目录 socket的阻塞模式和非阻塞模式 如何将socket设置为非阻塞模式 send和recv函数在阻塞和非阻塞模式下的表现 非阻塞模式下send和recv函数的返回值总结 阻塞与非阻塞sock ...

  5. 非阻塞模式下 SEND 和 RECV 函数的返回值总结

    send 和 recv 函数的各种返回值意义: 返回值 n 返回值含义 大于 0 成功发送 n 个字节 0 对端关闭连接 小于 0( -1) 出错或者被信号中断或者对端 TCP 窗口太小数据发不出去( ...

  6. 图解Semaphore信号量之AQS共享锁-非公平模式

    介绍 之前我们已经讲解过关于AQS的独占锁,这一章节主要讲解AQS的共享锁,以Semaphore信号量来进行讲解,相信通过看了本章节内容的同学可以对AQS的共享模式有一个了解,Semaphore信号量 ...

  7. 网桥接口非混杂模式下数据包转发

    网桥接口处在非混杂模式下,只能接收目的MAC地址为自身的数据包,也就是说如果数据包的目的MAC为其它地址,将会被丢弃掉.对于单网口的设备这样没有问题,但是对于存在多个网卡的交换设备,如果从一个网口接收 ...

  8. python 正则表达式贪婪模式与非贪婪模式

    1 贪婪模式与非贪婪模式 的理解 1.1 贪婪模式: 是尽可能的多地匹配字符 ,贪婪模式一般是在元符号后面没有添加? 1.2 非贪婪模式(懒惰模式): 是尽可能的少匹配字符,非贪婪模式一般是元符号后面 ...

  9. oracle非归档模式下如何备份,Oracle之RMAN数据库在非归档模式下的备份和恢复

    1.数据库在非归档模式下的备份 SQLgt; archive log list;数据库日志模式 非存档模式自动存档 禁用存档终点 USE_DB_RECOVERY_FIL 1.数据库在非归档模式下的备份 ...

最新文章

  1. 条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)
  2. “为啥Kaggle奖金那么少?”一场25000美元的比赛,却因“抠门”引发激烈讨论...
  3. mysql中当前时间九点_MySQL 获得当前日期时间(以及时间的转换)
  4. HTML5 文件域+FileReader 分段读取文件(四)
  5. android开发 文件分享到应用,Android开发之——7.0适配之应用之间共享文件(FileProvider)...
  6. java 方法重载调用_Java方法的定义以及调用、方法重载、可变参数以及递归
  7. 【TensorFlow】TensorFlow函数精讲之tf.contrib.layers.l1regularizer()-12_regularizer(lambda)
  8. 复合选择器-并集选择器(HTML、CSS)
  9. 向上取整和向下取整(ceil、round)
  10. 2011年国内五款值得关注网店系统
  11. android 弹簧震动动画,Android弹簧动画--SpringAnimation
  12. SQL Express数据库的连接问题
  13. 笔记:常见TCP端口号
  14. 卷积神经网络学习路线(十一)| Stochastic Depth(随机深度网络)
  15. Android 高仿微信6.0主界面 带你玩转切换图标变色
  16. Linux OTA升级
  17. 伦斯勒理工大学计算机专业好申请吗,只要达到标准,申请伦斯勒理工学院就不是一件困难的事情!...
  18. 君莫笑系列视频学习(2)
  19. 下一个五年,存储的生意在哪里?
  20. 职场历练【管理学之三】

热门文章

  1. 应用密码学第一章绪论笔记
  2. 帮管客CRM客户管理系统 v3.2.0
  3. JavaScript画的股票曲线图
  4. 《数字语音处理》- 1. 基于MATLAB的语音信号时域特征分析
  5. 泰坦尼克号预测如何做到Kaggle排名前2%
  6. 20230209SQL练习题
  7. 花书/深度学习入门相关资料
  8. 软件系统开发的先行军——原型系统
  9. 基于jsp+servlet+mysql网上蛋糕店
  10. 点餐系统,项目注意点(微信支付)