'Technical Tips!!'에 해당되는 글 15건

  1. [TT] STM32 CubeIDE 단축키 설정 (Shortcut/Binding)
  2. [TT] STM32 CubeIDE freertos + printf 문제 해결 1
  3. [TT] STM32 CAN ESR/Register/Peripheral Reset/Clear
  4. [TT] STM32F10x Series CAN USB 동시 사용 불가
  5. [TT] STM32 Reset 관련
  6. [TT] Cortex Peripheral bit-banding (STM32 GPIO Bitband)
  7. [TT] BLE nRF51822 Throughput , 최대 전송 성능
  8. [TT] RTOS DAC Profiling ( DAC Debug )
  9. [TN] Understanding the Terms and Definitions of LDO Voltage Regulators
  10. STM32F4-Technical-Training.pdf

[TT] STM32 CubeIDE 단축키 설정 (Shortcut/Binding)

컴파일러마다 build/debug 단축키가 다르죠..

SDTM32CubeIDE에서 단축키 설정 하는 방법 입니다.

Shortcut 용어가 아닌 Binding 용어가 사용되네요.

저는 컴파일은 F7 디버그는 F5로 사용 합니다!!

 

Window-Preferences 선택

 

 

Keys 선택후 원하는 Command에 원하는 키 Binding

 

[TT] STM32 CubeIDE freertos + printf 문제 해결

아래와 같은 CubeIDE 버젼 사용중입니다.

STM32CubeIDE
Version: 1.2.1

CubeIDE Ver

 

간단하게 STM32G4 테스트 하기 위해 NUCLEO-G474RE보드를 사용 했습니다.

freertos옵션없이 생성된 코드에서는 uart printf가 정상 동작 하지만

freertos옵션을 enable하여 생성된 코드에서 printf가 정상 동작 하지 않고 hardfault로 빠져 버립니다.

 

검색 중에 다음과 같은 내용이 있어서 "Memory Management scheme" 항목에서 heap_5에서 heap_3로 변경하니 문제가 해결 되었습니다.

 

AWS 관련 문서

 

CubeIDE 설정 화면

 

관련 내용 링크 입니다.

https://docs.aws.amazon.com/ko_kr/freertos-kernel/latest/dg/troubleshooting.html

 

https://docs.aws.amazon.com/ko_kr/freertos-kernel/latest/dg/troubleshooting.html

 

docs.aws.amazon.com

freertos 메모리 관리 방법

https://docs.aws.amazon.com/ko_kr/freertos-kernel/latest/dg/heap-management.html#memory-allocation-schemes

 

https://docs.aws.amazon.com/ko_kr/freertos-kernel/latest/dg/heap-management.html#memory-allocation-schemes

 

docs.aws.amazon.com

 

[TT] STM32 CAN ESR/Register/Peripheral Reset/Clear

 

CAN 작업중에 CubeMx의 HAL 함수 단에서 DeInit과 Init을 해도 CAN Register가 초기화가 안됨. 

특히 CAN 오류 발생시 ESR Register들의 값들이 DeInit또는 Init후 그대로 남아 있음.

HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan)
HAL_StatusTypeDef HAL_CAN_DeInit(CAN_HandleTypeDef *hcan)

 

MspInit/DeInit에서 CLK 관련 매크로들이 호출 되어 이상 없는 듯 했으니 그건 아니고...

"CAN_MCR_RESET" Define이 포함되어 있어 당연히 Reset이 될것 같으나 그것도 아니고..

void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan)
void HAL_CAN_MspDeInit(CAN_HandleTypeDef* hcan)
    
__HAL_RCC_CAN1_CLK_ENABLE();
__HAL_RCC_CAN1_CLK_DISABLE();
SET_BIT(hcan->Instance->MCR, CAN_MCR_RESET);

 

아래와 같은 매크로 사용자가 수동으로 호출을 해서 CAN Register 초기화 필요함. 필요시....

__HAL_RCC_CAN1_FORCE_RESET();
__HAL_RCC_CAN1_RELEASE_RESET();

 

이건 CAN관련 뿐만이 아니라 다른 Peripheral Register도 마찬가지

