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