Files
banban/ql-application/threadx/interface/driver/example_iic.c

59 lines
1.9 KiB
C

/*================================================================
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 <stdio.h>
#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);