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

SW6STM에서 고정위치에 바이너리 라이팅하기

고정할 바이너리 파일 unsigned char _FixedData[1024UL + 1] __attribute__ ((section(".mfc_array"))) = { 0x8D, 0x43, 0xF2, 0x3D, 0x71, 0x3F, 0xF8, 0x12, 0x5D, 0x85, 0x96, 0x9F, 0x2A, 0x52, 0xE7, 0x50, 0xB4, 0x43, 0xDE, 0xE6, 0xBB, 0xC8, 0x6A, 0xC1, 0xD4, 0xBD, 0x83, 0xE6, 0x13, 0xAF, 0x5B, 0xE0, 0x06, 0x4B, 0x07, 0x4A, 0x1B, 0x68, 0x93, 0x42, .... 중략 .... }; STM32Fxxxx_FLASH.ld 파일 /* Entry Point */ ENTRY(Re..

인터럽트 벡터 위치 확인과 변경

정식으로 드라이버와 데이터 시트를 받지 못했을 경우 인터럽트 벡터 위치를 직접 확인해서 넣어야하는 경우가 있습니다. 그럴때 다소 귀찮긴 하지만 하나씩 인터럽트 벡터를 살린 후 데이터가 들어오는 인터럽트 벡터 번호를 찾아서 매핑해주면 사용할 수 있습니다. Uart0번의 벡터를 체크한 부분입니다. 인터럽트와 별도로 Uart 설정은 따로 해주어야 합니다. void INT_All_Enable(void) { int Interrupt_Vector_Num = 0; DEBUGPRINT("\r\n NORMAL MODE TEST"); for( Interrupt_Vector_Num= 0; Interrupt_Vector_Num < 239; Interrupt_Vector_Num++){ NVIC_ClearPendingIRQ(In..

STM32 PID 제어

ADC로 전류값을 읽어온 후 180mA로 타겟값을 맞췄습니다. (미제어시 125mA ~ 170mA 정도 소요) => arm에서 제공하는 arm_cortexMxxx_math.lib를 사용 #define TAGET_ADC 1000 void PID_ADC(uint8_t *chpADC, uint8_t chSize) { Get_RAWADC(s_chpBuf[s_ADCpointer++]); PID_CurrentControl(Average(s_chpBuf, ADCCNT, 1), TAGET_ADC); if(s_ADCpointer >= ADCCNT){ s_ADCpointer = 0; } } /*************************************************************************..

STM32H750 ReadProtection, BrownOutReset 설정

ReadProtection은 설정하고 나면 옵션을 지우고 플래쉬가 삭제되어야만 사용할 수 있으니 주의가 필요합니다. #define BORLEVEL OB_BOR_LEVEL1 #define RDPLEVEL OB_RDP_LEVEL_1 #define BOR_FLAG_TIMEOUT 3000 /******************************************************************************* * Function Name : * Parameters : None * Return : None * Description : *******************************************************************************/ void Con..

STM32H750 내부 온도 센서 값 읽기

ADC1을 설정하고 ADC를 읽어오다가 내부 온도 센서나 BAT 값을 읽어보려고 설정을 하였지만 값을 제대로 읽어오지 못하였습니다. 왜 안될까 고민하다가 데이터 시트를 펼쳤습니다. !!!??? In addition, there are 5 internal dedicated channels – The internal reference voltage (VREFINT), connected to ADC3 – The internal temperature sensor (VSENSE), connected to ADC3 – The VBAT monitoring channel (VBAT/4), connected to ADC3 The ADCs are connected to 5 internal analog inputs: – t..

STM32H750 내부 Flash 사용하기

기본 제공되는 SDK를 사용해보려고하니 외부 메모리를 사용하는 타입(STM32H750B-DK)이라 정상동작 하지 않았습니다. 그래서 ROM, RAM 영역을 다시 설정해 주었습니다. 일단 컴파일러에서 ROM과 RAM 영역을 설정한 후 system_stm32h7xx.c를 설정해주면 정상적으로 동작합니다. (USB HS MSC를 사용하려고 하는데 무슨 설정을 잘못하였는지 메모리 설정이 안나가네요. HID는 잘되는데.... 후~ 갈 길이 멀어보입니다.) keil의 경우 system_stm32h7xx.c에서 #ifdef VECT_TAB_SRAM SCB->VTOR = D1_AXISRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ #..

STM32F723 UART LL_DRIVER 예제

뭘 좀 잘못한 걸까요? F723이 H743보다 더 빠르다니 이해가 잘 안되네요. 하지만 STM32F103이 STM32F091보다 연산이 느린걸 보면 그럴수도 있다고 생각이 되기도 하네요.(내부 플래쉬 메모리 접근 구조나 이런 차이일까요? 아님 캐쉬를 안 돌렸나? 확인 안해봤으니 상상의 나래만 ㅋㅋ큐ㅠㅠㅠ 캐쉬설정하니 속도가 엄청나게 나오네요. 393us가 걸렸던게 81us로 바뀌네요.) USB HS PHY가 안에 들어있어서 써볼까 생각했었는데 더 잘 되었네요. 다만 UFBGA나 WLCSP 타입이라서 아트웍이나 PCB 제작 후 수삽할 때 짜증이.... ㅠㅠ STM32F091 - ARIA 128/192/256, CTR Mode ARIA CTR 128 32BYTE - 1827us ARIA CTR 192 32B..

STM32H743 LL_Driver Timer

분주하는 부분에서 약간 헤맸습니다. /******************************************************************************* * Function Name : * Parameters : None * Return : None * Description : DEBUGPRINT("%d \r\n", SystemCoreClock);//400000000 *******************************************************************************/ void Config_TIM(void) { uint32_t Prescaler; Prescaler = (uint32_t)(SystemCoreClock / (2*1000000..

STM32H743 UART LL_Driver 예제

STM32H7 시리즈의 LL_Driver 예제를 찾아봐도 보이지 않았습니다. 예제는 COMP, DAC, RTC, SPI만 있어서 직접 만들었습니다. 약간의 삽질을 했습니다. LL_USART_SetBaudRate함수에 분주까지 들어가서 헤맸네요....... 암호모듈 속도 측정결과 뭔가 획기적으로 속도가 빨라지지는 않네요. DMIPS 차이로는 거즘 4배인데 연산속도 차이는 2배가 채 안되어서 약간 실망감이 드네요. 캐쉬설정하니 빨랐습니다. STM32F446 - 225DMIPS - ARIA 128, CBC Mode Data Length - 32 byte 61 us Data Length - 64 byte 100 us Data Length - 128 byte 177 us Data Length - 256 byte ..