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

news2024/11/15 13:56:22

如何快速上手一个接口驱动任务:(这里以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
在这里插入图片描述
。。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1699230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学习心得】回归任务的评估指标决定系数R^2

一、决定系数是什么? scikit-learn库在进行回归任务的时候,进行模型评估时的score()方法,默认采取的是计算的是决定系数(Coefficient of Determination),通常表示为得分。这个值衡量了模型预测值与实际观测…

系统思考—问题分析与持续改进

刚刚为一家500强企业完成了《系统思考—问题分析与持续改进》的课程。学员们开始意识到,不能仅仅停留在冰山上层事件去解决问题,而是要深入观察隐藏在背后的趋势变化。学会如何识别系统中的深层次原因,并从全局视角来制定更加有效的改进策略。…

DockerNetwork

Docker Network Docker Network 是 Docker 引擎提供的一种功能,用于管理 Docker 容器之间以及容器与外部网络之间的网络通信。它允许用户定义和配置容器的网络环境,以便容器之间可以相互通信,并与外部网络进行连接。 Docker Network 提供了以…

vulnhub靶场之FunBox-8

一.环境搭建 1.靶场描述 Its a box for beginners and can be pwned in the lunch break. This works better with VirtualBox rather than VMware 2.靶场下载 Funbox: Lunchbreaker ~ VulnHub 3.靶场启动 二.信息收集 1.寻找靶场真实IP地址 nmap -sP 192.168.2.0/24 arp-…

正运动控制器:视觉纠偏和找孔

一、用户主界面CCD参数设置 通过主界面CCD参数设置,学习如何操作计算相机中心与电批中心的偏移量,以及相机标定的功能。 1、相机中心与电批中心的偏移量计算 1.1、在用户主界面点击CCD参数按钮,进入CCD设置界面。 主界面 CCD参数设置界面 1…

Python中tkinter入门编程9

在《Python中tkinter编程入门8-CSDN博客》中提到,tkinter中的Canvas表示画布,可以在画布中显示文字和图片。除了以上功能外,还可以在Canvas中添加对鼠标或键盘的响应。 1 为Canvas添加事件响应 可以通过Canvas的bind()方法添加对鼠标或键盘…

蓝桥杯-班级活动

题目描述 小明的老师准备组织一次班级活动。班上一共有 ( n ) 名(( n ) 为偶数)同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 ( n ) 以内的正整数作为 id,第 …

UCOSII_STM32F1移植详细过程(一)

UCOSII_STM32F1移植详细过程(一) 1、概述2、关于C/OS3、移植过程(文件描述与提取)1.软件工程文件夹描述2.提取工程中有用的文件3.提取ST标准外设库有用的文件2.新建、修改文件 1、概述 该文写针对初学C/OS的朋友,基于…

python数据分析-CO2排放分析

导入所需要的package import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import datetime %matplotlib inline plt.rcParams[font.sans-serif] [KaiTi] #中文 plt.rcParams[axes.unicode_minus] False #负号 数据清洗…

RedHat9 | DNS剖析-建立子域并进行区域委派

一、实验环境 1、委派DNS服务器 域名空间由多个域构成,DNS提供了将域名空间划分为1个或多个区域的方法,这样使得管理更加方便。在域的规模增大后,可以为域添加附加域,上级域为父域,下级域为子域,下列案例…

00Java准备工作

目录 JDK的安装目录 JAVA环境变量的配置 JDK的安装目录 目录名称说明bin该路径下存放了JDK的各种工具命令,javac和java就放在这个目录conf该路径下存放了JDK的相关配置文件include该路径下存放了一些平台特定的头文件jmods该路径下存放了JDK的各种模块legal该路径下存放了JD…

Windows下安装配置深度学习环境

Windows下安装配置深度学习环境 1. 准备工作 1.1 环境准备 操作系统:win10 22H2 GPU:Nvidia GeForce RTX 3060 12G 1.2 安装Nvidia驱动、cuda、cuDNN 下载驱动需要注册并登录英伟达账号。我这里将下面用到的安装包放到了百度网盘,可以关注微信…

【MATLAB】信号的熵

近似熵、样本熵、模糊熵、排列熵|、功率谱熵、奇异谱熵、能量熵、包络熵 代码内容: 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复信号的熵本公众号致力于解决找代码难,写代码怵。各位有什么急需…

JavaRedis-主从集群-分片-数据结构-回收处理-缓存问题

一、主从集群 1.主从集群 主从集群读写分离,主能读能写,从只能读,读的数据是同步主的 docker搭建: docker-compose 这里设置网络模式为model,就直接暴露在了宿主机中,就不用映射端口了 不改就是默认的桥…

Java进阶学习笔记30——BigDecimal

BigDecimal: 用于解决浮点型运算的,出现结果失真的问题。 运行结果: package cn.ensource.d4_bigdecimal;import java.math.BigDecimal;public class Test {public static void main(String[] args) {// 目标:了解BigDecimal类do…

蓝桥楼赛第30期-Python-第三天赛题 统计学习数据题解

楼赛 第30期 Python 模块大比拼 统计学习数据 介绍 JSON(JavaScript Object Notation, /ˈdʒeɪsən/)是一种轻量级的数据交换格式,最初是作为 JavaScript 的子集被发明的,但目前已独立于编程语言之外,成为了通用的…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【00】补充

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【00】补充 WindowsCMD插件IDEAVsCode MavenvagrantDocker解决MySQL连接慢问题启动(自动)Docker注意切换到root用户远程访问MySQL MyBatisPlus代码地址参考 WindowsC…

分布式专题

一:分布式事务 1、理论基础 分布式事务主要区分本地事务 什么是本地事务(Local Transaction)?本地事务也称为数据库事务或传统事务(相对于分布式事务而言)。尤其对于数据库而言,为了数据安全…

解决Jupyter运行代码显示Kernel Restarting的错误

在Jupyter notebook上运行代码时发现如下错误: 使用VS Code运行在日志表中发现错误存在: 它表明在初始化"libiomp5md.dll"库时发生问题,因为该库已经被初始化过了,这个错误可能是由于程序中重复初始化OpenMP库导致的&am…

简单多状态 dp 问题

11. 按摩师&#xff08;easy&#xff09; 解法&#xff08;动态规划&#xff09;&#xff1a; 图解&#xff1a; C 算法代码&#xff1a; class Solution { public:int massage(vector<int>& nums) {// 1. 创建⼀个 dp 表// 2. 初始化// 3. 填表// 4. 返回值int n n…