도와주세요!!
글 수 15,339
2003.09.28 01:18:30 (*.234.54.71)
6719
안녕하세요..
EZ-X5사용자입니다.
EZ-X5보드 위에 add-on 보드를 하나 만들었고, 이보드에 SSP통신을 하는 ADC를 이용하려합니다.
전에도 EZ-M01 Board에도 같은 칩을 사용하는 add-on 보드를 붙여서 사용했었습니다.
그래서 전에 사용했던 소스를 PXA에서 SSP관련 부분만 수정을하여 사용하려 하였으나
PIN들이 전혀 동작을 하질 않습니다.
제가 PXA에서 SSP관련 레지스터를 잘못 사용하는건진 모르겠지만
오실로스코프상의로도 PIN의 움직임이 전혀 없습니다.
(GP23,24,25,26번 EZ-X5의 U2컨넥터 56,57,58,59번 사용)
SSP를 초기화해 주는 소스코드한번 봐주세요
static void ssp_init(void)
{
// GPIO Alternate Function Enable for SSP
// set_GPIO_mode(GPIO23_SCLK); //set_GPIO_mode()함수가 동작하질 않음.
// set_GPIO_mode(GPIO24_SFRM);
// set_GPIO_mode(GPIO25_STXD);
// set_GPIO_mode(GPIO26_SRXD);
// Alternate Func REG 설정 이전 상태표시
printk("PXA_SSP_GAFR0_U_REG : 0x%08x, &0x%08x
",GAFR0_U,&GAFR0_U);
GAFR0_U |= 0x001A8000;
// REG 설정 이후 상태표시
printk("PXA_SSP_GAFR0_U_REG : 0x%08x, &0x%08x
",GAFR0_U,&GAFR0_U);
// GPIO Direction REG 설정 이전 상태표시
printk("PXA__GPDR0_REG[0] : 0x%08x, &0x%08x
",GPDR0,&GPDR0);
GPDR0 |= (GPIO_bit(23) | GPIO_bit(24) | GPIO_bit(25));
GPDR0 &= ~(GPIO_bit(26));
// REG 설정 이후 상태표시
printk("PXA__GPDR0_REG[1] : 0x%08x, &0x%08x
",GPDR0,&GPDR0);
/* turn on the SSP */
// SSP Control REG 설정 이전 상태표시
printk("PXA_SSP_SSCR0_REG[0] : 0x%08x, &0x%08x
",SSCR0,&SSCR0);
printk("PXA_SSP_SSCR1_REG[0] : 0x%08x, &0x%08x
",SSCR1,&SSCR1);
SSCR0 = 0;
SSCR0 = (SSCR0_DataSize(12) | SSCR0_National | SSCR0_SerClkDiv(32));
SSCR1 = 0;
// SSP 활성화
SSCR0 |= SSCR0_SSE;
// REG 설정 이후 상태표시
printk("PXA_SSP_SSCR0_REG[1] : 0x%08x, &0x%08x
",SSCR0,&SSCR0);
printk("PXA_SSP_SSCR1_REG[1] : 0x%08x, &0x%08x
",SSCR1,&SSCR1);
}
이렇게 설정한 후에 DDSR 레지스터(읽고/쓰기 FIFO)에 명령값을 넣었으나 아무런 응답이
없습니다.
위에서 설명한대로 PIN의 변화가 전혀 없습니다.
레지스터 설정은 스트롱암과 크게 다르지 안습니다. 설정한 값도 디버깅해보면 맞게 나옵니다.
물론 SSP와 관련된 칩을 사용해보시질 않아서 답변 주시기가 어려울 수도 있지만...
답변 기다리겠습니다.
EZ-X5사용자입니다.
EZ-X5보드 위에 add-on 보드를 하나 만들었고, 이보드에 SSP통신을 하는 ADC를 이용하려합니다.
전에도 EZ-M01 Board에도 같은 칩을 사용하는 add-on 보드를 붙여서 사용했었습니다.
그래서 전에 사용했던 소스를 PXA에서 SSP관련 부분만 수정을하여 사용하려 하였으나
PIN들이 전혀 동작을 하질 않습니다.
제가 PXA에서 SSP관련 레지스터를 잘못 사용하는건진 모르겠지만
오실로스코프상의로도 PIN의 움직임이 전혀 없습니다.
(GP23,24,25,26번 EZ-X5의 U2컨넥터 56,57,58,59번 사용)
SSP를 초기화해 주는 소스코드한번 봐주세요
static void ssp_init(void)
{
// GPIO Alternate Function Enable for SSP
// set_GPIO_mode(GPIO23_SCLK); //set_GPIO_mode()함수가 동작하질 않음.
// set_GPIO_mode(GPIO24_SFRM);
// set_GPIO_mode(GPIO25_STXD);
// set_GPIO_mode(GPIO26_SRXD);
// Alternate Func REG 설정 이전 상태표시
printk("PXA_SSP_GAFR0_U_REG : 0x%08x, &0x%08x
",GAFR0_U,&GAFR0_U);
GAFR0_U |= 0x001A8000;
// REG 설정 이후 상태표시
printk("PXA_SSP_GAFR0_U_REG : 0x%08x, &0x%08x
",GAFR0_U,&GAFR0_U);
// GPIO Direction REG 설정 이전 상태표시
printk("PXA__GPDR0_REG[0] : 0x%08x, &0x%08x
",GPDR0,&GPDR0);
GPDR0 |= (GPIO_bit(23) | GPIO_bit(24) | GPIO_bit(25));
GPDR0 &= ~(GPIO_bit(26));
// REG 설정 이후 상태표시
printk("PXA__GPDR0_REG[1] : 0x%08x, &0x%08x
",GPDR0,&GPDR0);
/* turn on the SSP */
// SSP Control REG 설정 이전 상태표시
printk("PXA_SSP_SSCR0_REG[0] : 0x%08x, &0x%08x
",SSCR0,&SSCR0);
printk("PXA_SSP_SSCR1_REG[0] : 0x%08x, &0x%08x
",SSCR1,&SSCR1);
SSCR0 = 0;
SSCR0 = (SSCR0_DataSize(12) | SSCR0_National | SSCR0_SerClkDiv(32));
SSCR1 = 0;
// SSP 활성화
SSCR0 |= SSCR0_SSE;
// REG 설정 이후 상태표시
printk("PXA_SSP_SSCR0_REG[1] : 0x%08x, &0x%08x
",SSCR0,&SSCR0);
printk("PXA_SSP_SSCR1_REG[1] : 0x%08x, &0x%08x
",SSCR1,&SSCR1);
}
이렇게 설정한 후에 DDSR 레지스터(읽고/쓰기 FIFO)에 명령값을 넣었으나 아무런 응답이
없습니다.
위에서 설명한대로 PIN의 변화가 전혀 없습니다.
레지스터 설정은 스트롱암과 크게 다르지 안습니다. 설정한 값도 디버깅해보면 맞게 나옵니다.
물론 SSP와 관련된 칩을 사용해보시질 않아서 답변 주시기가 어려울 수도 있지만...
답변 기다리겠습니다.