[MCU]/CANTUS2011. 10. 25. 17:28

[CANTUS-EX EVM] 보드 제작

[CANTUS-EX EVM] 보드 제작


국산 32비트 MCU CANTUS 를 테스트 할 수 있는  보드를 제작했다. 기존의 M-Type [CANTUS EVM] 보드 는 범용으로 제작되었기 때문에 CANTUS의 기능을 모두 적용하려면 확장 보드가 필요한데... 고민하다 CANTUS의 특징을 활용할 수 있는 보드를 제작해 보기로 했다.

기본적인  CANTUS기능을 테스트 할 수 있도록 SDIO, ADC, DAC, Voice Codec을 테스트 할 수 있도록  했고, 기존에 제작 해 두었던 이더넷, TFT LCD모듈, WiFi 모듈 등을 연결 할 수 있다.





이더넷 모듈
CANTUS는 저렴하면서도 외부 메모리 확장이 가능하므로 하드웨어 TCP/IP모듈인 W5100을 적용하면 고속으로 이더넷 전송이 가능하다. 이를 위해 메모리 제어 방식으로 W5100을 연결할 수 있도록 했다.





TFT-LCD
역시 고속의 메모리제어 방식으로 TFT-LCD모듈을 연결하여 좀더 고속으로 LCD제어를 할 수 있도록 했다.




CANTUS-EX 보드를 이용하면 이더넷으로 이미지를 전송하여 LCD에 표시하거나 오디오 파일을 전송하여 출력하는 인터넷 라디오 기능을 저렴한 가격으로 구현할 수 있을것 같다.

테스트 동영상

네트웍을 이용한 영상 전송 테스트이다.

 

네트웍을 이용한 음성 전송 테스트

Posted by nexp

댓글을 달아 주세요

[MCU]/CANTUS2011. 10. 1. 23:24

[CANTUS EVM] W5200을 이용한 TCP/IP 전송 속도 테스트

[CANTUS EVM] W5200을 이용한 TCP/IP 전송 속도 테스트


CANTUS는 데이터 버스가 있기 때문에 궂이 SPI을 통해 제어할 필요는 없지만 SPI속도가 23Mhz라 테스트 해 볼만하다.
[NET-EVM] 보드를 이용하녀  SPI만 지원하는 W5200 모듈의 TCP 전송속도를  테스트 해 보았다.

SPI 최대 클럭이 23Mhz 일때 전송 속도는 2.38Mbps가 출력 된다.





W5200 드라이버 코드
//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT     
#define W5100_CS_BIT     BIT5
#define W5100_RST_BIT     BIT4

#define W5100_IO_INIT()     Sbi(*R_PAF4, (3<<(2*5)));Sbi(*R_P4oDIR, W5100_CS_BIT);\
          Sbi(*R_PAF2, (3<<(2*4)));Sbi(*R_P2oDIR, W5100_RST_BIT)

#define IINCHIP_CSoff()     Sbi(*R_P4oLOW, W5100_CS_BIT)
#define IINCHIP_CSon()     Sbi(*R_P4oHIGH, W5100_CS_BIT)

#define IINCHIP_SPI_INIT()    SPI0_Init()
#define IINCHIP_SpiSendData    SPI0_WriteReadByte
#define IINCHIP_SpiRecvData    SPI0_WriteReadByte

#define IINCHIP_RSToff()    Sbi(*R_P2oLOW, W5100_RST_BIT)
#define IINCHIP_RSTon()     Sbi(*R_P2oHIGH, W5100_RST_BIT)
//-----------------------------------------------------------------------------

Posted by nexp

댓글을 달아 주세요

[MCU]/CANTUS2011. 9. 3. 08:14

[CANTUS EVM] WiFi 모듈 테스트 - 무선랜을 이용한 DAQ (24bit ADC) 테스트

[CANTUS EVM] WiFi 모듈 테스트 - 무선랜을 이용한 DAQ (24bit ADC) 테스트


Serial to WiFi Module (WIZ6100wi)을 이용하여 무선 데이터 수집 장치를 만들어 보았다.
무선랜을 간편하게 사용할 수 있는 WiFi모듈을 이용하면 고속의 데이터를 인터넷으로 손쉽게 수집할 수 있다.

MCU는 저렴하고 RAM이 풍부한 ADChip사의 CANTUS를 이용하고 USB2Serial 커넥터에 WiFi모듈을 연결 하였다.


데이터 수집은 SPI인터페이스의 24비트 ADC모듈을 이용하고 펑션으로 사인파를 입력 하여 테스트 했다.



무선랜 접속
WIZ610은 AP기능이 있어 PC에서 클라이언트 형태로 접속 가능하다. 자세한 환경 설정은 . [WiFi to Serial 모듈 설정]  부분을 참고 한다.

WiFi모듈의 기본 IP는 192.168.1.254 로 접속해서 TCP/IP통신을 하면 MCU쪽에서는 시리얼 형태로 데이터를 수신 할 수 있다. 최대 전소 속도는 1Mbps까지 가능하다.


PC프로그램 작성
무선랜 모듈에 접속하기 위해 TCP/IP프로그램을 작성하면 되는데... 여러 형태로 작성 가능하지만 우선 간단하고 UI 를 쉽게 작성할 수 있는 C#을 이용하였다.


