ST-LINK/V2

ST-Link V2는 ST Microelectronics의 STM8 and STM32 Microcontroller Families의 모든 제품에 사용 가능한 In-Circuit Debugger and Programmer 입니다. JTAG/SWD인터페이스를 이용해서 STM8 와 STM32에 프로그램 라이팅, 디버깅을 할 수 있습니다

 

 

특징

  • 5 V power supplied by USB connector.
  • USB 2.0 full speed interface compatible.
  • USB standard A to Mini-B cable provided.
  • SWIM specific features:
    • 1.65 V to 5.5 V application voltage supported on SWIM interface.
    • SWIM low speed and high speed modes supported.
    • SWIM programming speed rate:
      • 9.7 Kbytes/s in low speed,
      • 12.8 Kbytes/s in high speed.
    • SWIM cable for connection to an application with an ERNI standard connector vertical (ref: 284697 or 214017) or horizontal (ref: 214012).
    • SWIM cable for connection to an application with pin headers or 2.54 mm pitch connector.
  • JTAG/serial wire debugging (SWD) specific features:
    • 1.65 V to 3.6 V application voltage supported on the JTAG/SWD interface and 5 V tolerant inputs.
    • JTAG cable for connection to a standard JTAG 20-pin pitch 2.54 mm connector
    • JTAG supported
    • SWD and serial wire viewer (SWV) communication supported
  • Direct firmware update feature supported (DFU)
  • Status LED which blinks during communication with the PC
  • Operating temperature 0 to 50 °C
  • 2500 VRMS high isolation voltage (ST-LINK/V2-ISOL only)

 

핀번호

 

드라이버