하고 싶은 이야기는 HAL 드라이버의 Init/DeInit을 해도 관련 Peripheral Register가 HW적으로 리셋되는건 아니라는것..

 

 

수고..........

[TT] STM32F10x Series CAN USB 동시 사용 불가

STM32F1 Series에 모두 해당되는 사항 같습니다.


USB 와 CAN 을 동시에 사용하지 못합니다. 구조상 모두 필수로 필요로 하는 부분이라서 어떤 꽁수로도 회피가 안될것 같네요.


다만 F2 Series에서는 해당 Note가 없는걸로 봐서 가능 한것 같습니다.


USB와 CAN을 동시에 써야 한다면 F1 Series로는 개발 불가 입니다.


: can, usb쪽 살펴 보시면 쥐꼬리만 하게 나옵니다. T.T


STM32 UM.pdf


===================================================================================================

Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx

microcontrollers where the Flash memory density ranges between 16 and 32 Kbytes.


Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx

microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes.


High-density devices are STM32F101xx and STM32F103xx microcontrollers where the

Flash memory density ranges between 256 and 512 Kbytes.


XL-density devices are STM32F101xx and STM32F103xx microcontrollers where the

Flash memory density ranges between 768 Kbytes and 1 Mbyte.

Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers.


Note: 

In low, medium-, high- and XL-density devices the USB and CAN share a dedicated 512-

byte SRAM memory for data transmission and reception, and so they cannot be used

concurrently (the shared SRAM is accessed through CAN and USB exclusively). The USB

and CAN can be used in the same application but not at the same time.

===================================================================================================

[TT] STM32 Reset 관련



이게 FULL DATASHEET에는 없고 Getting Hardware Start xxxx .pdf 문서에만 있네요.

어디서 분명 봤는데, 찾으면 없고, 오늘 우연히 다시 눈에 들어와서 기록에 남겨 보네요.


관련 문서 링크 : 

DM00112257.pdf


간단하게, IWDG이 걸리든, Software Reset이 걸리든간에 최종적으로는 

nRST단자가 HW적으로 트리거가 되어야 한다는거죠.


간혹 nRST단자 외부에 강한 PULL-UP을 걸어서 안된다고 하시는 분도 계시는데, 저런 이유 입니다.

ST에서는 PULL-UP 저항에 대해서는 Recommend 안합니다.

단지 정해진 범위의 Bypass만 걸도록 Recommend 하니, 회로 설계시 주의 하시기 바랍니다.









[TT] Cortex Peripheral bit-banding (STM32 GPIO Bitband)


main.c

위 첨부는 ST 예제중인 하나인 내부 SRAM Bitband 시험 예제이고요.



F12 Programming Manual.pdf

위 첨부는 cortex 의 원론적인 내부 명령어 설명서 입니다.



저는 8051코드을 M3로 변환하다 심심해서 사용을 해봤습니다.


아래 예제는 GPIOB 10번, GPIOB 11번 핀을 Peripheral Bitband기능을 이용해서 고속으로 제어 합니다.

실제 scope관측시나, 코드 생성시 비교해보면 당연히 기본 Peripheral lib에서 제공하는 함수 보다 월등히 빠릅니다.

scope캡쳐 해놨는데 사라지고 없네요...ㅋ


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define PERIPHERAL_BASE       0x40000000

#define PERIPHERAL_BB_BASE    0x42000000


#define GPIOB_ODR             0x40010C0C

#define GPIO_I2C_SCL_BIT      (10)

#define GPIO_I2C_SDA_BIT      (11)

 


#define  D1_MCU_SCL         *(volatile INT32U *) (PERIPHERAL_BB_BASE | ((GPIOB_ODR - PERIPHERAL_BASE) << 5) | ((GPIO_I2C_SCL_BIT) << 2)) 

#define  D0_MCU_SDA         *(volatile INT32U *) (PERIPHERAL_BB_BASE | ((GPIOB_ODR - PERIPHERAL_BASE) << 5) | ((GPIO_I2C_SDA_BIT) << 2)) 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


정의는 저정도로 하면 되고, #define문은 컴파일시에 계산이 모두되어 상수로 들어가니 연산자가 많다고 실제 코드상에서 실행 속도가 늘어나지는 않습니다.


