[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 전송 테스트 동영상



STM32F439 Ehternet 테스트

[ST_MICRO]/STM32F43x | 2015.03.07 17:00
Posted by nexp

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 예제를 이용하였다.


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개의 데이터 전송

 

 

 

수신된 데이터 확인

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

 

 

 

 

 

 

[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프로그램

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







드라이버 파일


 

[ATXmega128A1 EVM] 보드 제작

[AVR]/ATXmega | 2010.08.21 18:15
Posted by nexp
[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테스트 동영상



[WiFi] Wiz610wi 테스트 보드 제작 - WiFi 테스트


Serial2WiFi 모듈 WIZ610을 테스트 하기 위한 보드를 제작 했다. AP기능이 있으므로 PAD폰, iPhone, 안드로이드폰등의 모바일 기기에서 쉽게 접속하여 무선 이더넷이 가능하다.
모듈의 커넥터가 1.27mm 헤더핀이고 안테나도 고정하기 쉽지 않아 일반테스트 하기에 어려움이 있어 쉽게 테스트 할 수 있도록 제작했다.



WIZ610 WiFi 모듈을 TCP서버로 설정하고 TPC포트로 접속하면 데이터를 쉽게 송수신 할수 있다. 서버쪽 모듈에서는 단순히 WiFi로 전송되는 이더넷 데이터를 시리얼로 송수신 할수 있다. 간단히 테스트 할수 있는 TCP클라이언트 프로그램을 C#으로 제작 했다.



WIZ610 WiFi 모듈 테스트
노트북을 이용하여 TCP서버로 구동되고 있는 원격지의 모듈에 접속해서 보드의 LED를 On/Off하는 예제 작성해 보았다.
WiFi모듈은 특성상 전류를 상당히 많이 소비하기 때문에(500mA정도) 대형 니카드 밧데리로 연결해서 테스트 했다.



테스트 동영상


[W5100 EVM] 소형 하드웨어 TCP/IP 모듈 제작


새로운 형태의 Wizenet W5100 EVM보드를 제작 했다. 기존 모듈보다 좀더 제작하기도 쉽고 작으면서 SPI관련 회로를 추가해서 제작했다.
소형이 목적이기 때문에 SPI, Indirect모드만 지원한다. 특히 SPI의 경우 속도는 좀 느리지만 4핀만 연결하면 되므로 상당히 간단히 연결 할 수 있다.








W5100 회로도 및 커넥터 핀맵

실제 보드상의 실크와 회로도가 좀금 다르게 되었는데... 아래 실제 핀맵은 회로를 이용하면 된다.


새롭게 제작하면서 추가된 사항은 SPI_EN핀을 따로 설정하지 않아도 자동으로 설정될 수 있도록 인버터를 추가 하였다. 위즈넷사의 버그(?)중 SPI를 멀티로 연결했을때(특히 SPI모드가 같을때) 인식이 잘 안되는 현상을 해결하기 위한 방법이기도 하므로 새로 제작한 모듈을 이용하면 SPI라인에 멀티로 연결할 수 있다.




W5100 확장 테스트 보드
EXP_ARM EVM







Ethernet Test Board 제작

[INTERFACE]/Ethernet | 2009.05.21 22:55
Posted by nexp
Ethernet Test Board 제작



테스트 보드 만들면서 Ethernet Module을 테스트 할 수 있는 보드를 제작했다.
W5100 모듈을 연결하거나, Enc28j60 모듈을 연결할 수 있는 보드로 표준 핀맵을 가진 S-Type, [SM-Type EVM] MCU를 이용하여 ARM7, Cortex-M3, AVR, MSP430, PIC 등 다양한 MCU를 적용가능하다.



소형의 W5100 모듈 적용하여 간단한 이더넷 테스가 쉽게 가능하다.




UART, ADC, PWM, DIO, I2C, SPI 등의 기본 핀들은 모두 빠져 있어서 임베디드 웹서버(Webserber) 테스트 하기 쉽도록 했다.






[PIC18f6x EVM] PIC18F67J60 Ethernet MCU


Microchp사의 이더넷 컨트롤러 + PIC18 PIC18F67J60 테스트 보드를 제작 했다. 이더넷 가능한 모듈로 최대한 소형으로 제작하려고 했고 기존 700mil간격 보드와 핀 호환되로록 했다. 아래면에서 최대 8Mbyte까지 가능한 시리얼 플래시 메모리도 포함하여 간단한 웹서버 제작에 적합하도록 했다.
PIC18F67J60 관련 자료



EthernetToRS485 보드 제작

[INTERFACE]/WIZNET_EVM | 2008.11.12 20:06
Posted by nexp
EthernetToRS485 보드 제작

EhternetToRS485 프로젝트 진행을 위해 STM32와 W5100을 이용하여 Ethernet To RS485 / RS422 통신 보드를 제작 하였다.
오늘 PCB가 들어와서 열심히 땜질중...



RS485통신 인터페이스

블로그 이미지

nexp

카테고리

분류 전체보기 (1560)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (129)
[FreeScale] (31)
[MSP430] (140)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (213)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (129)
[SENSOR] (41)
[DATA] (21)
[FPGA] (32)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)