基于mdm9206 threadx_os的I2c操作相关API介绍
大家好,今天小白给大家介绍一下,关于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,欢迎一起交流学习。
基于mdm9206 threadx_os的I2c操作相关API介绍相关推荐
- 基于mdm9206 threadx_os的timer操作相关API介绍
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的timer操作相关的api,希望能和大家一起交流学习. 一 . 概述 本篇介绍的接口是实现高级时间服务(ATS)计时器服务. ...
- 基于mdm9206 threadx_os的spi操作相关API介绍
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的spi操作相关的API,希望能和大家一起交流学习. 一. SPI简介 SPI,是英语Serial Peripheral Int ...
- 基于mdm9206 threadx_os的adc操作相关API介绍
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的adc操作相关的API,希望能和大家一起交流学习. 1 ADC简介 模数转换器(ADC)允许对模拟信号进行采样和数字表示. S ...
- 基于mdm9206 threadx_os的gpio操作相关API介绍
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的gpio操作相关的api,希望能和大家一起交流学习. 1.gpio模块概述 SoC具有许多功能,但由于尺寸缩小,通常会受到限制 ...
- 关于mdm9206 threadx_os的I2c操作相关的API,
大家好,今天小白给大家介绍一下,关于mdm9206 threadx_os的I2c操作相关的API,希望能和大家一起交流学习. 一:I2C简介 I2C是一种2线总线,用于将低速外设连接到处理器或微控制器 ...
- VB 文件常用操作相关API
下面是windows中提供的对于文件进行操作的API函数及其功能: Windows API函数 功能 CloseHandle 关闭一个内核对象.其中包括文件.文件映射.进程.线程.安全和同步对象等.涉 ...
- Win32路径操作相关API
一.路径截断与合并 PathRemoveArgs 去除路径的参数 PathRemoveBackslash 去除路径最后的反斜杠 "\" PathAddBackslash 在路径 ...
- Hibernate基础学习(二)—Hibernate相关API介绍
一.Hibernate的核心接口 所有的Hibernate应用中都会访问Hibernate的5个核心接口. (1)Configuration接口: 配置Hibernate,启动Hibernate,创建 ...
- WordNet相关API介绍及语义相似度计算方法
WordNet Introduction WordNet是由Princeton 大学的心理学家,语言学家和计算机工程师联合设计的一种基于认知语言学的英语词典.它不是光把单词以字母顺序排列,而且按照单词 ...
最新文章
- python数据分析张俊红_关于数据分析我们来聊聊Python
- C++知识点8——函数的返回值
- IE下checkbox或radio隐藏bug
- 【Hadoop】MAC下hadoop2.6安装以及执行wordcount
- 指数分布的期望推导过程
- 下一个计划 : .NET/.NET Core应用性能管理
- linux 统计当前目录下文件或者文件夹的数量
- JavaScript结合Bootstrap仿微信后台多图文界面管理
- python编程实现撤销上一步操作_78行Python代码实现现微信撤回消息功能
- python并行计算_Python并行计算初探
- 在 Linux shell 中自由操作时间变量
- php yaf框架扩展实践一——配置篇
- 有爱无碍,科技为他们点亮漫天星光
- STM32+ST7789+RX8025T+DS18B20+EC11+GT30L32S4W组成的时钟
- LaTeX 页眉设置
- 做VR需要UI设计师具备哪些能力?
- Mac上解压Rar,Zip,7z等格式的解压软件,推荐这一款免费软件就够了,堪比Win11上的winrar
- 3dmax修改器堆栈的妙用
- 江西“葫芦夫妻”的“甜蜜”事业
- 第11周编程题在线测试
热门文章
- 什么是DrawCall?
- java 导出答题卡_试题六(共15分) 阅读以下说明、图和Java代码,填补Java代码中的空缺(1)~(6),将解答写在答题纸的对 - 赏学吧...
- 【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day13 | 货物摆放 | 真题代码解析
- 如何打造高效的团队(三) - 领导力
- 信息学奥赛一本通:1406:单词替换
- SystemUI分析
- 动态拨号VPS服务器有什么作用:
- macOS: 使用新版plutil命令操作Plist文件更方便
- 简述在html中加入css方法,CSS引入方式 - CSS | 绿叶学习网
- Github提交出现“Everything up-to-date“