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

SDK——如何快速上手一个接口驱动任务(以iic为例)

如何快速上手一个接口驱动任务:(这里以iic为例)

文章目录

  • 一、注意这里有一些基本概念需要知道:
    • 1.关于主从模式的选择(以iic为例)
    • 2.关于外设的中断模式(intr)和轮询模式(polled)
      • 2.1 轮询模式 (Polling Mode)
      • 2.2 中断模式 (Interrupt Mode)
  • 二、学习iic的驱动
    • 1.通过导入一些示例+gpt解读,快速了解一些基本函数
    • 2.发现常用的函数包括:

一、注意这里有一些基本概念需要知道:

1.关于主从模式的选择(以iic为例)

本项目中fpga外接传感器,fpga 通过iic接口对传感器进行读写控制,所以应该看的是iic控制器主模式

2.关于外设的中断模式(intr)和轮询模式(polled)

2.1 轮询模式 (Polling Mode)

工作机制
在轮询模式下,CPU定期主动检查外设的状态,判断是否有事件发生。例如,CPU会不断读取I2C接口的状态寄存器,检查是否有新的数据到达或传输完成。
优点
简单易实现:实现轮询模式的代码通常比较简单,不涉及复杂的中断配置。
可控性强:因为是主动检查,程序流程相对简单,调试也比较容易。
缺点
CPU资源浪费:如果外设事件发生频率低,CPU会在大量时间内无意义地等待。
响应时间不可控:因为需要等待CPU轮询到该事件,所以响应时间不如中断模式。
适用场景
低速外设:例如低频率的数据采集。
简单任务:不需要高实时性和高性能的场景。

2.2 中断模式 (Interrupt Mode)

工作机制
在中断模式下,外设发生事件时,会触发一个中断信号,通知CPU进行处理。CPU暂停当前任务,转而执行中断服务程序(Interrupt Service Routine,ISR)来处理该事件,处理完成后再返回继续执行原来的任务。
优点
高效:CPU只有在有事件发生时才进行处理,大部分时间可以执行其他任务,提高了系统的效率。
实时性好:能够快速响应外设事件,适合对响应时间有较高要求的应用。
缺点
复杂性:中断的实现和管理相对复杂,需要处理中断的优先级、嵌套以及中断上下文切换等问题。
调试困难:由于中断是异步触发,调试和问题定位相对困难。
适用场景
高频事件:如高频率的数据通信或实时性要求高的任务。
多任务系统:如操作系统内核中广泛使用中断来管理多任务。

可以简单的把cpu当成老师,把外设当成学生,
轮询模式就理解成:老师讲课的过程中,每隔一定的时间去问学生有没有不懂的地方
而中断模式则是:老师讲课的过程中,学生主动去打断老师,向老师进行提问。

二、学习iic的驱动

1.通过导入一些示例+gpt解读,快速了解一些基本函数

在这里插入图片描述
在这里插入图片描述
例如这里学习iic时导入下图所示的历程(注意:)
在这里插入图片描述

2.发现常用的函数包括:

XIicPs_LookupConfig: 查找并获取IIC设备的配置结构。
XIicPs_CfgInitialize: 使用获取的配置结构初始化IIC设备。
XIicPs_SelfTest: 对IIC设备执行自检测试,确保设备正常工作。
XIicPs_SetSClk: 设置IIC时钟速率。
XIicPs_MasterSendPolled: 在主设备模式下发送数据,使用轮询方式。
XIicPs_BusIsBusy: 检查IIC总线是否繁忙,等待传输完成。
XIicPs_MasterRecvPolled: 在主设备模式下接收数据,使用轮询方式。

然后对这些函数的使用进行查看即可:

XIicPs_LookupConfig:在这里插入图片描述
XIicPs_CfgInitialize
在这里插入图片描述
。。。。。。

相关文章:

  • 基于springboot+vue的4S店车辆管理系统
  • vulnhub靶场之FunBox-8
  • 渗透工具CobaltStrike工具的下载和安装
  • 粤嵌—2024/5/20—三角形最小路径和(✔)
  • gRPC和ProtoBuf
  • LeetCode-105-岛屿的最大面积
  • 【Linux杂货铺】进程通信
  • 线性模型--普通最小二乘法
  • JavaFX安装与使用
  • Web开发学习总结
  • 8.什么是HOOK
  • sql查询,直接返回json数组格式
  • 伪css的处理方式
  • [力扣题解] 200. 岛屿数量
  • Java——认识Java
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【EOS】Cleos基础
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • angular2开源库收集
  • CSS3 变换
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python_OOP
  • ReactNativeweexDeviceOne对比
  • Vue官网教程学习过程中值得记录的一些事情
  • 大整数乘法-表格法
  • 简单基于spring的redis配置(单机和集群模式)
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 聊聊flink的TableFactory
  • 世界上最简单的无等待算法(getAndIncrement)
  • 一起参Ember.js讨论、问答社区。
  • No resource identifier found for attribute,RxJava之zip操作符
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #NOIP 2014# day.1 T2 联合权值
  • (2022 CVPR) Unbiased Teacher v2
  • (Matlab)使用竞争神经网络实现数据聚类
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (第二周)效能测试
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (六)DockerCompose安装与配置
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net 程序发生了一个不可捕获的异常
  • .NET下的多线程编程—1-线程机制概述
  • .py文件应该怎样打开?