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. 소스 파일
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. 결과
'공부 > STM32F1' 카테고리의 다른 글
25.[stm32f103][hal] ADC (1) - Polling 모드 (0) | 2017.12.19 |
---|---|
24.[stm32f103][hal] TFT LCD (구동칩ads7846) 터치 데이터 TFT 화면에 쓰기 (0) | 2017.12.08 |
22.[stm32f103][hal] TFT LCD (구동칩ssd1289) 문자 쓰기 (0) | 2017.11.30 |
20.[stm32f103][hal] TFT LCD (구동칩ssd1289) background (0) | 2017.11.29 |
19.[stm32f103][hal]USB HID 키보드 (7) | 2017.11.28 |