[ST_MICRO]/STM32F43x2015.03.07 20:00

[STM32F439 LCD EVM] MAC RAW Mode 를 이용한 EtherCat Test

[STM32F439 LCD EVM] MAC RAW Mode 를 이용한 EtherCat Test





W5300을 이용하여 EhterCat 테스트 진행할 때 가장 문제가 된 사항은 지연 현상이었다. EtherCat 스팩 특성상 통신 지연에 대한 이슈가 가장 큰데 

알수 없는 이유로 가끔씩 전송 지연이 발생해서 문제가 되었다.

이부분을 해결하기 위해 찾아 보던중 IEE1588 에 "Low deterministic latency supports IEEE1588" 를 발견했고 TI의 TLK106이 이를 지원하는 PHY 이라고 한다.


TLK106L 스펙을 보면   

TLK106L Industrial 10/100 Ethernet PHY

 - Low deterministic latency supports IEEE1588 implementation

 - Error-Free 100Base-T Operation up to 150 Meters Under Typical Conditions



TLK110 을 이용하면 ST에서 레퍼런스 하고 있는 DP83848 와 핀호환이 된다고 하는데... 일단 사이즈 문제로 TLK106으로 선정해서 테스트 했다.

TLK106 Phy와 고속의 STM32F439를 이용하면 저렴한 EtherCat 솔루션이 되지 않을까 생각한다.



테스트 결과 기존에 W5300 MAC Law 모드에서 나타나던 지연 현상이 없어졌고 상당히 고속의 EtherCat 통신이 가능하게 되었다.






테스트 결과

Slave 를 adStar에서 MAC RAW모드 구동하고 최대 속도로 계속 전송했을때 STM32F439보드에서 수신하는 속도는 최대 24us 정도로 측정된다.

데이터가 깨지거나 지연현상 없이 파형이 출력된다.

1ms 이상이면 되므로 충분한것 같다.




STM32F439 MAC RAW Mode를 이용한 EtherCat 전송 테스트 동영상



Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM32F43x2015.03.07 17:00

STM32F439 Ehternet 테스트

STM32F439 Ehternet 테스트


STM32 시리즈에는 Ethernet 을 위한 MAC 제어기가 포함되어 있고 외부에 Ethernet PHY만 연결하면 간단히 Ethernet 을 위한 제어가 가능하다.

STM32F439 EVM 보드에는 기본적으로 핀수가 줄어드는 RMII방식의 PHY가 포함되어 있고 경우에 따라서 기존에 제작해 둔 MII, RMII 모듈을 연결할 수 있는 커넥터가 있어 다양한 방법으로 이더넷 테스를 할 수 있다.

(참고로 STM32F439 EVM 보드에 내장되어 있는 PHY는  "Low deterministic latency supports IEEE1588" 를 지원하는 TI의 TLK106를 사용하였다.)





Ethernet Phy 연결하는방식에 따라 MII, RMII Mode로 가능하며 MII 방식은 25Mhz 클럭로 100T 전송이 가능하다.





RMII Mode에서는 데이터 라인이 절반으로 줄어들어서 9핀으로 가능하지만 클럭을 50Mhz를 공급해야 한다.

비용적인 측면을 고려 한다면 MII방식이 좀더 유리 한데 STM32F4의 내부 클럭에서 25Mhz공급하능하기 때문이다.

하지만 핀수를 줄여서 간단히 하고 싶다면 RMII 방식이 좋을것 같다.

테스트 용이라 RMII 방식으로 보드를 제작 했다.






STM32F429 Ethernet 초기화 코드


