嵌入式系统通用驱动程序接口及其实现-I2C主机设备驱动(视频教学时的同步输入文件)
来源:互联网 发布:淘宝代购没有中文标签 编辑:程序博客网 时间:2024/05/29 07:41
嵌入式系统通用驱动程序接口及其实现-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设备
0 0
- 嵌入式系统通用驱动程序接口及其实现-I2C主机设备驱动(视频教学时的同步输入文件)
- 嵌入式系统通用驱动程序接口及其实现-总则(视频教学时的同步输入文件)
- 嵌入式系统通用驱动程序接口及其实现-IO口(视频教学时的同步输入文件)
- 嵌入式系统通用驱动程序接口及其实现-EERPOM存取位置标准化(视频教学时的同步输入文件)
- 嵌入式Linux系统下I2C设备驱动程序的开发
- 嵌入式Linux系统下I2C设备驱动程序的开发
- 嵌入式Linux系统下I2C设备驱动程序的开发
- 嵌入式Linux系统下I2C设备驱动程序的开发
- 嵌入式Linux系统下I2C设备驱动程序的开发
- 嵌入式Linux系统下I2C设备驱动程序的开发
- 嵌入式Linux中I2C设备驱动程序的研究与实现
- 嵌入式Linux系统中I2C总线设备的驱动设计
- 嵌入式Linux系统中I2C总线设备的驱动设计
- 嵌入式Linux系统中I2C总线设备的驱动设计
- 嵌入式Linux系统下I2C设备驱动程式的研发
- 嵌入式linux下QT3/Embedded的输入设备驱动接口
- 嵌入式系统设备驱动接口的C#编程
- I2C 设备驱动程序 标准实现
- 补专题列表
- 键盘 点击别处隐藏键盘
- JAVA WEB关于文件开发相关问题
- 为何log4j.properties不用手动加载
- Greenplum中exit,return和label的注意事项
- 嵌入式系统通用驱动程序接口及其实现-I2C主机设备驱动(视频教学时的同步输入文件)
- 抓包工具Fidder详解(主要来抓取Android中app的请求)
- 第28课 Spark天堂之门解密
- 单总线和多总线的区别
- VS2005编译器自定义宏__FILE__,__LINE__,__TIME__
- 添加ES6的支持
- C++函数返回引用的情况说明
- Java基础知识
- Linux 程序运行栈帧