aminbahrami
Junior Member level 3
hi all
(at first:thanx mr flibble for your answers I take it here,maybe some one else help me)
i am working with S3 adsp 3400.
this board needs two iic.
but bsb wizard only create one i2c forit.
I created another iic using ip catalogue for my design seccessfuly.
i initialized two ICCs correctly and write to connected chips to them.
first iic(which is created by bsb) works correctly but second iic dont work(writing has no reaction)
iic which i created is iic version 2.03 and iic created by bsb is iic version 2_01_a
I leaved the result of each stage below in the code
this is my code for writing in two iics:
#include "xparameters.h"
#include "stdio.h"
#include "xbasic_types.h"
#include "xiic_l.h"
#include "xiic.h"
#include "xio.h"
#define FMC_CARD_IIC_BASE_ADDRESS XPAR_XPS_IIC_0_BASEADDR
#define iic_board_base_addr XPAR_IIC_EEPROM_BASEADDR //BSB created iic
#define IIC_BOARD_MUX_ADDR 0x72
#define IIC_FMC_MUX_ADDR 0x74
XIic IicInstance; /* The instance of the IIC device. */
//int Status;
int cnt,ByteCount;
Xuint8 WriteBuffer[2];
Xuint8 ReadBuffer[2];
//================================================== ==
int main (void) {
WriteBuffer[0]=0x04;
XStatus Status;
Xuint8 StatusReg;
/*
* Initialize the IIC Cores.
*/
Status = XIic_DynInit(iic_board_base_addr);
if(Status != XST_SUCCESS)
{
xil_printf("\r\n failure in initialization \r\n");
return XST_FAILURE;
}
xil_printf("\r\n initialization passed \r\n");
Status = XIic_DynInit(FMC_CARD_IIC_BASE_ADDRESS);
if(Status != XST_SUCCESS)
{
xil_printf("\r\n failure in initialization \r\n");
return XST_FAILURE;
}
xil_printf("\r\n initialization passed \r\n");
//=================================writing data===============
cnt=XIic_Send (iic_board_base_addr ,IIC_BOARD_MUX_ADDR, WriteBuffer,1,XIIC_STOP);
xil_printf("\r\n cnt:%d \r\n",cnt);
//========================cnt is one in previous stage====================
cnt=XIic_Send (FMC_CARD_IIC_BASE_ADDRESS ,IIC_FMC_MUX_ADDR, WriteBuffer,1,XIIC_STOP);
//=====code proceeds to above line only and remains in final XIic_send function===========================
xil_printf("\r\n cnt:%d \r\n",cnt);
return 0;
}
(at first:thanx mr flibble for your answers I take it here,maybe some one else help me)
i am working with S3 adsp 3400.
this board needs two iic.
but bsb wizard only create one i2c forit.
I created another iic using ip catalogue for my design seccessfuly.
i initialized two ICCs correctly and write to connected chips to them.
first iic(which is created by bsb) works correctly but second iic dont work(writing has no reaction)
iic which i created is iic version 2.03 and iic created by bsb is iic version 2_01_a
I leaved the result of each stage below in the code
this is my code for writing in two iics:
#include "xparameters.h"
#include "stdio.h"
#include "xbasic_types.h"
#include "xiic_l.h"
#include "xiic.h"
#include "xio.h"
#define FMC_CARD_IIC_BASE_ADDRESS XPAR_XPS_IIC_0_BASEADDR
#define iic_board_base_addr XPAR_IIC_EEPROM_BASEADDR //BSB created iic
#define IIC_BOARD_MUX_ADDR 0x72
#define IIC_FMC_MUX_ADDR 0x74
XIic IicInstance; /* The instance of the IIC device. */
//int Status;
int cnt,ByteCount;
Xuint8 WriteBuffer[2];
Xuint8 ReadBuffer[2];
//================================================== ==
int main (void) {
WriteBuffer[0]=0x04;
XStatus Status;
Xuint8 StatusReg;
/*
* Initialize the IIC Cores.
*/
Status = XIic_DynInit(iic_board_base_addr);
if(Status != XST_SUCCESS)
{
xil_printf("\r\n failure in initialization \r\n");
return XST_FAILURE;
}
xil_printf("\r\n initialization passed \r\n");
Status = XIic_DynInit(FMC_CARD_IIC_BASE_ADDRESS);
if(Status != XST_SUCCESS)
{
xil_printf("\r\n failure in initialization \r\n");
return XST_FAILURE;
}
xil_printf("\r\n initialization passed \r\n");
//=================================writing data===============
cnt=XIic_Send (iic_board_base_addr ,IIC_BOARD_MUX_ADDR, WriteBuffer,1,XIIC_STOP);
xil_printf("\r\n cnt:%d \r\n",cnt);
//========================cnt is one in previous stage====================
cnt=XIic_Send (FMC_CARD_IIC_BASE_ADDRESS ,IIC_FMC_MUX_ADDR, WriteBuffer,1,XIIC_STOP);
//=====code proceeds to above line only and remains in final XIic_send function===========================
xil_printf("\r\n cnt:%d \r\n",cnt);
return 0;
}