大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的I2c操作相关的API,希望能和大家一起交流学习。

一:I2C简介
I2C是一种2线总线,用于将低速外设连接到处理器或微控制器。常见的I2C外设包括触摸屏控制器,加速度计,陀螺仪以及环境光和温度传感器。

2线总线包括数据线,时钟线和基本的START,STOP和确认信号,以驱动总线上的传输。 I2C外设也称为I2C从器件。 处理器或微控制器实现I2C规范中定义的I2C主设备。 本篇介绍了访问I2C主实现的软件接口。

二:相关宏定义
#define QAPI_I2C_FLAG_START 0x00000001 //指定传输以START位开始 -  S.

#define QAPI_I2C_FLAG_STOP 0x00000002 //指定传输以STOP位结束 -  P.

#define QAPI_I2C_FLAG_WRITE 0x00000004 //必须设置为表示WRITE转移。

#define QAPI_I2C_FLAG_READ 0x00000008 //必须设置为表示READ传输。

.....

三:I2C相关接口定义
1. qapi_Status_t qapi_I2CM_Open ( qapi_I2CM_Instance_t instance, void ∗∗i2c_Handle )

2. qapi_Status_t qapi_I2CM_Close ( void ∗ i2c_Handle )

功能:由客户端代码调用以初始化相应的I2C实例。 成功时,i2c_Handle指向I2C实例的句柄。 API分配资源以供客户端句柄和I2C实例使用。这些资源在qapi_I2CM_Close()调用中释放。 API还可以为I2C硬件实例供电。 要禁用实例的电源,必须进行相应的qapi_I2CM_Close()调用。

参数:

in :instance, 客户端打算初始化的I2C实例;

out:i2c_Handle, 指针位置由驱动程序填充,带有句柄实例。

关于instance,类型是:qapi_I2CM_Instance_t ,定义如下:

enum qapi_I2CM_Instance_t,客户端想要使用的I2C内核的实例。 此实例在qapi_I2CM_Open()中传递。

返回值:

QAPI_OK  - 调用成功

其他返回值代表不同的失败原因。

3. qapi_Status_t qapi_I2CM_Transfer ( void ∗ i2c_Handle, qapi_I2CM_Config_t

∗ config, qapi_I2CM_Descriptor_t ∗ desc, uint16_t num_Descriptors,

qapi_I2CM_Transfer_CB_t CB_Function, void ∗ CB_Parameter, uint32_t delay_us )

功能:执行I2C传输。 如果传输已由另一个客户端进行,则此调用将对传输进行排队。 如果传输返回失败,则传输尚未排队,并且不会发生回调。 如果传输返回QAPI_OK,则传输已排队,并且只有在调用回调时才能获得传输的进一步状态。

注意:在客户端调用此API之后,它必须等待完成回调才能再次调用API。 如果客户端希望对多个传输进行排队,则必须使用qapi_I2CM_Descriptor_t类型的描述符数组,而不是多次调用API。

参数:

in:i2c_Handle //处理I2C实例。

In:config //从属配置。 有关详细信息,请参阅qapi_I2CM_Config_t。

关于config参数,类型是:qapi_I2CM_Config_t,详细定义如下:

typedef struct

{

uint32_t  bus_Frequency_KHz;  // I2C总线速度,单位为kHz。

uint32_t  slave_Address;     //I2C设备地址

qbool_t   SMBUS_Mode;    //SMBUS模式配置参数,true设置为SMBUS模式

uint32_t  slave_Max_Clock_Stretch_Us;  //最大从时钟延时数

uint32_t  core_Configuration1;   //核心特定配置。 推荐是0。

uint32_t  core_Configuration2;    //    核心特定配置。 推荐是0。

} qapi_I2CM_Config_t

in:desc //I2C传输描述符。 请参阅qapi_I2CM_Descriptor_t

细节。 这可以是描述符数组。

in:num_Descriptors //描述符数组中的描述符数。

in:CB_Function //在传输完成时调用的回调函数发生在中断上下文中。 调用必须进行最少的处理,不得调用此处定义的任何API。

关于CB_Function参数, 类型如下:

4. typedef void( ∗ qapi_I2CM_Transfer_CB_t)(const uint32_t status, void

∗ CB_Parameter)  //声明由客户端定义的回调函数的类型。

out:status, 传输的的完成状态

out:CB_Parameter, 回调函数的一个参数,被在qapi_I2CM_Transfer中传入。

in:CB_Parameter //客户端在此处传递的上下文将按原样返回回调函数。

in:delay_us //延迟以微秒为单位。

返回值:

QAPI_OK  - 调用成功

其他返回值代表不同的失败原因。

5. qapi_Status_t qapi_I2CM_Power_On ( void ∗ i2c_Handle )

功能:为I2C事务开启I2C硬件资源。

参数:

in:i2c_Handle, 是qapi_I2CM_Open返回的驱动程序句柄。

返回值:

QAPI_OK  - 调用成功

其他返回值代表不同的失败原因

6. qapi_Status_t qapi_I2CM_Power_Off ( void ∗ i2c_Handle )

功能:禁用I2C硬件资源。

参数:

in: i2c_Handle,是qapi_I2CM_Open返回的驱动程序句柄。

返回值:

QAPI_OK  - 调用成功

其他返回值代表不同的失败原因

四:关于IIC接口使用的参考代码
void sample (void)

