/*================================================================ Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved. Quectel Wireless Solutions Proprietary and Confidential. =================================================================*/ /** ****************************************************************************** * @file example_iic.c * @author Paddy.li * @version V1.0.0 * @date 2019/01/04 * @brief This file tests IIC APIs ****************************************************************************** */ #include #include "ql_rtos.h" #include "ql_application.h" #include "ql_iic.h" #define I2C_SLAVE_ADDR 0x1B //codec 5616 #define WHO_AM_I 0x02 #define WHO_AM_I_VALUE 0x12 /************************************************************************************* ql_i2c_init函数中i2c_no与gpio对应关系如下: (不同项目开放的资源存在差异,请根据项目的引脚资源表再参照下面对应关系进行选择.) GPIO_NUM I2C_NO 49-50 ----> 0 10-11 ----> 1 12-13 ----> 2 25-26 ----> 4 **************************************************************************************/ static void quec_i2c_test(void * argv) { #if 1 //EC600S:SCL gpio10, SDA gpio11 fun1 unsigned char i2c_no = 1; //CI2C match to twsi1 #else //EC100Y int i2c_no = 0; //CI2C match to twsi0 #endif unsigned int iRet=0; unsigned int fastmode = 0; ql_i2c_init(i2c_no, fastmode); unsigned char wrtBuff[2] = {WHO_AM_I_VALUE, 0}; unsigned char rdBuff[2] = {0, 0}; iRet = ql_i2c_write(i2c_no, I2C_SLAVE_ADDR, WHO_AM_I, wrtBuff, 2); printf("< write i2c value=0x%x, iRet=%d >\n", WHO_AM_I_VALUE, iRet); iRet = ql_i2c_read(i2c_no, I2C_SLAVE_ADDR, WHO_AM_I, rdBuff, 2); printf("< read i2c iRet=%d, value=0x%x 0x%x >\n", iRet, rdBuff[1], rdBuff[0]);//Little endian } //application_init(quec_i2c_test, "quec_i2c_test", 2, 10);