unsigned int iic_24lc04_lowest (int sda0, int sda1, int scl0, int scl1)
{
unsigned int *add;
unsigned int data;
add = (unsigned int *) XPAR_AXI_GPIO_I2C_SFP_BASEADDR;
*add = 0xfffffffc;
*(add + 4) = ((sda0)<<1) | scl0;
usleep(10);
*(add + 4) = ((sda1)<<1) | scl1;
usleep(10);
data = *(add) >> 1;
return data;
}
ML403 보드의 REF DESIGN을 수정 했습니다. 위의 코드는 GPIO 하위 2비트를 각각 (SDA, SCL)로 정하고 해당하는 비트를 조작해서 I2C 프로토콜을 만듭니다.
다음 코드는 매크로를 정의한 내용 입니다.
/* Macros to send data to IIC via bit bang */
#define SEND0 iic_24lc04_lowest(0,0,0,1)
#define SEND1 iic_24lc04_lowest(1,1,0,1)
#define START iic_24lc04_lowest(1,0,1,1)
#define STOP iic_24lc04_lowest(1,0,0,0);iic_24lc04_lowest(0,1,1,1);iic_24lc04_lowest(1,1,0,1);iic_24lc04_lowest(1,1,0,1)
#define ACK iic_24lc04_lowest(1,1,0,1)
#define IDLE iic_24lc04_lowest(1,1,1,1)
#define NOACK ACK
'edk' 카테고리의 다른 글
2개 MB가 DDR3에 있는 비트 파일을 BRAM을 통해 전달 (0) | 2011.12.06 |
---|---|
shell (0) | 2011.12.02 |
타이머인터럽트, External 인터럽트 (0) | 2011.11.19 |
특정 함수의 경과 시간 읽기 (0) | 2011.11.19 |
bit 파일과 elf를 합치는 명령어.. (0) | 2011.11.19 |