right_spi.c 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. /**
  2. * Разработка → STM32: SPI: LCD — Вы всё делаете не так !
  3. * https://habrahabr.ru/post/276605/
  4. */
  5. // передача данных на дисплей
  6. void SPI2_SendByte(uint8_t sendData)
  7. {
  8. while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
  9. SPI_I2S_SendData(SPI2, sendData);
  10. }
  11. // определение области для вывода
  12. void ili9341c_SetWindow(uint16_t ystart, uint16_t xstart, uint16_t yend, uint16_t xend)
  13. {
  14. . . .
  15. GPIO_ResetBits(GPIOB, GPIO_Pin_12); // DC=0;
  16. SPI2_SendByte(LCD_PAGE_ADDR);
  17. while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET); //ждем пока команда уйдет на дисплей (а не перейдет в shift reg)
  18. GPIO_SetBits(GPIOB, GPIO_Pin_12); // DC=1;
  19. SPI2_SendByte(xstart>>8); // данные
  20. SPI2_SendByte(xstart&0xFF); // передаются
  21. SPI2_SendByte(xend>>8); // в непрерывном
  22. SPI2_SendByte(xend&0xFF); // режиме без пауз !
  23. while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET); // ждем пока данные передадутся до конца
  24. . . .
  25. }