当前位置: 首页 > news >正文

如何使用IIC外设(硬件IIC)

 本文重点叙述如何使用芯片自带的 IIC 外设,即硬件 IIC,实现 IIC 通信。文章《IIC通信基础_cpu的iic通信-CSDN博客》 中,叙述了软件 IIC 通信和硬件 IIC 通信的区别, 并且重点叙述了 IIC 的通信协议。在使用软件进行 IIC 通信时,需要用程序代码控制IO口按照通信协议的要求做出动作,程序代码是比较繁琐的;在使用芯片自带的 IIC 外设,即硬件 IIC 进行通信时,我们可以直接调用并配置相关的库函数来操作 IIC 的外设,而不必关注具体通信协议,因为 IIC 外设的工作方式就是基于通信协议的,所以我们只需要让他工作起来就可以。

下文就是用户手册中的 IIC 外设的使用方法(以STM32F407为例),

1、声明I2C_HandleTypeDef句柄结构体;

2、通过调用HAL_I2C_MspInit()函数,初始化I2C底层资源,包括下述几个方面,

a、使能I2C接口时钟;

b、I2C引脚配置,包括:

——使能I2C的IO引脚时钟;

——配置I2C引脚的复用功能为开漏模式;

c、NVIC 配置,如果需要使用中断程序,包括:

——配置I2C中断优先级;

——使能NVIC I2C IRQ 通道;

d、DMA配置,如果需要使用DMA程序,包括:

——声明DMA_HandleTypeDef句柄结构体,为了发送或接受数据流;

——使能DMA接口时钟使用;

——配置DMA句柄参数;

——配置DMA的Tx或Rx的数据流;

——将初始化的DMA句柄与hi2c DMA Tx或Rx句柄关联;

——配置优先级并使能在DMA的Tx或Rx数据流上的传输完整中断;

3、配置通信速率、占空比、寻址方式、自己地址1、双寻址模式、自己地址2、常规呼叫和非拉伸模式在hi2c Init 结构中;

4、初始化I2C寄存器通过调用HAL_I2C_Init(),也配置底层硬件(GPIO、时钟、NVIC等)通过调用HAL_I2C_MspInit(&hi2c);

5、为了检查是否目标设备准备好通信,使用函数HAL_I2C_IsDeviceReady();

6、对于I2C IO和IO MEM操作,在这个驱动里可以利用三种操作模式:

轮询模式IO操作

轮询模式IO MEM 操作

中断模式IO操作

中断模式IO MEM操作

DMA模式IO操作

DMA模式IO MEM操作

原文如下:

               

http://www.lryc.cn/news/443376.html

相关文章:

  • 使用 Vue 3、Vite 和 TypeScript 的环境变量配置
  • F28335 的串行外设接口(以下简称 SPI)
  • 科技引领未来生活——“光影漫游者”展览馆应用—轻空间
  • ego-planner开源代码之启动参数介绍分析
  • 828 华为云征文|华为 Flexus 云服务器打造 Laverna 在线笔记应用
  • 数据结构与算法-Trie树添加与搜索
  • AIGC专栏15——CogVideoX-Fun详解 支持图文生视频 拓展CogVideoX到256~1024任意分辨率生成
  • BFS 解决多源最短路问题
  • 论文笔记:交替单模态适应的多模态表征学习
  • 鸿蒙OS 线程间通信
  • 执行 npm报错 Cannot find module ‘../lib/cli.js‘
  • 基于SpringBoot+Vue+MySQL的国产动漫网站
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于CAN总线的气动控制
  • Ubuntu 20.04 内核升级后网络丢失问题的解决过程
  • 论文解读《LaMP: When Large Language Models Meet Personalization》
  • Excel VLOOKUP函数怎么用?vlookup函数的使用方法及案例
  • 专为汽车功能应用打造的 MLX90376GGO、MLX90377GGO、MLX90377GDC-ADB-280 Triaxis®磁位置传感器 IC
  • 34.贪心算法1
  • DataX实战:从MongoDB到MySQL的数据迁移--修改源码并测试打包
  • Axure设计之表格列冻结(动态面板+中继器)
  • WPF DataGrid 动态修改某一个单元格的样式
  • 如何安装部署kafka
  • Centos7-rpm包管理器方式安装MySQL 5.7.25
  • Project Online 协作版部署方案
  • 小米 13 Ultra机型工程固件 资源预览与刷写说明 步骤解析
  • Goweb预防XSS攻击
  • ICM20948 DMP代码详解(36)
  • 【框架】Spring、SpringBoot和SpringCloud区别
  • 计算机网络各层有哪些协议?
  • Diffusion Model Stable Diffusion(笔记)