遇到的问题
问题1:使用io模拟i2c,i2c可以写,但读不到
解决:修改CS5560电源5v转3.3v;直接使用3.3v供电;读不到数据是因为SDA数据线无电压或者电压不够,可以加上拉电阻;
问题2:使用i2c硬件时,总线处于忙状态
while(i2c_flag_get((u32_t)I2Cx, I2C_FLAG_I2CBSY));//I2C通信忙标志
解决:i2c初始化后添加一个stop信号(或者在每次读写前都加stop信号,不建议;不确定后续是否会有影响);在读写前后,添加一个相对长的延时(防止 卡在某个判断标志的while里);
代码
io模拟i2c
#define GD_I2C0_BASE ((IIC_TypeDef *)I2C0)
#define GD_I2C1_BASE ((IIC_TypeDef *)I2C1)
#define I2C_SPEED 100000 // 1K
#define SLAVE_ADDR (0xD0>>1)
#define __i2c_io //使用io模拟i2c
#define RCU_GPIO_I2C RCU_GPIOB
#define RCU_GPIO_I2C_SCL RCU_GPIOB
#define I2C_SCL_PORT GPIOB
#define I2C0_SCL_PIN GPIO_PIN_6
#define I2C1_SCL_PIN GPIO_PIN_10
#define RCU_GPIO_I2C_SDA RCU_GPIOB
#define I2C_SDA_PORT GPIOB
#define I2C0_SDA_PIN GPIO_PIN_7
#define I2C1_SDA_PIN GPIO_PIN_11
#define RCU_GPIO_DRDY RCU_GPIOC
#define I2C_DRDY_PORT GPIOC
#define I2C_DRDY_PIN GPIO_PIN_3
#include "main.h"
#include "gd32f30x.h"
#include "i2c_hal.h"
//#define I2C_SPEED_RATE 100 //uint khz
//I2C_HandleTypeDef i2c_test = {0};
//FlagStatus i2c_int = RESET;
//2 Quake_A
//3 Quake_B
//4 Precision
unsigned char SET_ADC_FIG=1; //1 SET_ADC
unsigned long ADvalue=123,value;
unsigned char Rdata,AD_NEG,DO_READ_ADC;
unsigned long AD_H,AD_M,AD_L;
unsigned char DEV_Data[8]= {0};
/***************************** START *****************************/
//void I2C_Init(void)
//{
// GPIO_InitTypeDef gpioi2c={0};
// /* Configure the GPIO_LED pin */
// gpioi2c.Pin =ADC_SDA_GPIO | ADC_SCL_GPIO;
// gpioi2c.Mode = GPIO_MODE_AF;
// gpioi2c.Alternate = GPIO_AF4_I2C_SCL;
// gpioi2c.OpenDrain = GPIO_OPENDRAIN;//GPIO_PUSHPULL;
// gpioi2c.Debounce.Enable = GPIO_DEBOUNCE_DISABLE;
// gpioi2c.SlewRate = GPIO_SLEW_RATE_LOW;//GPIO_SLEW_RATE_HIGH;//GPIO_SLEW_RATE_LOW;
// gpioi2c.DrvStrength = GPIO_DRV_STRENGTH_LOW;//GPIO_DRV_STRENGTH_HIGH;
// gpioi2c.Pull = GPIO_PULLUP;
// HAL_GPIO_Init(ADC_GPIO, &gpioi2c);
//
// /*set init handle*/
// i2c_test.Instance = I2C;
//
// i2c_test.Init.master = I2C_MASTER_MODE_ENABLE;
// i2c_test.Init.slave = I2C_SLAVE_MODE_DISABLE;
// i2c_test.Mode = HAL_I2C_MODE_MASTER;
// printf("Enter Test I2C Master\r\n");
//
// i2c_test.Init.broadack = I2C_BROAD_ACK_DISABLE;
// i2c_test.Init.speedclock = I2C_SPEED_RATE;
// i2c_test.State = HAL_I2C_STATE_RESET;
//
// HAL_I2C_Init(&i2c_test);
//}
///**************************************************/
//HAL_StatusTypeDef I2C_Write_EEPROM(uint8_t dev_address,uint8_t reg_address,uint8_t *wdata,uint8_t size)
//{
// uint8_t data[17] = {0};
// uint8_t i = 0;
// HAL_StatusTypeDef ret = HAL_ERROR;
//
// data[0] = reg_address;
// for(i=0;i<size;i++)
// data[i+1]= wdata[i];
// ret = HAL_I2C_Master_Transmit(&i2c_test, dev_address, data, size+1);
// return ret;
//}
///*************************************************/
//HAL_StatusTypeDef I2C_Read_EEPROM(uint8_t dev_address,uint8_t reg_address,uint8_t *rdata,uint8_t size)
//{
// HAL_StatusTypeDef ret = HAL_ERROR;
//
// ret = HAL_I2C_Master_Transmit(&i2c_test, dev_address, ®_address, 1);
// ret = HAL_I2C_Master_Receive(&i2c_test, dev_address, rdata, size);
// return ret;
//}
/*****************************************************/
//#include "at24cxx.h"
#include "i2c_hal.h"
/*----------------------------------------------------------------------------*/
void delay (unsigned int time)
{ unsigned int di,dj;
for(di=0; di<time; di++) {
for(dj=0; dj<50; dj++);
}
}
/*********************************************************************************/
void I2C_Start(void)
{
GPIO_BOP(I2C_SCL_PORT)=I2C0_SDA_PIN;
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(4);
GPIO_BC(I2C_SCL_PORT)=I2C0_SDA_PIN;
delay(4);
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(4);
}
/*********************************************************************************/
void I2C_Stop(void)
{ GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
GPIO_BC(I2C_SCL_PORT)=I2C0_SDA_PIN;
delay(4);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(4);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SDA_PIN;
delay(4);
}
//
/*********************************************************************************/
void I2C_ACK(void)
{ gpio_init(I2C_SDA_PORT, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, I2C0_SDA_PIN);
delay(2); //SET=IN
delay(1);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(4);
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(4);
gpio_init(I2C_SDA_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, I2C0_SDA_PIN);
delay(2);
} //SET PD2.2=OUT
/*********************************************************************************/
void ByteTo_I2C(unsigned char DData)
{ unsigned char m,Pos;
m=0x80;
for(Pos=0; Pos<8; Pos++)
{ if((m&DData)>=1) {
GPIO_BOP(I2C_SCL_PORT)=I2C0_SDA_PIN;
delay(0);
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(1);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(1);
}
else {
GPIO_BC(I2C_SCL_PORT)=I2C0_SDA_PIN;
delay(0);
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(1);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(1);
}
m=m>>1;
}
delay(1);
}
/*********************************************************************************/
void I2C_Write(unsigned char DAddr,unsigned char RAddr,unsigned char WData)
{
#ifdef __i2c_io
gpio_init(I2C_SDA_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, I2C0_SDA_PIN);
delay(2); //SET PD2.2=OUT
I2C_Start();
ByteTo_I2C(DAddr);
I2C_ACK();
ByteTo_I2C(RAddr);
I2C_ACK();
ByteTo_I2C(WData);
I2C_ACK();
I2C_Stop();
#else
DEV_Data[0]=WData;
DEV_I2C_MasterWriteData(0,DAddr,RAddr,DEV_Data,1);
#endif
}
/*********************************************************************************/
void ByteFrom_I2C(void)
{
Rdata=0;
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(20);
if((GPIO_ISTAT(I2C_SCL_PORT)&(1<<7))!=0) {
Rdata|=0x80;
}
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(20);
if((GPIO_ISTAT(I2C_SCL_PORT)&(1<<7))!=0) {
Rdata|=0x40;
}
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(20);
if((GPIO_ISTAT(I2C_SCL_PORT)&(1<<7))!=0) {
Rdata|=0x20;
}
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(20);
if((GPIO_ISTAT(I2C_SCL_PORT)&(1<<7))!=0) {
Rdata|=0x10;
}
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(20);
if((GPIO_ISTAT(I2C_SCL_PORT)&(1<<7))!=0) {
Rdata|=0x08;
}
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(20);
if((GPIO_ISTAT(I2C_SCL_PORT)&(1<<7))!=0) {
Rdata|=0x04;
}
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(20);
if((GPIO_ISTAT(I2C_SCL_PORT)&(1<<7))!=0) {
Rdata|=0x02;
}
GPIO_BC(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(2);
GPIO_BOP(I2C_SCL_PORT)=I2C0_SCL_PIN;
delay(20);
if((GPIO_ISTAT(I2C_SCL_PORT)&(1<<7))!=0) {
Rdata|=0x01;
}
// if(Rdata)
// GPIO_BOP(GPIOC)=GPIO_PIN_1;
// else
// GPIO_BC(GPIOC)=GPIO_PIN_1;
}
/*********************************************************************************/
void I2C_Read(unsigned char DAddr,unsigned char RAddr)
{
#ifdef __i2c_io
gpio_init(I2C_SDA_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, I2C0_SDA_PIN);
delay(2); //SET PD2.2=OUT
I2C_Start();
ByteTo_I2C(DAddr);
I2C_ACK();
ByteTo_I2C(RAddr);
I2C_ACK();
I2C_Start();
ByteTo_I2C(DAddr+1);
I2C_ACK();
gpio_init(I2C_SDA_PORT, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, I2C0_SDA_PIN);
delay(2); //SET PD2.2=IN
ByteFrom_I2C();
I2C_ACK();
gpio_init(I2C_SDA_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, I2C0_SDA_PIN);
delay(2); //SET PD2.2=OUT
I2C_Stop();
#else
DEV_I2C_MasterReadData(0,DAddr,RAddr,DEV_Data,1);
Rdata=DEV_Data[0];
#endif
}
/*********************************************************************************/
void Read_AD_check(void)
{ I2C_Read(0xd0,0x08);
if((Rdata&0x02)!=0) {
DO_READ_ADC=1;
}
else {
DO_READ_ADC=0;
}
}
/*********************************************************************************/
void INIT_CS5560(void)
{
#ifdef __i2c_io
I2C_Write(0xd0,0x11,0x01); // HIRCC
delay(20);
I2C_Write(0xd0,0x0a,0xE7);
I2C_Write(0xd0,0x00,0x28); // PWRC
I2C_Write(0xd0,0x01,0x2e); // PGAC0
I2C_Write(0xd0,0x02,0x00); // PGAC1
I2C_Write(0xd0,0x03,0x00); // PGACS
I2C_Write(0xd0,0x07,0x03); // ADCR0 10HZ
I2C_Write(0xd0,0x09,0x1F); // ADCS
I2C_Write(0xd0,0x08,0x00); // ADCR1
#else
I2C_Write(0xd0,0x11,0x01); // HIRCC
delay(2000);
I2C_Write(0xd0,0x0a,0xE7);
delay(2000);
I2C_Write(0xd0,0x00,0x28); // PWRC
delay(2000);
I2C_Write(0xd0,0x01,0x2e); // PGAC0
delay(2000);
I2C_Write(0xd0,0x02,0x00); // PGAC1
delay(2000);
I2C_Write(0xd0,0x03,0x00); // PGACS
delay(2000);
I2C_Write(0xd0,0x07,0x03); // ADCR0 10HZ
delay(2000);
I2C_Write(0xd0,0x09,0x1F); // ADCS
delay(2000);
I2C_Write(0xd0,0x08,0x00); // ADCR1
delay(2000);
#endif
}
/****************************** ADC Read *****************************/
void READ_CS5560(void)
{
AD_L=0;
AD_M=0;
AD_H=0;
I2C_Read(0xd0,0x04);
AD_L=Rdata;
I2C_Read(0xd0,0x05);
AD_M=Rdata;
I2C_Read(0xd0,0x06);
AD_H=Rdata;
I2C_Write(0xd0,0x08,0x00);
AD_H=AD_H<<16;
AD_M=AD_M<<8;
ADvalue=AD_H+AD_M+AD_L;
ADvalue=ADvalue+0x800000;
ADvalue=ADvalue&0xFFFFFF;
if(ADvalue<0x800000) {
AD_NEG=1;
}
else {
AD_NEG=0;
}
//ADvalue=ADvalue>>8;?
}
/****************************** MAIN_ADC Read *****************************/
void MAIN_READ_ADC(void)
{ if((gpio_input_port_get(GPIOC)&(1<<3))==0) {
READ_CS5560();
}
//}
// I2C_Read(0xd0,0x08);
ADvalue=Rdata;
// delay(300);
//
int i=0;
// Read_AD_check();
// if(DO_READ_ADC==1){READ_CS5560(); DO_READ_ADC=0;}
//i=0;;
}
使用i2c硬件功能
#define GD_I2C0_BASE ((IIC_TypeDef *)I2C0)
#define GD_I2C1_BASE ((IIC_TypeDef *)I2C1)
#define I2C_SPEED 100000 // 1K
#define SLAVE_ADDR (0xD0>>1)
//#define __i2c_io //使用io模拟i2c
#define RCU_GPIO_I2C RCU_GPIOB
#define RCU_GPIO_I2C_SCL RCU_GPIOB
#define I2C_SCL_PORT GPIOB
#define I2C0_SCL_PIN GPIO_PIN_6
#define I2C1_SCL_PIN GPIO_PIN_10
#define RCU_GPIO_I2C_SDA RCU_GPIOB
#define I2C_SDA_PORT GPIOB
#define I2C0_SDA_PIN GPIO_PIN_7
#define I2C1_SDA_PIN GPIO_PIN_11
#define RCU_GPIO_DRDY RCU_GPIOC
#define I2C_DRDY_PORT GPIOC
#define I2C_DRDY_PIN GPIO_PIN_3
//联咏记录仪(NT983xx)硬板I2C驱动说明
//GD驱动支持2路I2C,联咏记录仪硬板仅用到1路(I2C1),用于RTC8130
#include "i2c_hal.h"
//I2C等待通讯打断超时时间(ms)
#define I2C_IRQ_TIMEOUT 200
void I2Cx_GPIO_Init(void)
{
/* gpio simulate i2c */
rcu_periph_clock_enable(RCU_GPIO_I2C);
rcu_periph_clock_enable(RCU_GPIO_DRDY);
/* connect PB6 to I2C_SCL */
/* connect PB7 to I2C_SDA GPIO_MODE_OUT_PP*/
/* connect PC3 to DRDY GPIO_MODE_IPU*/
gpio_init(I2C_SCL_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, I2C0_SCL_PIN);
gpio_init(I2C_SDA_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, I2C0_SDA_PIN);
gpio_init(I2C_DRDY_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, I2C_DRDY_PIN);
}
//下面代码是i2c硬件控制代码
//此版仅支持一路I2C
IIC_TypeDef* getI2cInstance(u8_t port)
{
return GD_I2C0_BASE;
}
void MX_I2Cx_Init(u8_t port)
{
if (0 == port)
{
/* enable GPIOB clock */
rcu_periph_clock_enable(RCU_GPIO_I2C);
/* connect PB6 to I2C_SCL */
/* connect PB7 to I2C_SDA */
gpio_init(I2C_SCL_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, I2C0_SCL_PIN);
gpio_init(I2C_SDA_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, I2C0_SDA_PIN);
}
else
{
/* enable GPIOB clock */
rcu_periph_clock_enable(RCU_GPIO_I2C);
/* connect PB10 to I2C1_SCL */
/* connect PB11 to I2C1_SDA */
gpio_init(I2C_SCL_PORT, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, I2C1_SCL_PIN);
gpio_init(I2C_SDA_PORT, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, I2C1_SDA_PIN);
}
}
int DEV_I2C_initMaster(u8_t port, int baudrate)
{
IIC_TypeDef* I2Cx = getI2cInstance(port);
if (I2Cx)
{
MX_I2Cx_Init(port);
if(I2C0 == (u32_t)I2Cx)
rcu_periph_clock_enable(RCU_I2C0); ///< 开启I2C0时钟门控
else
rcu_periph_clock_enable(RCU_I2C1); ///< 开启I2C1时钟门控
i2c_clock_config((u32_t)I2Cx, baudrate, I2C_DTCY_2);
i2c_mode_addr_config((u32_t)I2Cx, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, SLAVE_ADDR);
i2c_enable((u32_t)I2Cx);
i2c_ack_config((u32_t)I2Cx, I2C_ACK_ENABLE);
i2c_stop_on_bus((u32_t)I2Cx);
return DEV_RT_OK;
}
return DEV_RT_ERROR;
}
int DEV_I2C_MasterReadData(u8_t port, u8_t sla_addr, u8_t start_reg, u8_t *data, u16_t len)
{
int rt = DEV_RT_ERROR;
IIC_TypeDef* I2Cx = getI2cInstance(port);
if (!I2Cx)
return rt;
while(i2c_flag_get((u32_t)I2Cx, I2C_FLAG_I2CBSY));//I2C通信忙标志
i2c_start_on_bus((u32_t)I2Cx);//发送起始位
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_SBSEND));//起始位是否发送
i2c_master_addressing((u32_t)I2Cx, sla_addr, I2C_TRANSMITTER);//发送从机地址,设置写模式
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_ADDSEND));//主机模式下地址是否发送
i2c_flag_clear((u32_t)I2Cx, I2C_FLAG_ADDSEND); //清除标志位
I2C_DATA((u32_t)I2Cx)= start_reg;//发送寄存器地址
i2c_start_on_bus((u32_t)I2Cx);//发送起始位
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_SBSEND));//起始位是否发送
i2c_master_addressing((u32_t)I2Cx, sla_addr, I2C_RECEIVER);//发送从机地址,设置为读模式
if(1 == len)
i2c_ack_config((u32_t)I2Cx, I2C_ACK_DISABLE);//接收一个字节时要先不发送ACK
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_ADDSEND));//主机模式下地址是否发送
i2c_flag_clear((u32_t)I2Cx, I2C_FLAG_ADDSEND); //清除标志位
if(1 == len)
i2c_stop_on_bus((u32_t)I2Cx);//接收一个字节时要先发送STOP,后接收数据
u16_t i;
for(i=0; i<len; i++)
{
if(i == len-2)//接收到N-2个字节时,不发送ACK
{
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_BTC));
i2c_ack_config((u32_t)I2Cx, I2C_ACK_DISABLE);
}
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_RBNE));
*data++ = i2c_data_receive((u32_t)I2Cx);
}
if(1 != len)
i2c_stop_on_bus((u32_t)I2Cx); //发送结束位
while(I2C_CTL0((u32_t)I2Cx)&0x0200);//检查结束位是否发送
i2c_ack_config((u32_t)I2Cx, I2C_ACK_ENABLE);
return DEV_RT_OK;
}
int DEV_I2C_MasterWriteData(u8_t port, u8_t sla_addr, u8_t start_reg, const u8_t *data, u16_t len)
{
int rt = DEV_RT_ERROR;
IIC_TypeDef* I2Cx = getI2cInstance(port);
if (!I2Cx)
return rt;
//i2c_stop_on_bus((u32_t)I2Cx);
while(i2c_flag_get((u32_t)I2Cx, I2C_FLAG_I2CBSY));//I2C通信忙标志
i2c_start_on_bus((u32_t)I2Cx);//发送起始位
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_SBSEND));//起始位是否发送
i2c_master_addressing((u32_t)I2Cx, sla_addr, I2C_TRANSMITTER); //发送从机地址,设置写模式
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_ADDSEND)); //检测从机地址是否发送
i2c_flag_clear((u32_t)I2Cx, I2C_FLAG_ADDSEND); //清除标志位
I2C_DATA((u32_t)I2Cx)= start_reg;//发送寄存器地址
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_TBE));//发送期间I2C_DATA为空
u16_t i;
for(i=0; i<len; i++)
{
i2c_data_transmit((u32_t)I2Cx, data[i]); //发送数据
while(!i2c_flag_get((u32_t)I2Cx, I2C_FLAG_TBE));//发送期间I2C_DATA为空
}
i2c_stop_on_bus((u32_t)I2Cx); //发送结束位
while(I2C_CTL0((u32_t)I2Cx)&0x0200);//检查结束位是否发送
rt = DEV_RT_OK;
return rt;
}
main
int main(void)
{
/* configure USART */
gd_eval_com_init(EVAL_COM1);
/* configure the NVIC */
// i2c_nvic_config();
/* configure GPIO */
// gpio_config();
/* configure I2C */
// i2c_config();
/* initialize EEPROM */
// i2c_eeprom_init();
// i2c_bus_reset();
// MX_I2Cx_Init(0);
// DEV_I2C_initMaster(0, I2C_SPEED);
// INIT_XM24HTP();
#ifdef __i2c_io
/* gpio simulate i2c */
printf("\r\n I2Cx_GPIO_Init start!");
I2Cx_GPIO_Init();
printf("\r\n I2Cx_GPIO_Init done!");
#else
DEV_I2C_initMaster(0, I2C_SPEED);
// DEV_I2C_initMaster(1, I2C_SPEED);
printf("\r\nThe I2C is hardware interface ");
printf("\r\nThe speed is %d", I2C_SPEED);
#endif
printf("\r\n INIT_CS5560 start!");
// delay(30000);
INIT_CS5560();
// delay(30000);
// INIT_CS5560();
// delay(30000);
// INIT_CS5560();
printf("\r\n INIT_CS5560 done!");
// if(I2C_OK == i2c_24c02_test()) {
// while(1) {
// /* turn off all LEDs */
// gd_eval_led_off(LED2);
// gd_eval_led_off(LED3);
// gd_eval_led_off(LED4);
// gd_eval_led_off(LED5);
// /* turn on a LED */
// led_turn_on(count % 4);
// count++;
// if(count >= 4) {
// count = 0;
// }
// delay_1ms(500);
// }
// }
/* turn on all LEDs */
// gd_eval_led_on(LED2);
// gd_eval_led_on(LED3);
// gd_eval_led_on(LED4);
// gd_eval_led_on(LED5);
while(1)
{
MAIN_READ_ADC();
delay(30000);
printf("\r\nThe Value is %d", ADvalue);
}
}