{

qapi_Status_t status = QAPI_OK;

qapi_I2CM_Config_t config;

uint32_t transferred1;

uint8_t buffer[4] = { 1, 2, 3, 4 };

qapi_I2CM_Descriptor_t desc[2];

status = qapi_I2CM_Open(QAPI_I2CM_INSTANCE_004_E, &i2c_handle);  //获得操作句柄

config.bus_Frequency_KHz = 100;                     //config参数初始化

config.slave_Address  = device_Address;

config.SMBUS_Mode  = 0;

config.slave_Max_Clock_Stretch_Us = 100000;

config.core_Configuration1 = 0;

config.core_Configuration2 = 0;

desc[0].buffer= buffer;                                                     //desc参数初始化

desc[0].length= 4;

desc[0].transferred = &transferred1;

desc[0].flags= QAPI_I2C_FLAG_START | QAPI_I2C_FLAG_WRITE |

QAPI_I2C_FLAG_STOP;

res = qapi_I2CM_Transfer (client_handle, &config, &desc[0], 1,

client_callback, NULL);                                                //数据传输

res = qapi_I2CM_Close (client_handle);                 //关闭I2C通道

}

void client_callback (uint32_t status, void *ctxt)      //数据传输完成后调用的回调。

{

// Transfer completed

}

五 总结:
本篇主要介绍了基于mdm9206平台的threadx_os的I2C操作相关的api,欢迎一起交流学习。

--------------------- 
作者:weixin_38498942 
来源:CSDN 
原文:https://blog.csdn.net/weixin_38498942/article/details/86002613 
版权声明:本文为博主原创文章,转载请附上博文链接!

关于mdm9206 threadx_os的I2c操作相关的API,相关推荐

  1. 基于mdm9206 threadx_os的I2c操作相关API介绍

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的I2c操作相关的API,希望能和大家一起交流学习. 一:I2C简介 I2C是一种2线总线,用于将低速外设连接到处理器或微控制器 ...

  2. 基于mdm9206 threadx_os的timer操作相关API介绍

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的timer操作相关的api,希望能和大家一起交流学习. 一 . 概述 本篇介绍的接口是实现高级时间服务(ATS)计时器服务. ...

  3. 基于mdm9206 threadx_os的spi操作相关API介绍

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的spi操作相关的API,希望能和大家一起交流学习. 一. SPI简介 SPI,是英语Serial Peripheral Int ...

  4. 基于mdm9206 threadx_os的adc操作相关API介绍

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的adc操作相关的API,希望能和大家一起交流学习. 1 ADC简介 模数转换器(ADC)允许对模拟信号进行采样和数字表示. S ...

  5. 基于mdm9206 threadx_os的gpio操作相关API介绍

    大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的gpio操作相关的api,希望能和大家一起交流学习. 1.gpio模块概述 SoC具有许多功能,但由于尺寸缩小,通常会受到限制 ...

  6. I2C操作笔记——以 AT24C04为例

    1.前言 对于大多数工程师而言,I2C永远是一个头疼的问题.相比UART和SPI而言,I2C的时序要复杂一些,I2C组合变化也丰富一些.在这里以AT24C04为例说明I2C使用过程中的一些注意点. 2 ...

  7. 单片机 I2C操作笔记——以 AT24C04为例

     1.前言 对于大多数工程师而言,I2C永远是一个头疼的问题.相比UART和SPI而言,I2C的时序要复杂一些,I2C组合变化也丰富一些.在这里以AT24C04为例说明I2C使用过程中的一些注意点 ...

  8. linux重命名tar命令,linux常用操作指令4 —— 文件操作相关命令(mkdir、touch、rm、mv、cp、cat 、 find 、tar、chmod)...

    文件操作相关命令 文件操作相关命令 1.创建文件夹mkdir 2.创建文件touch 3.移动文件夹mv(类似于剪切) 4.删除rm 5.重命名mv 6.复制cp 7.查看文件(cat.head.ta ...

  9. R包操作相关:安装、卸载、加载、移除、已经安装的包、包的路径、函数查看等

    R包操作相关:安装.卸载.加载.移除.已经安装的包.包的路径.函数查看等 查看已经加载的R包: (.packages()) 列出包所在的路径: .libPaths() 查看已经安装的包的详细信息: i ...

最新文章

  1. Filter 设计模式编码实践
  2. 删库跑路大神的一生:曾在家造炸弹被捕,现卖房押宝NFT,原是开源创业之星...
  3. 数据结构之希尔排序图文详解及代码(C++实现)
  4. mysql开创_MySQL创始人打造MariaDB 全面兼容MySQL 5.1
  5. 牛客题霸 NC23 划分链表
  6. mysqld install mysql default_MySQL安装默认配置
  7. day24-抽象类与接口类
  8. 使用ASP.NET Core、JavaScript和Angular防止CSRF攻击
  9. 从旧版升级到MySql4.1上的中文乱码问题解决方案
  10. mapinfo将北京54坐标系转WGS84坐标系
  11. libcef和js交互
  12. 洛谷 P1724 东风谷早苗
  13. 服务器内置usb能否修改为外置,台式机内置的DVD刻录机可以改成外置的USB接口吗?...
  14. 写给大学时期自己的寄语
  15. ChinaSkills-网络系统管理(2021年全国职业院校技能大赛B-1 模块 B:Windows 环境 评分标准 )
  16. 【转】MBBMS CA方案
  17. mysql八小时前的数据,根据条件关联查询
  18. throwable和Exception的区别
  19. idea 初始界面_IntelliJ IDEA欢迎界面
  20. 算法设计与分析 实验二 分治法求解最近点对问题

热门文章

  1. 快速上手 github
  2. 自然语言处理顶会ACL 2020会议核心要点分享
  3. 3051变送器安装注意事项
  4. c语言的生日祝福程序,c语言祝福生日快乐
  5. 电脑开机时出现DHCP...
  6. 我用python爬取了整个斗图网站
  7. 2022最新超级蜘蛛池站群优化网站源码下载
  8. 一本书读懂AIGC与ChatGPT的前世今生
  9. Sashimi、DEX以及新启示
  10. C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板...