嵌入式系统通用驱动程序接口及其实现-I2C主机设备驱动(视频教学时的同步输入文件)

嵌入式系统通用驱动程序接口及其实现-I2C主机设备驱动

应用场景
  • EEPROM 24系列 电视频道
  • 7289 按键驱动
  • ADC
  • DAC
  • 触模板驱动
  • 自定义I2C协议,设备内部系统 单元模块之间通讯(主机,从机)。
I2C数据构成:
struct _I2cData{
  unsigned char Adr; //设备址

  unsigned char *pCmd;
  unsigned char CmdLen;

  unsigned char *pData;
  unsigned char DataLen;

  unsigned char Flag;   //相关标志
  //后继处理函数,不实现此功能时为空()
  void (*EndNotify)(signed char IsErr);//收发数据接结束后调用
};

#define I2C_DATA_RD 0x80       //读
#define I2C_DATA_WR 0X00       //写
#define I2C_DATA_OV_MASK 0X7F  //数据超时值
I2C主机设备驱动程序
C++实现
class I2cDev{   //I2cMasterDev,从机I2cSlaveDev
 public:
//构造函数
I2cDev(void *pHw, 
       unsigned long Baud,   //当前设备通讯波特率
       unsigned long Mck);   //系统时钟
   //基本功能:
   signed char ReStart(struct _I2cData *pData);
   void Reset();
   signed char IsEnd();

   //通讯过程控制:
   enum _eState {eIdie eError}
   enum _eState eGetState();
   void IRQ();         //中断处理程序

   //超时控制
   void timeEvent();  //1ms定时器

 private:
   struct _I2cData *pData;  //数据缓冲
   void *pHw;               //硬件
   enum _eState eState;     //状态机
   unsigned char Index;     //状态内部计数

   ErrTimer;                //内部故障计时,超过计时
  };
C实现(I2cDev.h)
//I2C工作状态机:
enum _eI2cDevState{
  eI2cDevIdie = 0,
  .
  .
  .                     //中间态
  eI2cDevFinal = n-1,  //结束态
  eI2cDevErr = n,

};

struct _I2cDev{
  struct _I2cData *pData;     //数据缓冲
  void *pHw;                  //硬件

  enum _eI2cDevState eState;  //内部状态机
  unsigned char Index;        //状态内部计数

  ErrTimer;                //内部故障计时,超过计时
};

//-----------------------I2C初始化函数------------------------
I2cDev_Init(I2cDev *pDev,    //未初始化的I2C设备
            void *pHw, 
            unsigned long Baud,   //当前设备通讯波特率
            unsigned long Mck);   //系统时钟

//------------------数据读写函数-------------------------
//返回是否成功 0成功,非0失败
signed char I2cDev_ReStart(I2cDev *pDev,    //I2C设备
                           struct _I2cData *pData);

//------------------硬件复位函数-------------------------
void I2cDev_Reset(I2cDev *pDev);//I2C设备

//------------------是否通讯结束状态--------------------
signed char I2cDev_IsEnd(I2cDev *pDev);//I2C设备

//----------------------获得当前状态--------------------
//enum _eI2cDevState I2cDev_eGetState(const I2cDev *pDev);//I2C设备
#define I2cDev_eGetState(pdev) ((pdev)->eState)

//------------------------中断处理程序-------------------------
void I2cDev_IRQ(I2cDev *pDev);//I2C设备

//-----------------------任务函数------------------------------
//放入系统1ms进程时
void I2cDev_Task(I2cDev *pDev);//I2C设备
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值