본문 바로가기

Study/Embedded SW11

infineon tc212s 삼각함수 Maclaurin급수 대체 코드 infineon의 tc212s는 entry모델로 FPU가 없습니다.따라서 float나 double 연산을 하드웨어가 아닌 소프트웨어로 처리하다보니 속도가 타 MCU에 비해 느립니다. 특히 tangent같은 삼각함수 연산의 경우 매우 느려집니다. 보통 수us~수십us따라서 polynominal근사식을 적용하여 속도를 빠르게 연산할 수 있습니다.다만 43도가 넘어가는 순간 오차는 1%이상 차이가 나게 됩니다.공식은 Maclaurin급수를 이용합니다.radian과 degree는 다음과 같은 관계입니다.따라서 Maclaurin급수에 넣어보면 아래와 같습니다.이제 계산을 해보면 1차항 3차항이므로 d3은 따로떼면5차항이므로 d5는 따로떼면 따라서 아래와 같이 됩니다.c코드로 바꾸면 아래와 같습니다.// degr.. 2025. 12. 1.
NTC 온도센서(A1737) 온도 구하기 NTC A1737은 amphenol사의 ntc인데 이 제품은 온도에 따른 저항 값이 완전히 선형적이지 않습니다.위 표와 같이 -40~0까지 저항이 급속히 떨어지며 0도부터 210도까지도 선형적이지 않고 아래 그림과 같이 몇번의 전환점이 있습니다. 이 센서를 ADC로 읽어서 계산을 해보려고 합니다. adc 입력회로는 아래와 같습니다. ADC로 전압을 읽어보면 저항이 클 때에는 3.3V에 가깝게 나오고 저항이 낮으면 0V에 가까워 집니다. 위의 저항-온도 테이블 보시면 -40도~210도 까지 측정 가능하니 범위를 벗어난 것은 오류 처리를 하면 됩니다. 그리고 전압으로 읽어서 온도를 구할 예정이므로 전압을 입력으로 함수를 만들었습니다.#define VDDA_VOLTAGE 3.3f // .. 2025. 11. 12.
CAN fitering 방법 CAN통신에서 데이터를 구분해서 받기 위해 필터링이라는 것이 존재합니다. 즉, 내가 원하는 것만 받을래~ 하는 것입니다. 레퍼런스 메뉴얼을 보시면 CAN 필터링에 대한 부분이 나옵니다. ID MASK는 32비트 1개, 16비트 2개를 사용가능하며, ID LIST의 경우 32비트 2개, 16비트 4개를 사용할 수 있습니다. 그리고 위 그림처럼 여러개의 필터를 혼합해서 사용 가능합니다. 필터링은 크게 ID LIST와 MASK 방식이 있는데, ID LIST방식은 특정 ID만 필터링하는 방법이고, ID MASK방식은 범위를 지정할 수 있습니다. MASK 설정방법입니다. 11 10 9 8 7 6 5 4 3 2 1 HEX ID 0 1 0 0 0 0 0 0 0 0 0 0x200 MASK 1 1 1 1 1 1 1 0 .. 2020. 12. 4.
CAN baudrate 설정하기 CAN은 최대 1Mbps까지 지원하는 고속 통신으로 보통 125Kbps~1000Kbps의 baudrate를 많이 사용합니다. STM에서 CAN을 사용할때 Baudrate의 설정은 조금 까다롭습니다. UART처럼 baudrate를 그대로 쓰면되는것이 아니고, 내부 PCLK에 따라 Prescaler와 BS의 값을 넣어줘야 합니다. void MX_CAN_Init_1M(void) { hcan.Instance = CAN1; hcan.Init.Prescaler = 4; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SJW = CAN_SJW_1TQ; hcan.Init.BS1 = CAN_BS1_6TQ; hcan.Init.BS2 = CAN_BS2_1TQ; hcan.Init.TTCM = D.. 2020. 12. 3.
ds1338용 HEX <-> DEC 변환 여기서 말하는 HEX DEC 변환은 DS1338용 입니다. DS1338(RTC)보기 일반적인 16진수 10진수 변환이 아닙니다.^^;; 즉 정수 30을 0x30으로 변환해주고, 0x56을 정수 56으로 변한하는 코드입니다. DEC->HEX123456789101112131415int dec2hex(int dec){ int hex; if(decDEC 1234567891011121314int hex2dec(int hex){ int dec; if(hex 2015. 2. 12.
SPI 로 M25PXX (Flash,eeprom) 사용하기 M25Pxx 시리즈 flash는 SPI를 사용하는데, 막상 하려면 조금 까다롭습니다. 참고할만한 소스가 ST에서 제공하는 STM32F1 개발보드용 소스가 있습니다. 첨부로 넣어두었는데, ST에 가셔도 받을 수 있는 자료이고요, 압축을 푸셔서 Examples\SPI\M25P64_FLASH\ 에 가시면 예제소스가 있습니다. main.c와 spi_flash.c ,spi_flash.h 파일을 자신의 보드에 맞게 수정하시면 됩니다. 우선 헤더파일인 spi_flash.h 파일만 수정해주시면 될 것같아요. 개발보드에 따라 포트 바뀌게 되어있는데 아래와 같이바꾸시면 개발보드 상관없이 쓸 수 있습니다. 헤더파일 수정 1234567891011121314151617181920212223242526272829303132333.. 2015. 2. 12.

인기글