본문 바로가기

전체 글

(1955)
[CANTUS EVM] TFT LCD제어 [CANTUS EVM] TFT LCD제어 [LCD-EXP EVM] 보드를 이용하여 CANTUS로 COM26T2844 TFT LCD를 제어 해 보려고 한다. 환경설정이 달라지면서 여러가지 문제점이 많다. 기존 소스를 포팅하니 오류가 많이 뜬다. -> 문제는 디렉토리 설정에서 현재 자신의 프로젝트를 가리키는 설정에 문제가 있었다. -> 그냥 "." 기입하면 자신의 디렉토리가 설정된다. CANTUS의 GPIO 출력 레지스터는 일반 MCU와 달리 Low, High를 PxOHIGH, PxOLOW에 각각 따로 설정해야 한다. 특히 LCD와 같이 데이터를 포트제어로 해야 할때 문제가 있다. 두번 제어 해야 하므로 속도도 문제가 되고... 아무튼 기존 다른 MCU에서 사용했던 코드를 포팅 했는데.. TFT LCD가 정..
[CANTUS EVM] SD Card 테스트 [CANTUS EVM] SD Card 테스트 CANTUS 는 SDIO를 지원하므로 SD Card를 고속으로 접근할 수 있다. [CANTUS EVN]보드 뒷면에는 T-Flash를 연결할 수 있도록 해서 SDIO를 테스트 해 볼 수 있다. [CANTUS EVM] SD Card 회로도 CANTUS개발환경의에는 SD Card제어를위한 라이버러리를 제공기 때문에 쉽게 테스트 가능하다. #include "system.h" #include "serial.h" unsigned int scan_files (char* path) { unsigned int file_cnt = 0; FRESULT res; FILINFO fno; DIR dir; int i; char *fn; #if _USE_LFN static char lfn..
[S3C6410] 카메라 영상 처리 - USB를 이용한 영상 전송 테스트 [S3C6410] 카메라 영상 처리 - USB를 이용한 영상 전송 테스트 S3C6410 보드의 카메라 인터페이스는 J2에 연결되어 있다. S3C6410의 경우 내부적으로 4개의 카메라 버퍼가 있고 카메라로부터 영상이 들어오면 DMA를 통하여 4개의 버퍼에 차례로 영상이 저장된다. buf[0]->buf[1]->buf[2]->buf[3]->buf[0]->…의 순서로 계속 영상이 저장된다. 영상을 받기 위해서는 Cam_GrabContinuous() 함수를 이용하여 버퍼를 설정하고 카메라를 동작시킨 후, Cam_GrabWait() 함수를 이용하여 영상이 들어올 때까지 기다리면 된다. Cam_GrabWait() 함수에서 리턴된 값은 현재 영상이 들어온 버퍼의 번호이다. (0~3까지의 리턴값) 따라서 Cam_Gra..
[S3C6410] GPIO Switch 테스트 [S3C6410] GPIO Switch 테스트 S3C6410 베이스보드에는 두개의 스위차가 GPIO6~7에 연결되어 있다. S3C6410 스위치 드라이버 함수 //----------------------------------------------------------------------------- //Switch Driver #define SW1_BIT BIT6 #define SW1_PORT PORTI #define Sw1Init() GPIO_SetFunctionEach(SW1_PORT, eGPIO_6, 0) #define GetSw1() (!(GPIO_GetDataAll(SW1_PORT)&SW1_BIT)) #define WaitForSw1() while(GetSw1()) //-------------..
[S3C6410] GPIO 속도테스트 [S3C6410] GPIO 속도테스트 간단히 gpio.cpp 에서 제공되는 함수를 이용하여 PORTI를 토글시켜 보았다. 토글 속도가 220ns - 2.2Mhz가 나온다. 느린데.. #define Led1Toggle() GPIO_SetDataAll(eGPIO_I, GPIO_GetDataAll(eGPIO_I) ^ BIT0) 포트를 S3C6410 GPIO 레지스터로 집접 제어하도록 수정해 보았다. 198ns 2.5Mhz로 조금 더 빨라 졌지만 여전히 느리다. #define Led1Toggle() PORTI ^= BIT0 GPIDAT레지스터는 0x7F008104에 할당되어 있다. #define PORTI (*(volatile unsigned*)0x7F008104) while(1) { Led1Toggle(); ..
[S3C6410] Hellow World 개발환경 및 LED테스트 프로그램 [S3C6410] Hellow World 개발환경 및 LED테스트 프로그램 새로운 MCU 다루는데 있어서 LED제어만큼 간단하고 확실한 방법도 없다. 하드웨어 셋업 일단 테스트할 펌웨어를 램에 다운로드 하기위해 USB를 연결하고, 디버깅 시리얼 포트를 위해 USBUART를 U1에 연결한다. 부트 로드를 이용해야 하므로 부트 점퍼도 연결한다. USB를 연결하면 장치관리자에서 확인할 수 있다. 부트로드가 정상 동작하면 시리얼 포트에서 메세지를 확인할 수 있다. USB다운로더를 이용하여 bin파일을 램영역 0x50200000 에 다운로드 할수 있다. 새로운 프로그램을 작성하면 리셋을 눌러 부트모드로 가서 다시 다운로드 하면 된다. "Program"버튼은 플래시에 다운로드 한다. S3C6410 부트모드 커넥터 ..
[MSP430L092] 단일셀 밧데리 구동 MSP430L 관련자료 [MSP430L092] 단일셀 밧데리 구동 MSP430L 관련자료 1 Sel Battary 용 저전압 MSP430이 나왔다. 업계최소 0.9V 부터 동작한다고 광고하고 있다. 단일셀 밧데리라 응용할때가 많을듯한데... 자세히 보니 동작전압이 0.9~1.5V 이다. 기존 MSP430개발장비는 3.3V IO기준이라 전압변환이 필요하다. 개발보드 하나 만들어 두면 쓰임이 있을것 같다. 태양열 판넬쪽에 써도 좋을것 같고... MSP430L092 관련자료 MSP430L092 예제소스코드 MSP430L092 의 주요 기능 및 장점 - 3개의 0.9V MCU 제품 MSP430L092(RAM), MSP430C091(1kB ROM) MSP430C092(2kB ROM)은 각각 최대 2kB RAM과 2kB ROM을 제공하며..
STM32 Infomation block 내부 EEPROM처럼 사용하기 STM32 Infomation block EEPROM처럼 사용하기 STM32는 AVR과 달리 내부 EEPROM이 없다. 대신 내부 플래시를 EEPROM처럼 쓸 수 있다고 한다. 제작한 보드에 ID를 부여해 인식하려고 하는데.. 데이트시트를 보면 내부 영역중 Information block 이 있다. 이부분은 ST에서 제공하는 플래시 프로그램으로 제어 가능하기 때문에 PC 소프웨어 부담없이 가능할것 같다. Option Byte 영역을 수정하여 ID를 부여해 보도록 하겠다. Flash Loder에서 Edit Option Byte를 선택하여 수정할 수 있다. Option Byte에서 Byte for user data storage 부분을 FF에서 EC로 변경하고 저장한다. 이제 펌웨어에서 이부분을 읽어서 ID..