프로그램 상에서는 아래와 같이 8051처럼 쓰시면 됩니다.


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  D0_MCU_SDA = 0;

  wait_us(1); // 

  D1_MCU_SCL = 1;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



주의 할 점은 저렇게 GPIO출력으로 쓰다 보면 무의식적으로 입력을 자연스럽게 아래처럼 받게 됩니다.

당연히 동작이 제대로 안되겠죠.

M3 Core는 입출력 레지스터가 분리되어 있어서 읽어 들일때는 또 다른 define을 정의 해야 합니다. 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if( D0_MCU_SDA == 0 ) 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



그냥 심심풀이 였습니다.



[TT] BLE nRF51822 Throughput , 최대 전송 성능

BLE  디바이스 중에 하나인 nRF51822 의 Throughput 입니다.


https://devzone.nordicsemi.com/question/3440/how-do-i-calculate-throughput-for-a-ble-link/?answer=3441#post-id-3441




스마트폰 - nRF51822 통신 기준으로 할때 

책과, 위의 게시판 결론은 


분류 A( Interval당 전송 packet 갯수)

interval 당 6packet * 20byte = 120byte 단위로 데이터 전송이 가능한 제품이 있고,

               4packet * 20byte = 80byte  단위로 데이터 전송이 가능한 제품이 있습니다.


분류 B( Interval 시간 간격 )

해당 interval 설정은 기기마다 다르다 입니다.


결론

1. iPhone5에서     interval 이 30ms /6packet                                 32Kbps(4Kbyte/s)

2. 안드로이드에서 interval 이 7.5ms/6packet 가능한 제품의 경우    128Kbps(16Kbyte/s)

3. 안드로이드에서 interval 이 7.5ms/4packet 가가능한 제품의 경우   84Kbps(10.6Kbyte)


2번은 거의 실제 115.2kbps의 uart속도보다 높게 나오지만....

AIR 성능에 따라 이상적으로 나오지는 않겠지요.


엔지니어니깐 직접 해보기 전에는 일단...참고만................


[TT] RTOS DAC Profiling ( DAC Debug )

출처 : ??

내용 : RTOS DAC Profiling 

점수 : 90점


RTOS 사용시 예상치 못한 Task Inversion 이나 

특정 Task의 과도한 점유 등을 간단하게 오실로스코프로 디버그 할 수 있는 방법 입니다.


예전에는 GPIO 하나를 할당해서 특정 Task의 실행 시간을 스코핑해서 관측 하거나,

OS_TICK의 증가 수를 보고 수행 시간을 측정 하곤 했는데요.


아래와 같이 DAC을 이용하면 참 여러 용도로 좋을 듯 합니다.

요즘 대부분 MCU들이 DAC을 내장 하고 있고, 출력 샘플링 속도도 어마어마 하게 빨라서 사용하는데 부담이 없을 것 같습니다.


조만간 실전에 도전!!


우연히 발견했는데...앞으로 계속 쓰게될것 같네요.



첨부 자료 참고 하세요!!


OSs-Micrium-Learning Centre-Verticle Market-Microchip.Solution_Guide.pdf


Thanks Kevin!!






[TN] Understanding the Terms and Definitions of LDO Voltage Regulators

출처 : TI

내용 : Understanding the Terms and Definitions of LDO Voltage Regulators

점수 : 90점


첨부 참고 하세요!!



slva079.pdf



LDO 선택시 중요 Parameter에 대한 자세한 설명입니다.

LDO 효율에 대한 관한 명확한 설명도 반갑습니다.


1 Dropout Voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Quiescent Current . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Standby Current . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

4 Efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

5 Transient Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

6 Line Regulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

7 Load Regulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

8 Power Supply Rejection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

9 Output Noise Voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

10 Instability of LDO Regulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

11 Accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

12 Power Dissipation and Junction Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

13 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12









STM32F4-Technical-Training.pdf

STM32F4 관련 자료 입니다.


PPT발표 자료라서 User 또는 Reference Manual 보는것보다 편합니다.



STM32F4-Technical-Training.pdf



이런건 왜 웹싸이트에 안올려 놓나 몰라...


FAE들만 보고..