본문 바로가기

공부/STM32F1

23.[stm32f103][hal] TFT LCD (구동칩ads7846) 터치 하기

728x90
반응형

1. STM32CubeMx 설정하기



2. 회로도 

회로도를 보면 

ADS7846을 보시면

TS_INT     ->  PE4

TS_CS      ->  PA4

TS_SCK    ->  PA5 

TS_MOSI  ->  PA6

TS_MISO  ->  PA7


에 연결 되어 있습니다.


간단히 설명 하자면

TS_INT 는 INPUT 으로 설정 되어 잇어서 터치를 하게 되면 이게  1-> 0으로 됩니다.

TS_CS 는  1으로 해주면 나는 마스터!! 내말을 들어 이런 명령어 입니다.

TS_SCK 는 클럭이겟죠~

TS_MOSI 는 Master Out Slave In 입니다.

TS_MISO 는 Master In Slave Out 입니다.

 


3. 소스 파일

소스파일.zip



4. 소스 설명

우리의 통신의 순서는 

클럭에 마춰서

TS_MOSI 에 0x00D0 을 주고 0x00을 주면 TS_MISO 에서 값을 받습니다.



이렇게 알면 되고

차근차근 설명 하겠습니다.


먼저

for(i=0;i<32;i++){   

    if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0){

노이즈로 인해서 오락가락 할때가 있는데 그걸 막기위해서

32번을 누적시키는 겁니다.

만약에 노이즈로 인한 값이면 0으로 초기화 시킵니다.

x_12bit += Read_ADS7846(0x00D0);   //x 포지션 


unsigned short Read_ADS7846(uint16_t command) /* read X, Y value from ADS7846 */

{

  unsigned short axis;


  Write_SPI1(command);

  axis = Write_SPI1(0x0000); // read data

  axis >>= 3;


  return axis;

}


unsigned short Write_SPI1(uint16_t data) /* send 16-bit to SPI1 and receive */

{

  SPI1->DR = data;

  while(!(SPI1->SR & 0x0001));


  return SPI1->DR;

}


이쪽 부분은 
데이터 시트에서 보면 DR은 SPI data register (SPI_DR) 입니다.

데이터를 주고 받는 곳입니다.


나머지는 뭐...그냥 데이터 받은거 뿌려주고 좌표로 바꿔주는 소스입니다.




5. 결과




728x90
반응형