宏定义

#define SLAVE_ADDR 0x51
#define I2CSPEED 400000 //i2c速度

stm8l051 i2c从机初始化

    /* I2C  clock Enable*/CLK_PeripheralClockConfig(CLK_Peripheral_I2C1, ENABLE);I2C_DeInit(I2C1);I2C_Init(I2C1, I2CSPEED, SLAVE_ADDR ,I2C_Mode_I2C, I2C_DutyCycle_2,I2C_Ack_Enable, I2C_AcknowledgedAddress_7bit);/* Enable Error Interrupt*/I2C_ITConfig(I2C1, (I2C_IT_TypeDef)(I2C_IT_ERR | I2C_IT_EVT | I2C_IT_BUF), ENABLE);

stm8s103 i2c从机初始化

I2C_Init(I2CSPEED, SLAVE_ADDR , I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, I2CCLK);//I2C初始化
I2C_ITConfig(I2C1, (I2C_IT_TypeDef)(I2C_IT_ERR | I2C_IT_EVT | I2C_IT_BUF), ENABLE);

中断处理

{/* In order to detect unexpected events during development,it is recommended to set a breakpoint on the following instruction.*/
//接收发送Uchar temp = 0;if (I2C1->SR1&0x02)//地址已经匹配(读SR1,SR3清除该位){temp = I2C1->SR3&0x07;}else if ((I2C1->SR1&0x84)&&(I2C1->SR3&0x04))//数据字节传送完{temp = 0xA5;    //假设这里发送0xA5I2C1->DR = temp;}else if ((I2C1->SR1&0x40)&&(0 == (I2C1->SR3&0x04)))//接收时数据寄存器{temp = I2C1->DR;    //读取数据寄存器}else if (I2C1->SR1&0x10)//检测到停止位{I2C1->CR2 = I2C1->CR2;//清除停止位}//错误处理if (I2C1->SR2&0x01)//总线错误{I2C1->SR2 &= ~0x01;//清零}else if(I2C1->SR2&0x02)//仲裁失败{I2C1->SR2 &= ~0x02;//清零}else if(I2C1->SR2&0x04)//应答失败{I2C1->SR2 &= ~0x04;//清零}else if(I2C1->SR2&0x08)//上溢、下溢{I2C1->SR2 &= ~0x08;//清零}return;
}

以上程序已长时间测试未发生过任何异常,所以他们说stm8的I2C存在硬件BUG应该是谣言。

STM8 I2C从机相关推荐

  1. GPIO实现I2C从机的设计[1]

    在本阶段的工作中,需要实现一个由GPIO模拟的I2C从机工程设计,以前只使用GPIO模拟I2C设计过主机,对于从机的设计,还是首次.下面就讲本次工作中从机设计思想做详细记录. I2C的简单总结 对于I ...

  2. STM32F407硬件I2C从机配置

    公司项目需要用到I2C从机与上位机通信.在网上搜了搜,发现大部分都是说STM32硬件有问题的,与硬件I2C从机相关的资料很少.调通之后,想着把demo分享出来,丰富一下网上的例程.STM32F1系列稍 ...

  3. 基于STM32实现I2C从机的数字数学计算器:用于执行加法、减法和乘法操作的深度解析及应用

    一.引言 在许多现代电子设备中,微控制器都是至关重要的组成部分,其作用是控制和处理系统内部的各种操作.我们经常遇到一种情况,即需要微控制器与其他设备进行通信以接收或传递信息.在这种情况下,I2C(In ...

  4. STM32的I2C主从机通信

    最近一段时间在做I2C通信协议,需要在两块STM32之间做I2C通信,定的是主机用IO口模拟,从机用的是STM32的硬件I2C,我的项目要求是需要主从机之间能够进行一串数据收发而不出错,实验时在主机方 ...

  5. STM32作为I2C从机中断接收和从模式中断应答数据总结

    之前在项目中用到了STM32F103的i2c功能,大致功能是两个单片机进行i2c通信,而且通信模式是主问从答模式.这里我研究了一下STM32F103硬件i2c作为从机中断接收主设备请求,然后从设备在主 ...

  6. I2C介绍及verilog实现(主机/从机可综合)

    I2C介绍及verilog实现(主机/从机可综合) 目录 1.简介 2.基本特征 3.物理连接 4.数据格式 4.1快速模式和低速模式(F/S)写 4.2快速模式和低速模式(F/S)读 4.3高速模式 ...

  7. STM32 硬件i2c作为从机总是卡死

    调试i2c从机的时候,配置都注册,就是主机读到我的从机的时候就会卡死.摸索了好几天最后发现是clock no stretch mode 没有enable.真是醉了,完全是按照官方例程配置的. 如果cl ...

  8. STM32F10x_硬件I2C主从通信(轮询发送,中断接收)

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang Ⅰ.写在前面 ...

  9. 手把手教你STM8单片机标准库移植

    本节主要内容:完成Lora模块单片机STM8L101F3标准库的移植 STM8l101F3单片机属于是8位单片机,但和传统的51有很大的区别: 1.STM8的内核不一样:  51单片机的内核是传统的8 ...

最新文章

  1. Hadoop 分布式文件系统 - HDFS
  2. vue解决线上跨域的问题_vue前后端分离解决跨域问题
  3. 只有3%的猿能完全看懂的高端漫画
  4. 遍历 Dictionary,你会几种方式?
  5. Acwing 307. 连通图
  6. java枚举和枚举类_Java枚举:您拥有优雅,优雅和力量,这就是我所爱!
  7. 读书笔记2013第5本:《拖延心理学》
  8. Java形参的改变不会影响实参
  9. Extjs TreeNode的图标元素。 (节点图标, expand的加减号)
  10. python selenium定位元素方法_[原创] python selenium 元素定位方法封装
  11. gRPC编译和安装——Linux版
  12. 查看oracle执行计划
  13. 留言板删除功能mysql_用PHP写留言板代码时怎样才能实现删除和修改留言的啊?代码是怎样的?...
  14. 如何把多张图片快速的拼接在一起?如何拼接多张图片?
  15. iOS 项目默认竖屏 个别页面横屏
  16. STM32单片机基础(理论概念知识)
  17. c++打印心形_c语言如何打印心
  18. 安卓bmi项目_BMI计算器安卓版下载
  19. android ios版本 市场占有率,最新的智能移动终端ios,android等市场占有率情况
  20. 用宅购节当前哨战,京东到家为双十一暗中蓄力

热门文章

  1. 酒仙网IPO被终止:曾拟募资10亿 红杉与东方富海是股东
  2. 以rpm为后端及以yum为前端工具的程序包管理器在Linux发行版系统centos中的使用...
  3. 5A学友的备考心得 | PMP考试如何一把过?
  4. PCM设备的E1接头
  5. vue 微信录音倒计时_vue的微信语音功能,录音+对接口返回amr音频播放-Go语言中文社区...
  6. JVM笔记-性能监控与分析工具
  7. Xcode自动编译、打包、上传到蒲公英应用分发平台
  8. 教育行业crm管理解决方案 - whale帷幄
  9. 【KRpano360全景教程 】 - krpano地图导航radar插件的使用
  10. 计算机的文件打开记录怎么删,怎样删除最近使用的文档记录,电脑文档文件怎么删除...