테스트를 위해 간단히 CANTUS EVM의 LED를 On/Off하고 수집한 24bit ADC값을 그래프로 표시하도록 했다.



펌웨어 작성
MCU(CANTUS EVM)쪽 펌웨어는 WiFi모듈을 시리얼로 인식하기 때문에 간단하게 작성할 수 있다.
시리얼 포트로 특정 커멘드를 받으면 동작하도록  처리한다.

  if(U0_IsGetByte())
  {
   switch(U0_GetByte())
   {
    case '2':
     DebugPrint("Led1 Off\r\n");
     Led1Off();
     break;

    case '3':
     DebugPrint("Led1 On\r\n");     
     Led1On();
    break;
    
    case '4':
     DebugPrint("Led2 Off\r\n");
     Led2Off();
     break;

    case '5':
     DebugPrint("Led2 On\r\n");
     Led2On();
    break;
        
    case '6':
     //ADC값 전송 시작
     adc_send_flag ^= 1;
    break; 


ADC값은 타이머 인터럽트를 이용하여 시리얼 포트로 보내면 WiFi로 전송이 된다. 아주 간단하게 WiFi 통신이 가능하다.
  if(adc_send_flag)
  {
   //ADC값 전송
   if(gTimeTick1_1ms>10)
   {
    DebugPrint("ADC=%d\r\n", GetAdc24(0));
    gTimeTick1_1ms = 0;
   }
  }


CANTUS WiFi 테스트 동영상
WiFi를 이용하여 네트웍으로 LED제어하고 24bit ADC데이터 수집 테스트

Posted by nexp

댓글을 달아 주세요

[MCU]/CANTUS2011. 7. 22. 18:37

[CANTUS] DAC 테스트

[CANTUS] DAC 테스트

CANTUS에는 14-bit Sigma-Delta Voice Codec 이 내장 되어 있다. 간단한 WAV파일 출력이나 DAC로 사용하면 유용하게 쓰일곳이 많을것 같다.

CODEC 특징을 살펴 보면
- 14-bit Sigma-Delta A/D with 75dB SNR
- 14-bit Sigma-Delta D/A with 80dB SNR
- Digital Input/Output 2‟s Complement Format
- Sampling Frequency Max. 11.025KHz
- Record Gain supported using Pre-Amplifier with External Resisters
- A/D, D/A Converter Individual Power On/Off
- D/A Converter Analog Output Mute Function


Posted by nexp
TAG CANTUS

댓글을 달아 주세요

[MCU]/CANTUS2011. 4. 11. 10:30

[CANTUS EVM] USB HID테스트 - USB로 센서 데이터 그래프에 표시

[CANTUS EVM] USB HID테스트 - USB로 센서 데이터 그래프에 표시


CANTUS는 저렴한 MCU임에 불구하고 USB기능이 있어 여러모로 사용할곳이 많은것 같다.
USB를 이용하여 3축 가속도 센서 데이터를 그래프로 표시하는 테스를 해 보았다. 기존 STM32를 이용하여 센서데이터를 USB로 전송하는 예제가 있어 쉽게 포팅할 수 있었다.

HID를 이용하면 드라이버필요 없이 USB에 연결할 수 있어 간단히 USB전송하기 좋다.

ADChip사에서 제공하는 USB API를 이용하면 아주 간단히  USB를 제어 할 수 있다. 깔끔하게 잘 동작한다.
하지만 라이브러이 형태이기 때문에 수정이나 다른 프로젝트에 계속 추가 하기가 쉽지 않아 사용자 처리 부분은 빼내서 처리했다.

그리고 한가지더.. 엔드포인트 수가 적고, 특히 64Byte 엔드포인트는 2개밖에 없다.



USB초기화 부분
 //USB초기화
 //-------------------------------------------
 setinterrupt(INTNUM_USB,usb_irq_f);
 EnableInterrupt(INTNUM_USB,TRUE);
 
 //USB Enable
 Sbi(*R_PAF5, (3<<(2*7)));
    Sbi(*R_P5oDIR, BIT7);
    Sbi(*R_P5oLOW, BIT7);
    Delay(100);
 
 usb_set_description(USB_Configuration_Descriptor,USB_Device_Descriptor,HID_ReportDescriptor,USB_StringDescriptor);
    usb_init();
 //-------------------------------------------



가속도 센서 데이터 수집 및 USB전송 코드
 while(1)
 {
  GetAccelValue(AXIS_X, &data);
  data = 0xFFF&data;
  
  gUsbTxBuffer[0] = data;
  gUsbTxBuffer[1] = data>>8;
  
  GetAccelValue(AXIS_Y, &data);
  data = 0xFFF&data;
  
  gUsbTxBuffer[2] = data;
  gUsbTxBuffer[3] = data>>8;
  
  GetAccelValue(AXIS_Z, &data);
  data = 0xFFF&data;
  
  gUsbTxBuffer[4] = data;
  gUsbTxBuffer[5] = data>>8; 
  
  //USB로 센서 데이터 전송
  SendtoUsb(gUsbTxBuffer, sizeof(gUsbTxBuffer));
  
  Delay(4);
 }


CANTUS USB전송 테스트 동영상
USB HID로 3축 가속도 센서데이터를 전송하고 그래프로 표시하는 예제

Posted by nexp

댓글을 달아 주세요

  1. 파파존스

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.04.19 18:35 [ ADDR : EDIT/ DEL : REPLY ]