AB1601之iic驱动改造
来源:互联网 发布:新兴重工查知的老婆 编辑:程序博客网 时间:2024/05/21 22:23
由于项目中需要使用iic的当前位置读数据模式,但厂家sdk中并没有实现。那就只能自己动手了:
I2C_STATUS_ENUM DRV_I2C_SetupForRead(I2C_BUS_CTRL_T * pI2cCtrl, void(*end_cb)(I2C_STATUS_ENUM))
{
while(DRV_I2C_IsBusy());
DRV_I2C_Disable();
DRV_I2C_ResetStatus();
//gDrvI2Cctrl.MB.settings= (uint8_t)( I2C_SETTING_STANDARD | I2C_SETTING_READ | I2C_SETTING_RANDOM_READ | I2C_SETTING_SCL_SYNC);
gDrvI2Cctrl.MB.settings= (uint8_t)( I2C_SETTING_STANDARD | I2C_SETTING_READ | I2C_SETTING_SEQ_CUR_READ | I2C_SETTING_SCL_SYNC);
gDrvI2Cctrl.MB.length_byteh = (uint8_t)((pI2cCtrl->NumOfReg)>>8);
gDrvI2Cctrl.MB.length_bytel = (uint8_t) (pI2cCtrl->NumOfReg);
gDrvI2Cctrl.MB.contrl_byte1= (uint8_t)((pI2cCtrl->DeviceAddr<<1)|I2C_READ_CMD_BIT);
gDrvI2Cctrl.MB.address= (uint8_t) (pI2cCtrl->RegAddr);
gDrvI2Cctrl.MB.data_area.Ctrl2 = (uint8_t)((pI2cCtrl->DeviceAddr<<1)|I2C_READ_CMD_BIT);
DRV_I2C_SetClockFreq(pI2cCtrl->FreqSel);
DRV_I2C_SetRepeat(pI2cCtrl->repeat);
DRV_I2C_SetTxSetting(&gDrvI2Cctrl.MB.settings);
DRV_I2C_SetRxBufAddr(pI2cCtrl->ValueAddr.Dst);
gDrvI2Cctrl.cb = end_cb;
DRV_I2C_Enable();
if(end_cb)
return I2C_TRANSACTION_EXECUTING;
while(DRV_I2C_IsBusy());
return (DRV_I2C_GetStatus() & I2C_STATUS_MASK_ALLERROR)? \
I2C_TRANSACTION_FAILED: \
I2C_TRANSACTION_SUCCEEDED;
}
- AB1601之iic驱动改造
- AB1601低功耗之IIC和PWM控制注意事项
- S3C2440之IIC裸机驱动
- 嵌入式linux之IIC驱动
- AB1601串口之bugs
- AB1601之串口参数设置
- 四极管:IIC驱动之 AVR ZLG7290
- linux iic驱动编程之数据传输函数
- ESP8266之24C02 IIC驱动代码
- IIC驱动
- iic驱动
- AB1601读触摸芯片ASC0106的IIC波形图
- RT-thread 设备驱动组件之IIC总线设备
- IIC控制器驱动流程
- IIC总线驱动架构
- IIC驱动分析
- Linux IIC驱动笔记
- IIC总线驱动基础知识
- Linux基础命令学习
- 利用numpy和pandas处理csv文件中的时间2
- bzoj2561: 最小生成树
- 架构师日记——Nginx的配置优化
- 市场研究中的数据分析知识整理 (三)-聚类分析
- AB1601之iic驱动改造
- bash: 一键安装 必备软件
- Linux下select, poll和epoll IO模型的详解
- maven 依赖的jar包打包问题
- Struts2知识点回顾(四)怎么传递对象参数?
- Java 线程
- Hibernate简单的拦截器原理
- laravel event事件 讲解
- HDU 1102 Constructing Roads(最小生成树 Kruskal算法)