본문 바로가기
반응형

전자/임베디드 시스템164

Code Composer Studio JTAG 클럭 속도 변경 CCS에서 JTAG 클럭 속도는 ccxml 파일을 더블 클릭한후 Advanced 탭에서 다음과 같이 변경할 수 있다. 변경후에는 Save 버튼을 클릭한다. XDS100의 최대 클럭은 1MHz이고 XDS200은 10MHz이고 XDS560은 35~50MHz이다. 하지만, JTAG 케이블이 길어지거나 하면 연결이 잘 되지 않는다. 이 때는 클럭 속도를 낮춰야 한다. 2023. 6. 16.
C2000 DSP의 플래시 메모리 수명 TI의 C2000 계열의 DSP의 플래시 메모리 수명(Endurance)은 다음과 같이 최소 20,000회 이상이다. 2023. 5. 27.
DSP 에뮬레이터 SDS200i 싱크웍스에서 판매하는 DSP 에뮬레이터 SDS200i의 내부 구조는 다음과 같다. SDS200i는 TI의 XDS200을 한국의 싱크웍스에서 라이센스를 사와 만든 에뮬레이터이다. 2023. 5. 3.
TI의 C2000 시리즈 종류 (예제 코드) C2000Ware의 예제 파일에 나와있는 C2000의 종류는 다음과 같다. 위의 시리즈로 분류된 DSP는 동일한 예제 코드를 사용한다. f28374, f28375, f28376, f28377, f28378, f28379는 동일한 코드를 사용한다. 위에서부터 f2805x까지는 FPU가 없다. TI 홈페이지에 나오는 C2000의 종류는 다음과 같다. 위의 그림에서 C2000의 종류는 크게 다음과 같다. 1) 2838x 시리즈 2) 2837x 시리즈 3) 2807x 시리즈 4) 2800x 시리즈 2023. 4. 29.
TMS320F2837x 시리즈 TI의 C2000 시리즈의 종류는 200개 정도된다. C2000 중에서 TMS320F2837x 시리즈는 다음과 같이 17개 종류가 있다. TMS320F2837x 시리즈의 공통 스펙은 다음과 같다. - 속도 : 200MHz - UART : 4개 - CAN : 2개 - PWM : 24개 2023. 4. 29.
DSP 입력 포트 동기 설정 TI의 DSP에서 GPIO의 입력포트나 SCI 등의 Peripheral 입력 포트는 다음 2가지 설정을 해야 한다. 1. GPxQSEL 입력 신호는 다음의 4가지로 설정할 수 있다. 00 : 입력 신호는 SYSCLKOUT에 동기되어 입력됨 01 : 3 샘플이 동일할 때 입력됨 10 : 6 샘플이 동일할 때 입력됨 11 : 클럭에 동기되지 않고 입력 SCI나 SPI 등의 통신 포트는 11로 설정해야 한다. 2. GPxCTRL 위의 레지스터에서 3샘플 또는 6샘플을 선택할 때 샘플사이의 주파수를 설정한다. 위의 두 레지스터 설정이 잘못되어 있으면 저속에서는 정상적으로 입력이 들어오는데 고속 신호에서 신호를 받지 못하는 문제가 발생할 수 있다. 위와 같은 기능은 다른 MCU에서는 잘 없는 기능이기 때문에 간과.. 2023. 4. 24.
TI DSP의 사용하지 않는 핀 처리 TI DSP의 GPIO 디폴트 상태는 내부 Pull-up이 Disable 된 입력 상태이다. GPIO 핀은 다음 중 하나의 상태가 되어야 한다. 1) Input 상태일 때 외부 다른 부품의 출력과 연결됨 2) Input 상태일 때 내부 pull-up enable 됨 3) Output 상태 사용하지 않는 핀은 pull-up enable을 해야 한다. Pull-up enable 디폴트로 하지 않는 이유: 처음 파워를 켤때 High가 되면 안 되는 IC가 연결되어 있을 때는 pull-up이 디폴트로 되면 오동작을 일어킬 수 있다. ☞ 사용하지 않는 핀을 플로팅 시키면 안되는 이유 2023. 4. 19.
[CCS] TMU 함수 TMU(Trigonometric Math Unit)는 일부 C2000 DSP 모델에 내장된 삼각함수를 계산 하드웨어 모듈이다. C에서 사용하기 위한 함수는 다음과 같다. TMU 함수를 사용하기 위해서는 CCS에서 --tmu_support=tmu0 옵션을 사용해야 한다. 2023. 4. 11.
[CCS] 함수 선언하지 않을 때 이상동작 CCS(Code Compuser Studio)에서 함수를 선언하지 않고 사용하면 다음과 같은 '#225-D function declared implicitly' waring 메세지가 뜬다. 컴파일은 되지만 동작은 이상하게 된다. warning이 아니라 error로 봐야 한다. 이 warning을 error로 표시하고 컴파일이 되지 않게 하는 방법은 다음과 같이 Treat diagonositc as error에 225를 등록하고 아래 Treat diagonositc as warning에서 225를 삭제하면 된다. 2023. 4. 10.
[CCS] C2000의 sin 함수 C의 sin 함수는 double 변수를 사용한다. sin 함수에 float 변수를 사용하면 sin 함수 호출전 float을 long double로 변환하고 연산 후에는 long double을 float로 다시 변환한다. 변환에는 F32TOF64와 F64TOF32 명령어를 사용하고 각 명령어 실행에 1cycle을 사용한다. float 변수에는 sinf 함수를 사용해야 한다. C2000는 표준과 달리 float과 double이 32비트이고 long double이 64비트이다. 2023. 4. 10.
[CCS] fp_moode와 fp_reasonoc 설정 Code Composer Studio에서 fp_mode는 strict 또는 relaxed로 설정할 수 있다. strict는 표준에 따라 동작하는 것이고 relaxed는 정밀도는 줄지만 속도는 높아진다. relaxed로 설정하면 다음과 같은 동작을 한다. - 상수로 나누는 식은 역수로 곱한 식으로 변환 - sqrt, sin, cos, atan, atan2 함수를 inline 함수로 변환 - 하드웨어 TMU 사용 fp_reassoc는 부동소수점 연산에 결합법칙(Reassociation)을 적용 또는 미적용한다. 부동소수점 숫자는 원래 결합법칙이 적용되지 않는다. 결합법칙을 적용하면 정밀도가 조금 줄어 든다. 부동소수점은 다음과 같이 결합법칙이 성립하지 않는다. (1 + 3e100) - 3e100 ≠ 1 + .. 2023. 4. 10.
[CCS] 변수 메모리 부족 에러 Code Composer Studio 에러 메세지 program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section ".bss" cmd 파일을 다음과 같이 설정하면 RAM 공간은 충분한데도 위의 에러 메세지가 뜬다. RAMLS0 : origin = 0x008000, length = 0x000800 RAMLS1 : origin = 0x008800, length = 0x000800 .bss : > RAMLS0 |.. 2023. 4. 2.
[CCS] 자동 괄호 삽입 하지 않기 CCS(Code Composer Studio)에서 자동 괄호 삽입 하지 않게하기 위해서는 다음과 같이 체크해제한다. 괄호 이외에 스트링 등의 자동 완성을 해제할 수 있다. 창 아래의 Show advanced settings를 해야 C/C++이 나타난다. 2023. 3. 28.
C2000 DSP 데이터 타입 TI의 C2000 DSP의 데이터 타입은 다음과 같다. char는 16비트로 8비트 데이터가 없다. int는 16비트이고 long이 32비트이다. printf(" %d ")의 스트링 포맷에서 int 변수는 %d %u를 사용하고 long 변수는 %ld %lu을 사용해야 한다. 2023. 3. 27.
[CCS] 한글깨짐 해결 CCS (Code Composer Studio)에서 한글이 깨질때는 Window 메뉴에서 Preferences를 선택하고 다음과 같이 UTF-8을 선택하며 해결된다. 2023. 3. 26.
[CCS] Symbol 'IER' could not be resolved 에러 CCS (Code Composer Studio)에서 다음과 같은 Symbol '~' could not be resolved 에러는 Eclipse IDE에서 변수 등을 찾지 못할 때 발생한다. IDE에서는 찾지 못하지만 컴파일과 실행은 정상적으로 될수 있다. 컴파일은 정상적으로 된다면 IDE 문제이므로 다음과 같은 방법으로 에러 표시를 안하게 할 수 있다. 에러에서 마우스 우클릭한 후 Quick Fix를 선택한다. Quick Fix 창에서 Suppress problem "Symbol is not resolved"를 선택하고 Finish 버턴을 클릭한다. 에러가 난 문장에서 // @suppress("Symbol is not resolved") 라는 주석이 자동으로 생기면서 에러가 더 이상 표시되지 않는다. 2023. 3. 24.
[CCS] 다른 컴퓨터에서 컴파일 에러 TI의 CCS(Code Composer Studio)의 프로젝트를 다른 폴더로 복사하여 컴파일하면 컴파일이 안되는 경우가 있다. 폴더가 바뀔 때 프로젝트의 Properties에서 아래의 2개가 마음대로 바뀌는 경우가 있다. Configuation을 다시 설정하고 Linker command file은 Browse로 프로젝트의 cmd 파일로 다시 설정한다. CCS는 매우 불안정한 프로그램으로 버그가 많고 예상할 수 없는 동작을 많이 한다. 2023. 3. 24.
TMS30F28388D 메모리맵 아래 메모리맵에서 (1)~(4)로 표기된 것외는 CPU1과 CPU2가 동일한 메모리맵을 가지고 있다. (Datasheet p.246) 주요 데이터의 시작 주소는 다음과 같다. - 벡터테이블 : 0000 0D00 - RAM : 0000 8000 - FLASH : 0008 0000 - User OTP : 0007 8000 - Boot ROM : 003E 8000 위의 메모리맵에서 Boot ROM은 다음과 같다. 2023. 3. 23.
HWBIST 뜻 HWBIST는 Hardware Build-In-Selft Test Reset의 약자로 하드웨어 Build-In-Selft Test 후 되는 리셋을 뜻한다. TMS320F28388 메뉴얼에는 HWBIST에 대한 설명이 없고 28377 메뉴얼에 있다. 2023. 3. 23.
C2000 DSP에서 CM 뜻 TI의 C2000 DSP에서 CM(Connectiviy Manager)는 통신을 담당하는 부분을 뜻하고 Arm 코어로 구성된 독립된 CPU로 구성된다. F2838x는 다음과 같이 CPU1와 CPU2와 CM으로 구성된다 (Single 코어는 CPU2가 없다). 2838x에는 28388D, 28386D, 28384D, 28388S, 28386S, 28384S가 있다. S는 Single 코어이고 D는 Dual코어이다. 2023. 3. 9.
CCS 새 프로젝트 만들기 TI의 CCS(Code Composer Studio)에서 새 프로젝트를 만들 때 메뉴의 New Project를 사용하는 것보다 C2000Ware의 예제 프로젝트를 import하는 것이 좋다. C2000의 device_support 폴더에 MCU 종류별로 예제가 있다. 예제를 import하면 C2000의 파일과 링크되기 때문에 C2000이 없으면 제대로 컴파일 되지 않는다. C2000과 링크를 해제하기 위해서는 필요한 파일을 이동시키고 몇개의 설정값을 수정해야 한다. TMS320F28355는 flash_f28335 예제를 사용하는 것이 좋다. CCS는 몇 십년으로 역사가 오래되었지만 아직도 완성도가 떨어지고 이상한 부분들이 많다. 같은 eclipse 기반으로 만들어진 STM32CubeIDE 보다 완성도가 .. 2023. 3. 9.
CCS에서 library 폴드 지정 (Code Composer Studio) 프로젝트의 Properties에서 File Search Path에서 libray 폴더를 지정한다. 2023. 3. 8.
C2000Ware 버전 C2000Ware은 C2000 DSP의 예제 파일 모음이다. C2000Ware 버전은 다음과 같다. v4x 4.03.00.00 (03 Feb 2023) 4.02.00.00 (21 Oct 2022) 4.01.00.00 (03 Mar 2022) 4.00.00.00 (18 Oct 2021) v3x 3.04.00.00 (14 Feb 2021) 3.03.00.00 (06 Oct 2020) 3.02.00.00 (27 May 2020) 3.01.00.00 (19 Mar 2020) v2x 2.01.00.00 (22 Dec 2019) 2.00.00.03 (29 Sep 2019) 2.00.00.02 (28 May 2019) v1x 1.00.06.00 (04 Nov 2018) 1.00.05.00 (26 Jun 2018) 1.. 2023. 3. 8.
Code Composer Studio 버전 CCS(Code Composer Studio)는 버전이 올라가면 이전 버전의 프로젝트는 컴파일이 안되는 등 호환성에 문제가 있다. v12x 12.2.0 (06 Jan 2023) 12.1.0 (30 Sep 2022) 12.0.0 (08 Jul 2022) v11x 11.2.0.00007 (08 Apr 2022) 11.1.0.00011 (20 Dec 2021) 11.0.0.00012 (11 Oct 2021) v10x 10.4.0.00006 (06 Jul 2021) 10.3.1.00003 (01 May 2021) 10.3.0.00007 (04 Apr 2021) 10.2.0.00009 (06 Jan 2021) 10.1.1.00004 (20 Sep 2020) 10.1.0.00010 (10 Jun 2020) 10.0.. 2023. 3. 8.
CCS에서 include 폴드 지정 (Code Composer Studio) 프로젝트의 Properties에서 Include Options에서 include 폴더를 지정한다. 2023. 3. 7.
CCS의 C2000Ware 의존성 (Code Composer Studio) Code Composer Studio에서 C2000Ware의 예제를 임포트하여 생성한 프로젝트는 C2000Ware의 코드를 사용한다. 1. 프로젝트 Properties 프로젝트의 Properties에서 다음 창에서 프로젝트에 연결된 C2000Ware을 확인할 수 있다. 2. Preferences 설정 Window 메뉴의 Preferences에서 C2000Ware의 폴드를 지정한다. 2023. 3. 7.
CCS 예제 파일 열기 (Code Composer Studio) TI의 Code Composer Studio(CCS)에서 C2000Ware의 예제파일을 여는 방법은 다음과 같다. 1. Project 메뉴에서 Import CCS Projects를 클릭한다. 2. Browse 버턴을 누른후 C2000Ware 예제파일 폴더(\device_support\)를 선택한다. 예제 프로젝트를 체크한 후 Finish 버턴을 누른다. 3. 다음과 같이 프로젝트가 열린다. 컴파일한 후 실행한다. ※ 예제에 따라 종속되는 파일들이 사용자 workspace 폴더에 복사가 되는 경우도 있고 복사가 안되는 경우가 있다. 2023. 3. 7.
STM32CubeIDE 프로젝트 복사 방법 STM32CubeIDE에서 프로젝트를 복사하는 방법은 다음과 같다. 1) Project Explorer에서 Copy & Paste를 한다. 2) ioc 파일을 마우스 우클릭하여 rename 한다. 3) 프로젝트 이름에서 우클릭하여 Properties를 선택한다. 4) Properties 창의 왼쪽에서 Run/Debug Settings을 선택하여 다음과 같이 이름을변경한다. ※ 프로젝터를 복사할 때 소스파일이 삭제되는 경우가 있기 때문에 미리 백업을 해두는 것이 좋다. 2023. 2. 28.
STM32 전원 꺼질 대 재부팅 현상 STM32의 내부 리셋 회로는 다음과 같다. NRST는 입력핀이지만 Watchdog이나 Power reset 등으로 내부에서 Low로 떨어질 수도 있다. 전원 전압이 천천히 떨어질 때 NRST 신호는 다음 그림과 같다. 위와 같은 일이 발생하면 전원이 꺼질 때 몇 차례 재부팅되는 현상이 일어난다. 리셋 펄스가 몇 차례 나오는 이유는 전압이 떨어져 리셋이 될때 소비 전류가 줄어들면서 순간적으로 전압이 상승하여 리셋이 해제되기 때문인 것으로 추정된다. 참고로 STM32F103의 PDR(Power Down Reset) 히스테리시스 전압은 40mV이다. 2023. 2. 27.
스위칭 레귤레이터 고장 (하드웨어 디버깅) 스위칭 레귤레이터가 고장나면 입력전압이 감압되지 않고 그대로 출력될 수가 있다. 이러한 고장이 발생하면 보드의 소비 전류가 정상보다 몇배 정도 많아진다. 개발된 보드를 시험할 때는 보드에 들어가는 전류를 항상 확인해야 한다. * 추정 스위칭 레귤레이터의 스위칭 주파수를 너무 높게 설정하면 레귤에이터가 고장날 수 있을 것 같다. 스위칭 주파수는 외부 C 값으로 조정할 수 있다. 2023. 2. 25.
반응형