void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)

  GPIO_InitTypeDef GPIO_InitStructure;

  

  /* Enable GPIOs clocks */

  __GPIOA_CLK_ENABLE();

  __GPIOB_CLK_ENABLE();

  __GPIOC_CLK_ENABLE();


  //Ethernet pins configuration

  /*

        ETH_MII_RX_CLK/ETH_RMII_REF_CLK---> PA1

        ETH_MDIO -------------------------> PA2

        ETH_MII_RX_DV/ETH_RMII_CRS_DV ----> PA7


        ETH_MII_TX_EN/ETH_RMII_TX_EN -----> PB11

        ETH_MII_TXD0/ETH_RMII_TXD0 -------> PB12

        ETH_MII_TXD1/ETH_RMII_TXD1 -------> PB13


        ETH_MDC --------------------------> PC1        

        ETH_MII_RXD0/ETH_RMII_RXD0 -------> PC4

        ETH_MII_RXD1/ETH_RMII_RXD1 -------> PC5

                                                  */


  /* Configure PA1, PA2 , PA7 */

  GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;

  GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;

  GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;

  GPIO_InitStructure.Pull = GPIO_NOPULL ; 

  GPIO_InitStructure.Alternate = GPIO_AF11_ETH;

  HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);


  /* Configure PB5 and PB8 */

  GPIO_InitStructure.Pin = GPIO_PIN_11 | GPIO_PIN_12| GPIO_PIN_13;

  HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);


  /* Configure PC1, PC2, PC3, PC4 and PC5 */

  GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;

  HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);

                             

  /* Enable ETHERNET clock  */

  __ETH_CLK_ENABLE();

  

  if (heth->Init.MediaInterface == ETH_MEDIA_INTERFACE_MII)

  {

    /* Output HSE clock (25MHz) on MCO pin (PA8) to clock the PHY */

    HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1);

  }

}




Ehternet 을위한 프로토콜 스텍은 ST에서 제공하는 LwIP Third Party Lib 예제를 이용하였다.


Posted by nexp

댓글을 달아 주세요

[AVR]/Mega1282012.05.03 21:20

AMega128 Ethernet Test 보드 - 테스트 하기

AMega128 Ethernet Test 보드 - 테스트 하기

 

 

 

 소스코드
테스트 소스코드 는 TCP 서버 테스트를 위한 예제코드

 


 

//-----------------------------------------------------------------------------
//수신데이터 처리
void EthernetTest(unsigned char *pRcvBuffer, unsigned int len)
{
 unsigned int i;

 DebugPrint("Read Data[%d]\r\n", len);
 
 for(i=0;i<len;i++)
 {
  //if(i%16==0)DebugPrint("\r\n");
  DebugPrint("%c", pRcvBuffer[i]);
 }

 DebugPrint("\r\nReceive OK!\r\n");

 //-----------------------------------------------------------------------------

 

 


 

USB2UART 를 위해 USB를 연결하고, 랜 캐이블을 연결한다.

  

 

CP2012 칩의 드라이버 파일은 아래 링크에서 최신파일을 받을 수 있다.

  CP210x_VCP_Win2K.exe

 http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

 

 

 

펌웨어 다운로드 하고 USB 연결후 하이퍼 터미널(보레이트 115200bps)에 아래와 같이 레지스터 정보를 표시되면 정상동작을 확인할 수 있다.

 

 

코드상에서 보드의 IP를 설정할 수 있다. 여기서는 192.168.0.100 , Port 5000 으로 설정되어 있다.

 // MY Source IP     : 192.168.0.100
#define MY_SOURCEIP {192,  168, 0,  100}

 

// MY Listen Port  : 5000

#define MY_LISTEN_PORT 5000      

 

 


 

테스트용 PC프로그램

PC측 호스트 프로그램은 TCP루프백 테스트를 할 수 있는 AX 플그램을 사용한다.

 


 

 

기본 테스트하기

1) TCP 연결

 

 

보드 IP 192.168.0.100, 5000으로 접속

 

 

정상적으로 접속되면 메세지가 출력된다.

 

 

 

테스트 메세지 전송

 

 

테스트로 100개의 데이터 전송

 

 

 

수신된 데이터 확인

