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로 출력해야 할것 같다.
반응형