WIZnet Developer Forum

WIZwiki-w7500p에서 UART1으로 통신하려고 합니다

WIZwiki-w7500p에서 UART1으로 통신하려고 합니다
UART1의 경우 핀헤더의 D14,15를 사용한다고 하던데 예제(UART/Printf)를 펌웨어를 업데이트 했는데 데이터 수신이 전혀 되지 않습니다
TTL-RS232를 통하여 윈도우 컴퓨터로 보고 있습니다
문서를 보면 UART1아 D14,D15이라서 오실로스코프로 측정해 봐도 시그널이 나오지 않습니다
감사합니다

  • 총 2개의 UART통신이 필요합니다 하나는 디버깅 메세지 출력용이고 하나는 다른 장비와 통신하는 용도 입니다 예제를 보면 UART0, UART1이 있는데요
    회로도를 보면 UART0(PB2, PB3)이 SD_MOSI, SD_MISO에 연결이 되어 있네요…

안녕하세요.

WIZwiki-W7500P의 경우 TCP/IP Stack이 Coretex-M0 내부에 구성되어 있기 때문에,

SPI신호를 사용하지 않으셔도 됩니다.

그리고 Arduino Compatible pin 사용을 목적으로 두신다면,

PA13, PA14가 UART0으로 사용하시면 되구요, 말씀하신 D14, D15는 내부 코드에서 Alternative function으로 셋팅을 해주셔야

UART1이 사용 가능합니다.

참고로 말씀드리자면 UART는 TX,RX만으로도 통신이 가능합니다.

이점 참고하셔서 코드를 수정하셔야 합니다.

감사합니다.

안녕하세요.

추가적으로 첨언을 드리자면…

아래는 W7500P의 peripheral 표입니다.

참고해주세요.

wizwiki.net/wiki/doku.php?id=pro … herals:afc

감사합니다.

안녕하세요.

답변 드린 내용을 수정하겠습니다.

말씀하신 것이 SD_MISO, SD_MOSI네요… 제가 잘못봤습니다.

일단 SPI신호는 CS 신호로 컨트롤이 되기 때문에 그건 코드상으로 수정을 해주셔야하는 부분입니다.

다시 처음으로 돌아와서 말씀드리자면, UART1 initialize가 안된 것으로 판단이 됩니다.

그래서 어떤 예제코드를 사용하셨는지 알려주시면 감사하겠습니다.

코드를 확인해보아야 답변이 가능할 것 같습니다.

감사합니다.

빠른 답변 감사합니다 ^^;
github.com/Wiznet/W7500P 여기에서 파일을 다운 받았구요
UART/Printf아래 예제를 사용하였습니다.
감사합니다.

안녕하세요.

한 번 테스트를 진행보아야 할 것 같습니다.

테스트를 진행해보고 결과 알려드리도록 하겠습니다.

감사합니다.

테스트 진행 상황을 알고 싶습니다
감사합니다.

안녕하세요.

답변이 늦어 죄송합니다.

일단 W7500P는 Default로 UART2번을 사용하고 있습니다. 이는 USB로 사용하고 있는데요.

그리고 말씀하신 Pinout은 WIZwiki-W7500 보드로 생각됩니다. WIZwiki-W7500P보드는 SPI신호와 연결되어 있지않습니다.

아래 wiki사이트의 WIZwiki-W7500P Pinout을 보시면 D14와 D15는 U_TXD1, U_RXD1에 연결되어 있는데, 이를 사용하기 위해서는

Alternative function으로 셋팅 후 사용하셔야 합니다.

wizwiki.net/wiki/doku.php?id=pro … p_projects

alternative function은 GPIO에서 설정이 가능합니다.

이용하신 예제 코드중 W7500_PEriph 폴더의 오른쪽 클릭 후 Add Existing Files… 를 클릭하신 후

W7500P_FW -> Libraries -> W7500x_stdPeriph_Driver -> src -> W7500x_gpio 를 선택해서 추가하셔야 합니다.

그리고 PAD_AFConfig 함수 부분을 사용해서 I/O 핀을 alternative function 3번으로 변경해주셔야 UART1을 사용하실 수 있습니다.

추가로 UART0번은 D0 , D1에 Default로 되어 있네요.

확인 부탁드립니다.

감사합니다.

안녕하세요.

추가 답변드립니다.

W7500에는 3개의 UART가 존재합니다.

UART0, 1, 2가 있습니다.

UART0, 1은 범용으로 사용되는 UART이구요. UART2는 Simple UART라고 TX와 RX 핀만으로 통신하는 기능입니다.

그래서 W7500에서 UART를 initialize를 할 때,

UART0,1 은 UART_init을 사용하고, UART2는 S_UART_init을 사용합니다.

그래서 UART0, 1을 사용하시려면 방금 말씀드린대로 initialize를 하여 사용하시면 동작합니다.

“그리고 W7500은 printf를 할 수 있는 것은 한 개 밖에 할 수 없습니다.”

이 말의 의미는 UART0으로 셋팅하면 UART0만 printf를 할 수 있으며, UART1를 셋팅하면 UART1만 printf를 할 수 있습니다.

또 이 말의 의미는 retarget.c 파일을 보시면,

#define USING_UART2

가 있는 것을 볼 수 있는데, 이 UART2가 현재 Printf로 출력을 하고 있다는 것을 말합니다.

그렇다면 UART0, 1을 initialize만 하면 동작을 해야하는 것이 정상일 것 입니다.

만약, 시리얼 메세지가 나오는 것을 확인하시려면 위에 define 문을 UART1로 바꿔서 해보세요. 그러면 데이터가 나가는 것을 확인할 수 있습니다.

그리고 테스트할 코드를 Polling쪽 코드를 참조하시는걸 추천드립니다.

위 코드로 테스트 한 번 진행해주세요.

감사합니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.