하이퍼 터미널에서 수신된 데이터를 확인 할 수 있다.

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC322011.09.10 16:42

[PIC32-SM EVM] 이더넷을 이용한 전자 액자 테스트

[PIC32-SM EVM] 이더넷을 이용한 전자 액자 테스트


PIC32와 W5200을 이용하여 이더넷으로 전자 액자의 이미지 출력 하는 테스트를 해 보았다.
이더넷을 이용하면 원격지에서 TFT-LCD의 이미지를 고속으로 전송해 출력 할 수 있기 때문에 여러가지 장점이 많다.

PIC32는 저렴하고, Flash/RAM 이 풍부하며 고속이기 때문에 임베디드 이더넷 예제로 사용하기에 좋다. 이더넷 처리는 SPI방식의 하드웨어 TCP/IP스택을 지원하는 W5200을 이용였고 PIC32의 20Mhz SPI로 구동시 양방향 8Mbps정도 이므로 충분히 처리 가능하다.


테스트는 이더넷 모듈, TFT LCD모듈, MP3 모듈을 연결할 수 있는 [EXP-NET] EVM보드를 이용하면 쉽게 테스트 가능하다.






PIC32 이더넷 전자 액자 테스트 동영상
PC의 이미지 파일을 열어 16Bit BMP파일로 변환하고 이를 이더넷 UDP로 전송하면 TFT LCD에 출력하는 예제이다. 보드측에서는 이더넷으로 이미지 파일을 전송 받아 출력하므로 별도의 메모리 없이 고속으로 이미지를 업데이트 할 수 있다.



기존 W5100을 이용하여 LCD_EXP EVM]보드와 CANTUS를 이용한 이더넷 전자액자 에서 테스트 했던 것과 비교하면 속도차이을 확인 할 수 있다.

")




이더넷 전송 PC프로그램

이더넷 전송 속도가  더 빨라졌기 때문에 이미지를 버퍼에 저장 했다 전송할 수 있도록 프로그램을 약간 수정하였다.







드라이버 파일


 

Posted by nexp

댓글을 달아 주세요

  1. 비밀댓글입니다

    2011.09.16 17:46 [ ADDR : EDIT/ DEL : REPLY ]

[AVR]/ATXmega2010.08.21 18:15

[ATXmega128A1 EVM] 보드 제작

[ATXmega128A1 EVM] 보드 제작



Atmel의 ATXmega128A1 EVM 보드를 제작 했다. 예전에 만들어 두었던 보드 인데 정리하면서 조립 했다. (XMega128A1 을 지인으로 부터 받아서..)

1.6~3.3V 에서32Mhz, 8개의 16bit timer, SPI 4채널, TWI 채널, USART 8채널, DMA 지원하고, SDRAM도 연결가능하니 나쁘지 않다.



기존 제작된 보드와 핀맵을 호환 되도록 했고 USB2UART나 Bluetooth모듈을 연결할 수 있다.
IR센서를 연결 할 수 있어 리모콘 수신 테스트를 해 볼수 있다.



포트가 풍부하다 보니(SPI 4채널) 뒷면에 T-Flash 연결 가능하도록 했다.


확장 테스트 보드
TFT-LCD테스트 확장 모듈


이더넷 테스트 확장모듈
사실 XMega128 보드 제작 동기는 8채널 Serial to Ethernet모듈 제작 테스트를 위해서 이다. XMega64의 경우 UART 8채널에 3$대로 구매 할수 있기 때문에 저렴하게 8채널 Serial to Ethernet모듈 제작이 가능하다. 특히나 Wizet의 W5300은 8개의 포트를 지원하는 하드웨어 TCP/IP이므로 쉽고간단히 그리고 저렴한 Seral To Ethernet 모듈을 제작 할 수 있다.



ATXmega128A1 테스트 동영상


XMega128a1 TFT LCD테스트 동영상



Posted by nexp

댓글을 달아 주세요