공부방/ARM_STM32WS 이규정교수님_필기

240402_ADC_가변저항 두개_UART SMT끼리

맘스터치보단파파이스 2024. 4. 2. 18:05
펌웨어 : 기계장치 코딩 핀에 대한 기능을 제대로 정의해야한다.

ADC의 원리는 비교기이다.

ex) 0~15, >7 , >11, >9, >8

                  1     0     0     0      비트수를 결정해준다.

 

 

ADC

ADC -> 요청

ADC IT 시작 -> 인터럽트

자동 컨버전 완료 ->콜백함수 호출-> 데이터 받기

 

설정
  • Scan conversion : 쓸 때 마다 channel 찾는다. rank에 연결되어 있는 channel을 찾는다.
  • continuous conversion : 0컨버전 1컨버전 하고 나서 다 됐을 떄 scan이 있으니 2를 가야하는데 설정이 1 까지라서 continuous 에 의해 0번으로 돌아간다. 이게 켜지지 않으면 1번측정만 한다. 리셋 할 때 마다 한번씩만. 인터럽트 발생이 1번이다
  • 레지스터 : 하드웨어적 연결 (메모리는 하드웨어적 분리) OUTPUT DATA가 TR에 직접 연결.
  • GPIO는 레지스터이다. 

 

ADC1 설정중

하드웨어적으로 설정이 가능한 ARM

배열은 = 0 으로 선언 아님

% 원하는 자릿수 f

"차이" 제어의 기본

 

설정중

 

HAL_ADC_IRQhandler 함수 동작과정
void   HAL_ADC_ConvCpltCallback ( ADC_HandleTypeDef  *hadc)

  • 인터럽트를 사용하여 had_ADC_pollforconversion, hal_ADC_get_value를 대체했다. 복잡한 함수를 써야하는 상황이 변수만 들고와서 사용하는 상황으로 바뀐다. 반응속도가 많이 빨라진다. ADC 채널이 많아지면 엄청 느려진다.
  • 하드웨어를 통해 지원되는 인터럽트 사용. CPU가 한다. 
  • 심지어 CPU가 일을 안하게 하는 DMA 

DMA 장치가 ADC가 완료되어 Flag가 살아났을 때 CPU가 아니라 DMA가 직접 해결

 

링버퍼, Q 

MODE : circular = 연속적으로 사용하겠다.

DMC 사용 + 10개 평균값까지
하드코딩이지만 반응이 빨라진 avg

8bit 비트레이트 비트샘플링 115200, 9600

 

TX-> RX, RX -> TX

 

 

  • "ABC"를 받으면 내 노트북에서 "123"을 출력한다
  • uart2는 STM과 노트북간의 통신 uart6은 STM과 STM의 통신이다.
  • uart6으로 받은 정보를 uart2로 보내주면 uart2에서 "ABC"를 인식하여 "123"을 내 노트북에 출력한다.