以前接触的都是车规级芯片,最近了解了一下STM32F1,用到了其IIC。听说STM32F1库函数的IIC有许多坑,很多人都推荐用IO模拟IIC,只能说这很“51”。上手两天发现,官方库函数的IIC是可以用的,这里介绍一下我解题思路。

初调IIC,很容易陷入库函数中的死循环,为啥呢。EV5,EV6,EV7是啥,死循环干什么;查询了芯片手册,对症下药,一步一步调试,对症下药。

芯片手册中有IIC的传送时序图,很重要。

主要介绍一下主模式,从模式可以下载芯片手册了解。

主模式涉及到了EV5,EV6,EV7,EV8,EV9等;【从模式涉及到了EV1,EV2,EV3,EV4等】

EV5:    SB=1,读SR1然后将地址写入DR寄存器将清除该事件。

EV6:    ADDR=1,读SR1然后读SR2将清除该事件。

EV6_1:  没有对应的事件标志,只适用于接受1个字节的情况。恰好在EV6之后,要清除响应和停止条件的产生位。

EV_7:  RxNE=1,读DR寄存器清除该事件。

EV7_1:  RxNE=1,读DR寄存器清除该事件。设置ACK=0和STOP请求。

EV8_1:  TxE=1,移位寄存器空,数据寄存器空,写DR寄存器。

EV8:    TxE=1,移位寄存器非空,数据寄存器空,写入DR寄存器将清除该事件。

EV8_2:  TxE=1,BTF=1,请求设置停止位。TxE,BTF位由硬件在产生停止条件时清除。

EV9: ADDR10=1, 读SR1然后写入DR寄存器将清除该事件。

EV_9:ADDR10=1,读SR1然后写入DR寄存器将清除该事件。

注:EV5,EV6,EV9,EV8_1,EV8_2事件拉低SCL低的事件,直到对应的软件序列结束。

EV7,EV8的软件序列必须在当前字节传输结束前完成。

EV6_1       或EV7_1的软件序列必须在当前传输字节的ACK脉冲之前完成。

测试一段时间,没有出现陷入死循环的情况;

考虑安全性和可靠性,可以加入软件循环跳出,以防万一。

STM32F1的IIC硬件调试之EV5,EV6,EV7,EV8,EV9相关推荐

  1. 分享在实际项目中积累的硬件调试经验 - 调试方法,以及常见调试案例

    文章目录 一.硬件调试的四个目标 二.硬件调试心得 三.一块新的板子的调试思路 四.硬件调试,一些网络资料 五.单片机硬件调试中常见的案例(杂记) 往期系列文章: 1.裸机项目开发经验分享 - 完整开 ...

  2. vivado----fpga硬件调试 (一)----mark_debug

    最近两个月开始用Vivado做项目,之前一直用ISE开发,个人觉得ISE方便好用,而Vivado编译又慢,还占内存,打开一个工程就需要好半天,可视化界面感觉也没什么用处,不如模块化的代码来的简单,而且 ...

  3. 高通Android平台硬件调试之Camera篇

    之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了, ...

  4. 硬件测试含软件调试,硬件调试与测试规范.doc

    第 PAGE i页 硬件调试与测试规范 目录 TOC \o "1-3" \h \z 前言 3 1参考标准 3 2适用范围 3 3硬件调试与测试规范 3 3.1硬件测试流程细则 3 ...

  5. 使用Vivado软件进行硬件调试

    文章目录 前言 一.例化ILA IP核调试 二.在网表中添加探针调试 总结 前言 本文的主要内容是使用Vivado软件进行硬件的调试,介绍例化ILA IP核和在网表中添加探针这两种硬件调试的方法,重点 ...

  6. 单板硬件设计和软件测试,单板硬件调试与单元测试方案(报告)模板.doc

    单板硬件调试与单元测试方案(报告)模板.doc 活动编号(ID):EE-80项目阶段□概念阶段■开发阶段□发布阶段□计划阶段□验证阶段□生命周期阶段产品名称产品型号/版本总页数××××××××共 ×× ...

  7. ddr老化测试_【鼎阳硬件智库原创︱DDR 】 DDR硬件调试篇:DDR硬件设计调试测试 之二...

    DDR硬件调试篇 前言:大家自己设计的产品出来后都有遇到一些什么样的DDR问题呢?这些问题是否为致命问题,一定要解吗?如果机器已经生产出来,却发现DDR硬件问题导致系统不稳定,机器是否作废了,有没有软 ...

  8. 新手入门板卡硬件调试

    硬件电路调试步骤 新手入门板卡硬件调试 一看→观察焊接情况 二测→测量阻抗 三接触式上电 调试遇到的问题一般解决思路 电源供电 运放出现震荡 测量时GND的选取 振铃现象 新手入门板卡硬件调试 一看→ ...

  9. keil软件调试(Debug)仿真教程(软件调试和硬件调试的区别)及常用调试按键详解

    文章目录 前言 一.什么是软件调试(Debug),有什么用? 二.keil Debug常用按钮 总结 前言 单片机的调试分为两种,一种是使用软件模拟调试,第二种是硬件调试,两种调试方式各有不同,软件模 ...

最新文章

  1. Windows下配置scrapy需要MVC的14.0版本(转载)
  2. 深度学习项目-神经元结构可视化
  3. 计算机硬件相关名词,计算机硬件基础名词解释
  4. Hadoop--ip和主机名配置
  5. CCF201809-2 买菜
  6. python3函数重载_9.20 利用函数注解实现方法重载
  7. linux syslog详解-------未测试
  8. 我的十年创作之路(三)——书稿创作经验谈
  9. C#常量——const和readonly(2)
  10. 实人认证玩出新高度,给千年老城注入新生科技力量
  11. 华悦网游器软件介绍及功能介绍
  12. SOP、SSOP、TSOP、TSSOP、SOL、SOJ 封装的区别
  13. js+php+大转盘,H5 Canvas抽奖大转盘代码实现及总结
  14. leetcode-1260:二维网格迁移
  15. PLSQL7配置免安装Oracle客户端
  16. 2019安徽省程序设计竞赛 D自驾游 题解
  17. win10在BIOS开启Intel VT-x
  18. Windows10系统如何多开微信程序(上班划水必备)
  19. 根据银行卡号来获取银行名称-java
  20. 京东优惠券获取、分析

热门文章

  1. 4GDTU在配电自动化的应用
  2. 计算机专业课程学习顺序
  3. 企业邮箱注册流程解析:分享如何申请注册企业邮箱
  4. 电脑上的以太网连接,本地连接,宽带连接,无线WLAN连接的区别(超详细)--转载
  5. 三十天学会绘画pdf_【推荐】30天学会绘画pdf百度云下载|30天学会绘画电子版!...
  6. 云服务器能干什么用?云服务器使用场景列举
  7. MAZAK手轮维修马扎克小巨人数控机床手柄操作器维修AV-EAHS-382-1
  8. 微型计算机的典型结构式,试卷正文1新.doc
  9. 《深入理解计算机系统》读书笔记1
  10. 现在选择学JAVA,2023月薪过万大有前途~