최신 ST-Link V2 드라이버는 화이트앳 ST-Link 드라이버 자료실(http://whiteat.com/index.php?mid=sw_pds&package_srl=228213) 에서 받으실수 있습니다.

 

사용예

ST-LINK V2 는 STM32 ST-LINK Utility ,  KEIL uVision 에서 사용할 수 있습니다.

 

연결

컴퓨의 USB에 USB 케이블을 연결하고 20핀 플랫케이블은 STM8 또는 STM32 보드에 연결합니다.

ST-LINK 에서는 보드에 전원을 공급해주지 않습니다. 필히 보드에 별도의 전원을 공급해줘야 합니다.

 

STM32 ST-LINK Utility 에서 사용

STM32 ST-LINK Utility 로 ST-LINK V2 를 사용하는 방법입니다.

http://docs.whiteat.com/?p=3048  

   

  

 

 


KEIL uVision에서 사용

KEIL uVision 로 ST-LINK V2 를 사용하는 방법입니다.

http://docs.whiteat.com/?p=3050

   

   

   

 

제품 구매

ST-LINK V2 제품은 http://kit128.com/goods/view?no=189 에서 구매하실 수 있습니다.


Posted by WhiteAT

댓글을 달아 주세요

 

ZEO-S 모듈의 I/O, ADC, PWM을 실험할 수 있는 보드 입니다.

 

ZEO-S 를 장착하지 않은 상태

 

 

 

 

ZEO-S 를 장착한 상태

 

 

 

ZEO-S 의 연결 핀

 

ZEO-IO2 보드

ZEO-S

CDS

CDS1

PB13*

CDS2

PB14*

CDS3

PB15*

CDS4

PA16*

CDS5

PA15

CDS6

PA14

CDS7

PA13*

CDS8

PA12*

LED

D1

PA3

D2

PA4

D3    

PA5

D4

PA6

D5

PA7

D6

PA8

D7

PA9

D8

PB12

D14

PB0

D15

PB1

D16

PB2

D17

PB3

D18

PB4

D19

PB5

D20

PB6

D21

PB7

SERVO

SERVO1

PA0

SERVO2

PA1

SERVO3

PA2

SERVO4

PA10

SERVO5

PA11

SERVO6

PA12*

SERVO7

PA13*

SERVO8

PA16*

SERVO9

PB13*

SERVO10

PB14*

SERVO11

PB15*

 

* 표시는 ADC 와 PWM 기능이 있는 핀이며 다음과 같이 딥스위치로 선택하여 사용합니다.

 

DIP 스위치

ON

OFF

1

SERVO4 사용

2

SERVO5 사용

3

CDS8 사용

SERVO6 사용

4

CDS7 사용

SERVO7 사용

5

CDS4 사용

SERVO8 사용

6

CDS1 사용

SERVO9 사용

7

CDS2 사용

SERVO10 사용

8

CDS3 사용

SERVO11사용

 

 

원문: http://whiteat.com/Product_ZEO/186932

 

Posted by WhiteAT

댓글을 달아 주세요

 

ZEO-S 로 ADC 을 실험해 보겠습니다.

 

 

 

준비

 

먼저 ZEO-S 의 PB13 핀에 360hz 파형을 입력으로 합니다.

(360hz 파형은 Function Generator 를 이용하시거나 DAC 기능이 있는 MCU 로 만들 수 있습니다. )

 

 

 

 

 

분석 1

 

47.619Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

 

그래프의 397 픽셀 동안 3개의 파형이 발생합니다.

즉 1주기는 약 132 픽셀에 나타납니다.

 

47.619 Khz / 132 는 약 360 Hz 로 계산됩니다.

 

360Hz 의 파형을 47.619 Khz로 정확히 샘플링 합니다.

 

 

 

 

 

 

 

 

분석 2

 

142.857 Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

그래프의 397 픽셀 동안 1개의 파형이 발생합니다.

즉 1주기는 약 397 픽셀에 나타납니다.

 

142.857 Khz / 397 는 약 360 Hz 로 계산됩니다.

 

360Hz 의 파형을 142.857 Khz로 정확히 샘플링 합니다.

 

 

 

 

 

 

 

분석 3

 

176.470 Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

 

 

그래프의 490 픽셀 동안 1개의 파형이 발생합니다.

즉 1주기는 약 490 픽셀에 나타납니다.

 

176.470 Khz / 490 는 약 360 Hz 로 계산됩니다.

 

360Hz 의 파형을 176.470 Khz로 정확히 샘플링 합니다.

 

 

 

 

 

 

 

분석 4

 

142.857 Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

그래프의 397 픽셀 동안 1개의 파형이 발생합니다.

즉 1주기는 약 397 픽셀에 나타납니다.

 

142.857 Khz / 397 는 약 360 Hz 로 계산됩니다.

 

360Hz 의 파형을 142.857 Khz로 정확히 샘플링 합니다.

 

 

 

 

 

분석 3

 

222.222 Khz 로 샘플링을 하면 아래와 같이 됩니다.

 

 

 

 

 

그래프의 617 픽셀 동안 1개의 파형이 발생합니다.

즉 1주기는 약 617 픽셀에 나타납니다.

 

222.222 Khz / 617 는 약 360 Hz 로 계산됩니다.

 

 

360Hz 의 파형을 222.222 Khz로 샘플링하게 되면 손실데이터가 발생하는데, 이는

ZEO-S 에 있는 ADC 데이터를 컴퓨터에서 빠르게 가져오지 못해 발생하는 겁니다.

(위 그림에서는 2151개의 손실 데이터 발생)

 

이 문제를 해결할 수 있는 방법이 몇 가지 있습니다.

  • 컴퓨터 하드웨어 업그레이드
  • ZEO 용 응용 프로그램 외 모든 프로세스 종료(특히 인터넷, 백신)
  • 메모리가 큰 ZEO-M 으로 대체

 

 

ZEO-S 의 빠른 ADC 데이터 처리는 컴퓨터 사양에 큰 영향을 받습니다.

손실된 데이터 값을 잘 체크하여 최대의 샘플링 주기를 찾으셔야 합니다.

 

 

출처: http://whiteat.com/46280

 



Posted by WhiteAT

댓글을 달아 주세요

 

ZEO-S 모듈의 I/O를 실험할 수 있는 보드 입니다.

INPUT, OUTPUT, PWM 등을 실험할 수 있습니다.

 

 

ZEO-S 를 장착하지 않은 상태

 

 

 

 

ZEO-S 를 장착한 상태

 

 

 

ZEO-S 의 연결 핀

 

IO 보드

ZEO-S

스위치

SW1

PA12

SW2

PA13

SW3

PA14

SW4

PA15

SW5

PB12

SW6

PB13

SW7

PB14

SW8

PB15

LED

D1

PA0

D2

PA1

D3    

PA2

D4

PA3

D5

PA4

D6

PA5

D7

PA6

D8

PA7

D9

PA8

D10

PA9

D11

PA10

D12

PA11

D13

PA16

D14

PB0

D15

PB1

D16

PB2

D17

PB3

D18

PB4

D19

PB5

D20

PB6

D21

PB7

D22

PB8

D23

PB9

D24

D25

PB10

PB11

 

 

 

 

 

원문: http://whiteat.com/87092 

 

Posted by WhiteAT

댓글을 달아 주세요

 

실험 키트

 

WAT-AVR128 모듈 알아보기

WAT-IO&ADC 모듈 알아보기

 

 

 

 

 

 

 

ATMEGA128 모듈에 연결

 

WAT-AVR128 모듈의 PORTA는 LED, PORTB는 DIP SWITCH, PORTC는 FND SELECT, PORTE는 FND DATA, PORTE는 ADC 에 연결하여 PC 프로그램에서 제어 및 상태를 실시간으로 모니터링 하는 예제입니다.

 

 

 

WAT-AVR128 모듈

WAT-IO&ADC 모듈

PORTA

FND DATA

PORTB

 

PORTC

FND SELECT, ROTARY SWITCH

PORTD

DIP SWITCH

PORTE

LED

PORTF

ADC

 

 

ATEMGA128 펌웨어 코드

  /*

    USART0 로보드의상태PC로전송

    PC에서LED, BUZZER, FND 제어

    AVRStudio 4.18

*/

 

#include <avr/io.h>

#include "WAT128.h"

 

BYTE g_FNDData[4]={1,2,3,4};

BYTE g_BUZZER = 0;

BYTE g_LED = 0;

 

UINT16 g_adcCDS;    // CDS 값보관

UINT16 g_adcVR;    // 가변저항값보관

 

void OperDisplayFND()

{

    DisplayFND4(g_FNDData[0],g_FNDData[1],g_FNDData[2],g_FNDData[3]);

}

 

INT16 g_byteOperPCTXTimer = 0;

void OperPCTX()

{

    if(--g_byteOperPCTXTimer>0)

        return;

 

    PutChar0(0x02);                        // 0 시작신호

    PutChar0(PIND);                        // 1 DIP SWITCH

    PutChar0(GetRotaryInt());             // 2 ROTARY

    PutChar0(g_adcCDS>>8);                // 3 CDS 상위값

    PutChar0(g_adcCDS);                // 4 CDS 하위값

    PutChar0((g_adcVR)>>8 &0xFF); // 5 가변저항상위값

    PutChar0(g_adcVR&0xFF);                // 6 가변저항하위값

    PutChar0(0x03); // 7

    PutChar0(0xCC);                        // 8 체크섬

    PutChar0(0x03);                        // 9 끝신호

 

    g_byteOperPCTXTimer = 20;

 

}

 

// 가변저항, CDS 값을ADC로읽기

void OperReadADC()

{

    INT16 uiTemp; // 임시변수

 

    g_adcCDS = 0;

    // 노이즈를생각해서값을번읽어평균을낸다.

 

    for(uiTemp = 0; uiTemp<16;uiTemp++)

    {

        ADMUX=0x40 | 0x00;

        ADCSRA = 0xD7;

        while((ADCSRA & 0x10) != 0X10);

        g_adcCDS += ADCL + (ADCH*256);

    }

 

    g_adcCDS>>=4;

 

    g_adcVR = 0;

    // 노이즈를생각해서값을번읽어평균을낸다.

 

    for(uiTemp = 0; uiTemp<16;uiTemp++)

    {

        ADMUX=0x40 | 0x01;

        ADCSRA = 0xD7;

        while((ADCSRA & 0x10) != 0X10);

        g_adcVR += ADCL + (ADCH*256);

    }

 

    g_adcVR>>=4;

}

 

int main()

{

 

    BUZZER_INIT; // BUZZER 초기화

    OpenSCI0(115200);    // USART 0 열기 

    InitFND4(); // FND 초기화 

    InitADC();    // ADC 초기화

 

    DisplayFND4(3,4,5,6);

    InitRotary();

    

    DDRD = 0x00; // 딥스위치를입력으로설정

    DDRE = 0xFE; // LED

 

 

    while(1)

    {

        BUZZER_OFF;

        OperDisplayFND();

        OperReadADC();

        

        OperPCTX();

 

        if(0x02 ==GetByte0())

        {

            UINT16 uiData = 0;

            uiData = GetByte0(); //1

            uiData<<=8;

            uiData += GetByte0(); //2

 

            //buzzer

            g_BUZZER = GetByte0();

 

                

            g_LED =    GetByte0(); //4

            GetByte0(); //5

            GetByte0(); //6

            GetByte0(); //7

            if(0xCC == GetByte0() && 0x03 == GetByte0() )

            {

                if( g_BUZZER)

                {

                    BUZZER_ON;

                    DelayMS(2);

                }

 

                // PC에서받은LED 값을출력

                PORTE =~((g_LED)&0xFC);

 

                // FND 표시

                g_FNDData[0]=((uiData/1000)%10);

                g_FNDData[1]=((uiData/100)%10);

                g_FNDData[2]=((uiData/10)%10);

                g_FNDData[3]=(uiData%10);

            }

        }    

    }

} 

 

윈도우 코드(통신 처리 부분)

try

{

        // 이번에 수신된 데이터 m_byteArray(QUEUE) 에 넣기

        for( int i=1; i<=nRcvSize; i++ )

        {

            m_byteArray.Add(m_CommPort.m_byRcvBuf[i]);

        }

        

        // 시작 신호 체크

        while(m_byteArray.GetSize()>0)

        {

            if(m_byteArray.GetAt(0) != 0x02)

            {

                m_byteArray.RemoveAt(0);

                continue;

            }

            else

            {

                break;

            }

        }

        

        CString strData;

        CString strTemp;

        if(m_byteArray.GetSize()>=10)

        {

            if(m_byteArray.GetAt(0) == 0x02 && m_byteArray.GetAt(9) == 0x03)

            {

                // DIP SWITCH 체크

                byteTemp = m_byteArray.GetAt(1);

                

                UpdateData(TRUE);

                m_bDIP8 = ((byteTemp & 0x80)!=0x80);

                m_bDIP7 = ((byteTemp & 0x40)!=0x40);

                m_bDIP6 = ((byteTemp & 0x20)!=0x20);

                m_bDIP5 = ((byteTemp & 0x10)!=0x10);

                m_bDIP4 = ((byteTemp & 0x08)!=0x08);

                m_bDIP3 = ((byteTemp & 0x04)!=0x04);

                m_bDIP2 = ((byteTemp & 0x02)!=0x02);

                m_bDIP1 = ((byteTemp & 0x01)!=0x01);

                

                // 로터리 스위치 값 읽기

                m_strRotary.Format("%d",m_byteArray.GetAt(2));

                

                // CDS 값 읽기

                uiTemp = m_byteArray.GetAt(3);

                uiTemp <<=8;

                uiTemp += m_byteArray.GetAt(4);

                m_prgCDS.SetPos(1023 - uiTemp);

                

                // 가변저항 값 읽기

                uiTemp = m_byteArray.GetAt(5);

                uiTemp <<=8;

                uiTemp += m_byteArray.GetAt(6);

                m_prgVR.SetPos(1023 - uiTemp);

                

                // 화면 갱신

                UpdateData(FALSE);                

            }

            

            // 마지막에 처리한 데이터 보기

            for(int i=0;i<10;i++)

            {

                strTemp.Format( "%02X ", m_byteArray.GetAt(i) );

                strData+=strTemp+ " ";

            }

            strData+= "\n";

            

            m_byteArray.RemoveAt(0,10);            

        }        

        

        m_ReceiveData = strData;        

        UpdateData(FALSE);

        

}

catch (CException* )

{

        

}

 

 

윈도우 프로그램에서 FND에 5634, LED 모두 OFF 값을 전송하며 ATMEGA128 보드에서 딥 스위치4번 OFF, CDS값 최대, 가변저항 값 최소, 로터리 스위치 값 3을 전송되면 아래와 같이 됩니다.

< WAT-IO&ADC에 연결한 윈도우 프로그램 >

윈도우 프로그램에서 FND에 5667, LED 3,5,7번 ON 값을 전송하며 ATMEGA128 보드에서 딥 스위치1,3,5,7,번 ON, CDS값 최대, 가변저항 값 최대, 로터리 스위치 값 9을 전송되면 아래와 같이 됩니다.


 

 

다운로드



매뉴얼: pdf.gif WAT-IO_ADC매뉴얼.pdf

펌웨어EX_09_03.zip

윈도우 프로그램(MFC 6.0):실행파일.EXE

윈도우 프로그램(C# 2008): 실행파일.EXE
(
실행파일의 소스코드는 제품과 함께 제공됩니다.)

 


출처: http://whiteat.com/60193


Posted by WhiteAT

댓글을 달아 주세요

 

 

ATMEGA128 컨트롤러의 컴파일툴은 AVRStudio, Codevision, IAR 등이 있습니다. 이러한 컴파일툴의 대부분 유료이며 잘 알려진 무료 컴파일툴은 AVR Studio입니다. Codevision 은 유료이나 코드위저드가 있어 초기에 코드 생성할 때 편리합니다. IAR 은 주로 업체에서 사용되는 컴파일툴입니다.

 

 

소스 컴파일툴

 

 

AVRStudio 와 WinAVR 로 컴파일 할 수 있습니다. AVRStudio 는 코딩하는데 편리한 환경을 제공하고 WinAVR 은 컴파일러를 제공합니다.

 

 

프로그램 다운로드

http://www.atmel.com 에 가입 후 AVRStudio 프로그램을 다운받을 수 있습니다.

http://winavr.sourceforge.net/ 에서 가입 없이 WinAVR을 다운받을 수 있습니다.

 

 

 

프로그램 설치

먼저 WinAVR을 설치한 후 AVRStudio를 설치합니다.

 

AVRStudio 는 컴파일을 쉽게 도와주는 툴을 제공하고

WinAVR 은 여러 헤더파일과 라이브러리와 컴파일러(AVR-gcc)를 제공합니다.

 

 

 

 

 

 

먼저 새로운 프로젝트를 생성한다.

 

 

 

 

 

 

다음으로 프로젝트명을 결정 한다

 

 

 

 

 

 

 

 

Finish를 눌러 종료하면, 이제 소스를 편집할 수 있는 창이 열린다.

이제 코딩하면 된다.

 

 

 

 

 

 

간단하게 소스를 편집하고,

#include <avr/io.h>

 

int main(){

DDRB = 0xFF; // output

PORTB = 0xFF; // LED ON

return 0;

 

}

 

 

 

 

 

 

Build and Run 를 실행하여 test1.hex 파일이 생성되었는지 확인합니다.

라이팅 하는 방법은 http://whiteat.com/56165 에 있습니다.

 

출처: http://whiteat.com/260 

 

 

 

Posted by WhiteAT

댓글을 달아 주세요

WAT-AVR128 모듈

AVR키트 2011. 7. 20. 15:53


제품 소개

 

WAT-AVR128 Module은 Atmel 의 ATMEGA128A을 장착한 모듈로 ATMEGA128A 구동에 필요한 기본적인 부품과 회로를 포함하고 있으며, SP3232 RS-232C IC를 장착하여 PC와의 통신을 쉽게 할 수 있게 도와주는 제품입니다.

 

특징

 

 

사용 전압: 3.3V ~ 5.0V

AD 채널 수: 8채널 10bit

CLOCK: 11.0592 Mhz (보레이트 115200bps에서 오류률 0%)

시리얼 통신: 2채널

2채널을 TTL LEVEL 레벨과 RS-232C 레벨의 두 가지 모두 제공

ISP: ISP 커넥터 제공

크기: 40.6(가로) x 48.8mm (세로)

소켓: 2.54mm 2줄 핀 헤더 사용

 

 

 

 

 

 

 


 

 

외부 장치 연결

 

 

핀 정의

 

좌 측

우 측

1. VCC

2. VCC

41. VCC

42. VCC

3. ADC7/TDI

4. ADC6/TDO

43. AD0

44. AD1

5. ADC5/TMS

6. ADC4/TCK

45. AD2

46. AD3

7. ADC3

8. ADC2

47. AD4

48. AD5

9. ADC1

10. ADC0

49. AD6

50. AD7

11. AREF

12. AVCC

51. ALE

52. NC

13. PE0

14. PE1

53. A15

54. A14

15. PE2

16. PE3

55. A13

56. A12

17. PE4

18. PE5

57. A11

58. A10

19. PE6

20. PE7

59. A09

60. A08

21. GND

22. GND

61. GND

62. GND

23. PB0

24. PB1

63. /RD

64. /WR

25. PB2

26. PB3

65. PD7

66. PD6

27. PB4

28. PB5

67. PD5

68. PD4

29. PB6

30. PB7

69. PD3

70. PD2

31. NC

32. NC

71. PD1

72. PD0

33. PG3

34. PG4

73. TXD0_12V

74. RXD0_12V

35. nRESET

36. NC

75. TXD1_12V

76. RXD1_12V

37. GND

38. GND

77.GND

78.GND

 

 

ISP 핀

10핀 ISP용 커넥터를 제공하여 ISP로 프로그램 라이팅이 가능합니다.

아래처럼 보드 좌측의 1번과 10p 플랫케이블의 적색 1번 핀 방향을 맞춰서 연결해야 합니다.

 




 

 

RS-232C 통신용 핀

 

RS-232C용 통신에 사용되는 핀은 3핀으로 구성되어 PC와의 통신 연결이 쉽습니다.

 

 

 

 

외부 장치 연결

 

핀헤더 소켓을 사용하여 외부 장치와 연결하여 사용할 수 있습니다.

 

WAT-AVR128_EXT 보드(확장 보드)를 사용하면 외부 보드와 쉽게 연결 할 수 있습니다.



 







WAT-KEY 4x4 예제

 

WAT-KEY 4x4 배열을 PC 에서 실시간으로 모니터링 하는 예제

http://avr128.com/27

 

 

 

 

WAT-IO&ADC 예제

 

로터리 스위치의 값을 FND 4자리 중 제일 앞자리에 표시하는 예제

http://avr128.com/25

 

가변 저항의 값에 따라 LED 를 켜는 예제

http://avr128.com/24

 

 

 



매뉴얼  (최신 자료는 http://whiteat.com/57204 에서 제공됩니다.)

WATAVR128_manual.pdf


 

예제 소스  

AVR128_example.zip

 


회로도

WATAVR128_sch.pdf




Posted by WhiteAT

댓글을 달아 주세요