본문 바로가기

WCH/CH32V003

CH32V003 SSM - Arduino SPI테스트

CH32V003 Arduino 개발환경 테스트에서 확인 결과 디폴트로 SPI가 disable 되어 있다.

 

CH32V003 Aduino 환경에서 CH32V003의 SPI 제어를 하려면 먼저 Variant (\AppData\Local\Arduino15\packages\WCH\hardware\ch32v\1.0.3\system\) 파일에서 SPI_MODULE_ENABLE 설정을 해 주어야 한다.

 

/* ENABLE Peripherals */
// #define                         ADC_MODULE_ENABLED
#define                         UART_MODULE_ENABLED
#define                         SPI_MODULE_ENABLED
#define                         I2C_MODULE_ENABLED


// SPI definitions
#ifndef PIN_SPI_SS
  #define PIN_SPI_SS            PC4
#endif
#ifndef PIN_SPI_MOSI
  #define PIN_SPI_MOSI          PC6
#endif
#ifndef PIN_SPI_MISO
  #define PIN_SPI_MISO          PC7
#endif
#ifndef PIN_SPI_SCK
  #define PIN_SPI_SCK           PC5
#endif

 

 

CH32V003의 SPI 최대 클럭 속도는 24Mhz 이므로 최대로 설정후 테스트 하는 코드를 작성해 보자.

 

 

#include <SPI.h>
#define LED_PIN1      PD4

void setup() {
  pinMode(LED_PIN1, OUTPUT);
  
  Serial.begin(115200);
  SPI.begin();
  SPI.beginTransaction(SPISettings(24000000, MSBFIRST, SPI_MODE0));
}


unsigned char buf[2] = {1,2,};
void loop() 
{
  SPI.transfer(buf, sizeof(buf));
  SPI.transfer(buf, sizeof(buf));
  delay(10);
}

 

 

테스트 결과 24Mhz로 측정이되고 SPI 출력간 지연은 2.7us로느리다.

TFT LCD 제어를 위해서는 지연시간이 짧아야 하는데... 아무래도 CH32V003 SPI DMA 테스트 예제를 이용해서 DMA로 출력해야 할것 같다.

 

 

반응형