초보의 아웅다웅 설계하기/STM32 94

CKS32F103 => STM의 카피캣을 만나다.

저가에 IO가 크게 필요없는 제품을 개발하기 위해서 보다보니 약 3000원의 STM32F103 제품이 보였습니다. PCB 뜨고 이러면 비싸니 바로 구매하였습니다. 며칠 지나니 택배가 똭!! 근데 어라? 머 이상하네? 테스트하려고 보니 CKS32F103C8T6.. 말로만 들었던 중국 카피캣 제품이 !!! - 사이트에 STM32라면서요? 혹시나 하고 STM으로 프로그램을 짠 후 ST-Link와 ST Utility를 사용하여 라이팅했더니 정상 동작 두둥.... 신뢰성은 괜찮은걸까? 사용해도 되는 걸까? 하는 의구심은 있지만 일단 사용... (테스트는 USB와 Led만 깜빡거려보았습니다.) 항상 놀라지만 중국의 카피 능력은 진짜 대단하네요. 시스템 개발 보드 단일 칩 코어 STM32 ARM STM32F103 h..

STM Custom HID 보드로 입력되는 값 4Byte로 수정하기

STM Custom HID 보드로 입력되는 값 4Byte로 수정하기 선언을 TX라고 했지만 실제 in, out은 PC를 기준으로 하기때문에 PC의 out이 보드에서는 in입니다. #define MAXPCKRXSIZE 0x02 #define MAXPCKTXSIZE 0x04 /* USB Configuration Descriptor */ /* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */ const uint8_t CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC] = { 0x09, /* bLength: Configuation Descriptor size */ USB_CONFIGURATIO..

ST의 디자인 툴

ST사에서 웹으로 설계 프로그램을 지원하고 있습니다. NFC쪽을 그리다 안테나 설계를 안테나 회사에 다니는 친구에게 부탁을 할까하면서 구글링을 하다보니 ST에서 지원하는 것을 알게 되었습니다. 여러가지 설계 지원 툴 중 하나지만 제가 필요한 건 이거니까. 값을 변경해가면서 바로바로 결과를 알 수 있으니 좋습니다. 실제 PCB를 제작했을때도 동일하게 나올지는 잘 모르겠네요. 요즘 TI도 그렇고 ST도 그렇고 원하는 결과만 넣으면 값과 회로도까지 툭하고 튀어나오니 진짜 편하네요. 한편으로는 하드웨어 엔지니어인 제 자리가 위험하다는 생각이 드네요. 몇년뒤면 하드웨어 엔지니어는 없어지지 않을까 하는 걱정까지 듭니다. 펌웨어도 설정을 하면 기본 소스가 나오는 걸 보면 그 자리도 위험하긴 매한가지겠네요. 에휴 앞으..

PID 제어

\Drivers\CMSIS\DSP_Lib\Source\ControllerFunctions안에 arm_pid_init_f32.c 파일을 Merge 시키거나 arm_math 파일만을 묶어서 라이브러리로 만들어 추가해도 됩니다. 실제 사용시에는 다양한 값을 받아서 PID 제어를 하면 될 듯 싶습니다.조금 더 부드럽게 값을 만져줄 수 있어 몇개의 Factor을 받아 2중 PID 구조를 사용하였습니다. #include "arm_math.h" /* Private typedef -----------------------------------------------------------*//* Private define --------------------------------------------------------..

LSM6DSL, LIS2MDL, LPS22HB

가속, 자이로, 온도, 압감지, 마그넷 센서LSM6DSL, LIS2MDL, LPS22HB소스와 통신하는 부분을 ST에서 제공하는 프로그램에서 발췌했더니 비효율적으로 되어있습니다.데이터시트를 보고 최적화와 함께 함수들을 만들어 써야합니다. void main(void){ACCGyroAxis_TypeDef ACCAxis, GyroAxis;MagnetAxis_TypeDef MagnetAxis;float fPress, ftemperature;float fBatt;uint16_t Batt_Percent; LSM6DSL_ACCGyroInit();LIS2MDL_MagnetInit();LPS22HB_TempPreInit(); LSM6DSL_ACCGyroEnable();LIS2MDL_MagnetEnable();LPS22H..

Base Timer 인터럽트 사용 안하고 설정하기

Base Timer 인터럽트 사용 안하고 설정하기 uint32_t timers = 0; TIM_HandleTypeDef TimHandle; void main(void){ HAL_Init(); /* Configure the system clock to 48 MHz */ SystemClock_Config(); /* Compute the prescaler value to have TIMx counter clock equal to 10000 Hz */ uwPrescalerValue = (uint32_t)(SystemCoreClock / 1000000) - 1;//48000000 UART1_printf("SystemCoreClock : %d, uwPrescalerValue %d\r\n", SystemCoreClo..