2022. 3. 22. 17:37

 FES: FlexWATCH Extended Service
 NC: Network Camera
 NIP: Network Image Provider
 NIPP: Network Image Providing Protocol
 NSS: Network Storage Server
 NVS: Network Video Server
 NVR: Network Video Recorder
 VSM: Video Server Module

Posted by +깡통+

참으로 오랜 세월 내가 운영하는 회사를 가지고 싶었습니다.

직장인이라면 누구나 꿈꿔봤을지도 모르겠습니다.

 

아니 직장인이 되기전 이미 미래에 창업을 생각하고 있었습니다.

그래서 많은 경험을 하려고 노력했고 그 밑거름으로 시작했습니다.

 

개발 상담 환영합니다.

http://www.cansys.co.kr

Posted by +깡통+

기록 차원에서 남겨둡니다.

 

STM32F103xC 를 사용했는데 PWM 시그널이 2가지가 필요했습니다.

그런데 TIM3 CH4에서 TIM8 데이터가 나옵니다.

칩 불량인가? 다른 칩에서도 같은 문제가 나오네요.

이 문제로 많은 시간을 허비하며 문제점 파악에 나섰고,

TIM 내부 블럭도와 CubeIDE 에서 실마리를 발견했습니다.

 

문제가 발생한 PWM Pin 을 살펴보는중 Remap 사용시 TIM8 CH3N 을 발견했습니다. 

 

 

 

이 N은 뭐하는 걸까?

PWM 신호를 RS485와 같이 미러신호가 필요할 경우가 있을껍니다. 아니면 똑같은 시그널을요.

어쨌든 PWM 시그널을 다른 포트로 내보낼 수 있습니다. 즉 GPIOC 를 사용하는 TIM8 에서 GPIOB 로 TIM6를 ㅁ

아무튼 코드에서 붉은색 부분이 문제였습니다.

 

  TIM_OCInitTypeDef  TIM_OCInitStructure;
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
  TIM_OCInitStructure.TIM_Pulse = 0;
  TIM_OC3Init(TIM8, &TIM_OCInitStructure);

 

정리하면 타이머 블록을 보면 신호가 분기되어 2곳으로 내보낼수 있습니다.

출력 여부를 결정하는 TIM_OutputState, TIM_OutputNState 의 값을 반드시 지정해야 합니다.

특히 구조체변수 TIM_OCInitStructure 선언시 기본 값이 셋팅되는 것이 아니므로 꼭! 설정값 여부를 지정해야 합니다.

 TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;

이렇게 해주면 TIM3의 CH4 와 TIM8의 CH3N 의 충돌이 해결됩니다.

 

굿밤~!

Posted by +깡통+