码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • I2C知识大全系列三 —— I2C驱动之单片机中的I2C


    两种方式

    单片机中的I2C驱动有两种方式。一种方式是用专用硬件I2C控制器实现,这种方式简单易行,品质也容易控制,只是会增加硬件成本方面的压力。另一种方式是用纯软件方式实现,这种方式几乎无硬件成本方面的考虑。

    主要对比:

    • (1)硬件I2C用法比较复杂,模拟IIC的流程更清楚一些
    • (2)硬件I2C速度比模拟快,并且可以用DMA

    模拟I2C可以在任何管脚上,而硬件只能在固定管脚上。

    硬件I2C

    对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但是程序较为繁琐。硬件(固件)I2C是直接调用内部寄存器进行配置;而软件I2C是没有寄存器这个概念的。

     I2C控制器操作代码(STM32系列单片机)

     

    收发的三种方式:

    • 中断
    • 轮询
    • DMA

    中断和轮询可以收发任意组合。

    软件I2C

    软件I2C一般是选择单片机中的任意两个空闲GPIO口(管脚复用都选择最基本的GPIO),其中一个口线作为时钟线(SCL),另一个口线作为数据线(SDA),与I2C设备的SCL和SDA一一对应连接,用软件控制GPIO口即SCL、SDA输出高低电平,模拟I2C总线的时序,从而与I2C设备进行通信。

    GPIO模拟I2C程序

    起始(start)

    时钟线(SCL)高电平,数据线(SDA)从高电平跳变到低电平。代码如下:

    结束(stop)

    时钟线(SCL)在高电平期间,数据线(SDA)由低电平向高电平跳变。

    发送

    主机发送一个字节到IIC总线。

    主机从IIC总线读取一个字节数据

  • 相关阅读:
    MatrixOne 支持多样化生态工具,持续提升开发者体验
    线程同步与互斥
    第一章《初学者问题大集合》第8节:Java程序初步释疑
    电大搜题——赋能学习,助力广东开放大学学子
    【开源】SpringBoot框架开发教学资源共享平台
    Linux服务管理
    如何写好一篇软文?怎样写软文比较有吸引力?
    Spring面试题大全含答案共79题,最新全spring全家桶超级葵花宝典
    让学前端不再害怕英语单词(四)
    【Linux】:使用git命令行 || 在github创建项目 || Linux第一个小程序——进度条(进阶版本)
  • 原文地址:https://blog.csdn.net/phmatthaus/article/details/127456807
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号